傀儡 chown/chmod 针对目录下的批量文件

  • 本文关键字:文件 chown chmod 傀儡 puppet
  • 更新时间 :
  • 英文 :


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

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

关于这个问题的两个问题:

  1. ensure=>'present' 将确保 '/var/log/mylog/test.log' 存在,如果没有,它会创建它。如果文件存在,有什么方法可以让它执行操作,如果文件不存在,请不要费心创建/删除它,只需忽略它并继续。

  2. 假设我在/var/log/mylog/下有 3 个文件,我想批量地对它们进行 chown/chmod,而不是在我的木偶代码中有 3 个文件资源部分。我可以做下面这样的事情吗(coz,下面的代码不存在,它现在^_^在我的梦中):

    files {
        '/var/log/mylog/*.log':
        ensure  => 'present',
        mode    => '0644',
        owner    => 'me';
    }
    
  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"]    
     }
    
  2. 不。同样,您必须使用exec资源。

最新更新