在puppet中,你可以通过执行以下操作来chown/chmod单个文件:
file {
'/var/log/mylog/test.log':
ensure => 'present',
mode => '0644',
owner => 'me';
}
关于这个问题的两个问题:
ensure=>'present' 将确保 '/var/log/mylog/test.log' 存在,如果没有,它会创建它。如果文件存在,有什么方法可以让它执行操作,如果文件不存在,请不要费心创建/删除它,只需忽略它并继续。
假设我在/var/log/mylog/下有 3 个文件,我想批量地对它们进行 chown/chmod,而不是在我的木偶代码中有 3 个文件资源部分。我可以做下面这样的事情吗(coz,下面的代码不存在,它现在^_^在我的梦中):
files { '/var/log/mylog/*.log': ensure => 'present', mode => '0644', owner => 'me'; }
-
如果您想指定在文件存在时执行给定操作,如果文件不存在等,您目前别无选择(据我所知),只能将
exec
资源与creates
+onlyif
或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"] }
-
不。同样,您必须使用
exec
资源。