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