According to this issue on Puppet labs, there's simply no way to use facts in an Puppet Exec clause for the purpose of onlyif or unless, as such:
exec {'some_exec':
command => '/usr/bin/cmd',
# this `onlyif` will cause your manifest to fail
onlyif => $::facts[some_fact] == true,
}
However I found a simple workaround for this, simply set a var with your facts to either 'true' or 'false' (string values) and use those in your `onlyif` block
if $::facts[some_fact] == true {
$exec_true = 'true'
}
else {$exec_true = 'false'}
then use that in your exec block:
exec {'some_exec':
command => '/usr/bin/cmd',
# literally calls '/usr/bin/{true,false}'
onlyif => "/usr/bin/${exec_true},
}
No comments:
Post a Comment