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

She*_*jie 4 puppet

在puppet中,您可以通过执行以下操作来chown/chmod单个文件:

file {
    '/var/log/mylog/test.log':
    ensure  => 'present',
    mode    => '0644',
    owner    => 'me';
}
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. ensure =>'present'将确保'/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';
    }
    
    Run Code Online (Sandbox Code Playgroud)

Seb*_*tte 8

  1. 如果你想指定如果文件存在则采取给定的动作,如果文件不存在等,你当前没有选择(对我的知识)而不是使用exec带有creates+ onlyifunless指令的资源.你可以使用例如(参见参考文档)

     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"]    
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 不.再次,您将不得不使用exec资源.