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 -- -- 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.
