Peter Bukowinski [11.10.2013 15:57]: > On Oct 11, 2013, at 9:06 AM, Werner Flamme <[email protected]> wrote: > >> Peter Bukowinski [11.10.2013 14:39]: >>> On Oct 11, 2013, at 5:48 AM, Jakub Bittner <[email protected]> wrote: >>> >>>> Hello, >>>> >>>> I created puppet class and I want the file operation to be executed on all >>>> servers but not on server with hostname "'server1.domain.com". I tried >>>> this class, but it does not work. Is there any other way? Thanks >>>> >>>> >>>> class test { >>>> if $hostname != 'server1.domain.com' { >>>> file { "/etc/ntp.conf": >>>> owner => root, >>>> group => root, >>>> mode => 644, >>>> source => "puppet:///files/server/ntp.conf", >>>> } >>>> } >>>> } >>>> >>> >>> You have a couple errors in your if statement. For comparing a literal >>> string, you need to use double-equals in your test: >>> >>> if $hostname == 'server1.domain.com' { ... } >>> >>> For a regex match, you'd use the equal-tilde: >>> >>> if $hostname =~ /^server/ { ... } >>> >>> To negate a match, you put the not (!) in front of the entire comparison, >>> e.g. >>> >>> if ! $hostname == 'server1.domain.com' { ... } >>> >>> I like to add parentheses around my comparisons for visual clarity: >>> >>> if ( $hostname =~ /^server/ ) and ! ( $virtual == 'vmware' ) { ... } >>> >> >> I do not see "a couple of errors". But I'm a novice, so you can enlarge >> my knowledge easily ;-) >> >> You show only one error by mentioning that the if statement may not have >> an inequality sign: "To negate a match, you put the not (!) in front of >> the entire comparison". Where can I find this in the puppet language >> description? >> >> First, I looked at >> <http://docs.puppetlabs.com/puppet/3/reference/lang_conditional.html#if-statements>. >> Under the caption "Conditions" I find - among others - "Expressions". So >> I follow that link, and on the linked page under >> <http://docs.puppetlabs.com/puppet/3/reference/lang_expressions.html#non-equality> >> I find the != operator. I do not find any hint that one has to prepend >> the nagation to the whole statement. In the contrary, in the "Syntax" >> section I see a sample for a comparison with an inequality sign: >> "($operatingsystem != 'Solaris')". >> >> Where do I find that != is not allowed in this case? >> >> BTW, I'd never write a class like that, I'd rather use different node >> declarations... ;-) >> >> Regards, >> Werner > > > I've been using the convention where the not (!) is separate from the equals > sign and it works well for me, so I suspect your only error was using a > single equal sign rather than a the required double. >
I'm not Jakub (the OP), it is not my problem. I'm only the one who wanted to know where the "couple of errors" are. Regards, Werner -- Werner Flamme, Abt. WKDV Helmholtz-Zentrum für Umweltforschung GmbH - UFZ Helmholtz Centre for Environmental Research - UFZ Permoserstr. 15 - 04318 Leipzig / Germany Tel./phone: +49 341 235-1921 - Fax +49 341 235-451921 Information nach §§ 37a HGB, 35a GmbHG: Sitz der Gesellschaft: Leipzig Registergericht: Amtsgericht Leipzig, Handelsregister Nr. B 4703 Vorsitzender des Aufsichtsrats: MinDirig Wilfried Kraus Wissenschaftlicher Geschäftsführer: Prof. Dr. Georg Teutsch (Scientific Managing Director) Administrative Geschäftsführerin: Dr. Heike Graßmann (Administrative Managing Director) -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/puppet-users. For more options, visit https://groups.google.com/groups/opt_out.
