gpt4 book ai didi

puppet chown/chmod 批量修改目录下的文件

转载 作者:行者123 更新时间:2023-12-02 06:42:56 25 4
gpt4 key购买 nike

在 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,而不是在我的 puppet 代码中包含 3 个文件资源部分。我可以做类似下面的事情吗(因为下面的代码不存在,它现在在我的梦想中^_^):

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

最佳答案

  1. 如果您想指定在文件存在、文件不存在等情况下执行给定操作,目前您别无选择(据我所知),只能使用 exec具有 creates + onlyifunless 指令的资源。您可以使用例如(参见 reference doc )

     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 资源。

关于puppet chown/chmod 批量修改目录下的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com