Я хотел бы использовать другой файл squid.conf в зависимости от условия. Что-то вроде:
file { '/etc/squid/squid.conf':
ensure => file,
if condition = true then
source => 'puppet:///modules/1/squid.conf_1',
else
source => 'puppet:///modules/1/squid.conf_2',
fi
}
Есть ли способ сделать это?
Ты нуждаешься в селектор, что позволит вам иметь условное выражение внутри ресурса - или установить переменную вне его.
Вот селектор:
file { '/etc/squid/squid.conf':
ensure => file,
source => $fact ? {
"foo" => 'puppet:///modules/1/squid.conf_1',
"bar" => 'puppet:///modules/1/squid.conf_2',
default => 'puppet:///modules/1/squid.conf_default',
},
}
Или установите переменную и используйте ее вместо:
if $fact == "foo" {
$squidconf = 'puppet:///modules/1/squid.conf_1'
} else {
$squidconf = 'puppet:///modules/1/squid.conf_2'
}
file { '/etc/squid/squid.conf':
ensure => file,
source => $squidconf,
}
Конечно, есть и другие варианты, взгляните на языковое руководство, указанное выше, и Изучение Puppet учебник раздел о переменных.