在puppet中,您可以通过以下方式chown / chmod单个文件:
file {
'/var/log/mylog/test.log':
ensure => 'present',
mode => '0644',
owner => 'me';
}
有两个问题:
确保=>'本'是要确保' /var/log/mylog/test.log'存在,如果它没有创造它。如果文件存在,我有什么方法可以让它做动作,如果文件不存在,不要创建/删除它,只需忽略它并继续。
假设我在/ var / log / mylog /下面有3个文件,我想在一个批处理中对它们chown / chmod,而不是在我的puppet代码中有3个文件资源部分。我可以做下面这样的事情(因为下面的代码不存在,它现在在我的梦想中^ _ ^):
files {
'/var/log/mylog/*.log':
ensure => 'present',
mode => '0644',
owner => 'me';
}
答案 0 :(得分:8)
如果你想指定如果文件存在则采取给定的动作,如果文件不存在等,你当前没有选择(对我的已知)而不是exec
资源与{ {1}} + creates
或onlyif
指令。
你可以使用例如(见reference doc)
unless
没有。同样,您将不得不使用 exec { "touch /var/log/mylog/test.log":
path => "/usr/bin:/usr/sbin:/bin",
user => "${yourmodule::params::user}",
group => "${yourmodule::params::group}",
creates => "/var/log/mylog/test.log",
unless => "test -f /var/log/mylog/test.log"
}
file { '/var/log/mylog/test.log':
ensure => 'present',
mode => "${${yourmodule::params::mode}",
owner => "${yourmodule::params::user}",
group => "${yourmodule::params::group}",
require => Exec["touch /var/log/mylog/test.log"]
}
资源。