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.

Reply via email to