Search code examples
puppet

puppet in not in code


I have this code...

if $hostname in $var_slave {
    file { 
        "/var/spool/cron/mysql":  
        ensure => present,
        owner => $mysqlUser,
        group => $mysqlGroup,
        mode => "0600",
        source => 'puppet:///modules/eikonappdbcron/mysql-slave',
    }
} 

I want a way of checking if a value is not in a file.

I tried "if $hostname not in $var_master" but this doesn't work. After doing some research I believe I need to use an "!". I can't get the syntax correct.


Solution

  • Puppet does not have a single, combined "not in" operator. Instead, it has the in operator, and it has a general-purpose boolean negation operator (!). You can use these together to write a compound expression that evaluates the condition you want.

    If you already realized that, then perhaps you ran into a problem with operator precedence. The negation operator has the higher precedence than does in. Indeed, ! has the highest precedence of any Puppet operator, so if its operand is intended to be a binary expression then you must enclose the operand in parentheses.

    Thus, the negation of the boolean expression

    $hostname in $var_master
    

    is

    ! ($hostname in $var_master)