puppet chown / chmod对批处理目录下的文件

时间:2012-06-01 16:12:24

标签: puppet

在puppet中,您可以通过以下方式chown / chmod单个文件:

file {
    '/var/log/mylog/test.log':
    ensure  => 'present',
    mode    => '0644',
    owner    => 'me';
}

有两个问题:

  1. 确保=>'本'是要确保' /var/log/mylog/test.log'存在,如果它没有创造它。如果文件存在,我有什么方法可以让它做动作,如果文件不存在,不要创建/删除它,只需忽略它并继续。

  2. 假设我在/ var / log / mylog /下面有3个文件,我想在一个批处理中对它们chown / chmod,而不是在我的puppet代码中有3个文件资源部分。我可以做下面这样的事情(因为下面的代码不存在,它现在在我的梦想中^ _ ^):

    files {
        '/var/log/mylog/*.log':
        ensure  => 'present',
        mode    => '0644',
        owner    => 'me';
    }
    

1 个答案:

答案 0 :(得分:8)

  1. 如果你想指定如果文件存在则采取给定的动作,如果文件不存在等,你当前没有选择(对我的已知)而不是exec资源与{ {1}} + createsonlyif指令。 你可以使用例如(见reference doc

    unless
  2. 没有。同样,您将不得不使用 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"] } 资源。