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.

Reply via email to