linux - Puppet - 如何清除目录

标签 linux puppet

这里有点像 Puppet 新手。我试图以递归方式清除/var/www 下的所有文件和目录,除了保留一个文件 (/var/www/html/appicon.ico)。这是我的代码:

  file {'/var/www':
    ensure    => directory,
    recurse   => true,
    purge     => true,
    force     => true,
    require   => Package['httpd'],
    subscribe => Package['httpd']
  } ->
  file {'/var/www/html':
    ensure    => directory,
    owner     => 'root',
    group     => 'root',
    mode      => '0755'
  } ->
  file {'/var/www/html/appicon.ico':
    ensure    => file,
    owner     => 'root',
    group     => 'root',
    mode      => '0644',
    content   => ''
  }

该代码似乎确实清除了所有文件和目录,但/var/www/html 下的其他文件除外。有什么想法我在这里做错了什么或如何正确完成吗?

最佳答案

您还需要在 html 目录上设置清除,即:

file {'/var/www':
  ensure    => directory,
  recurse   => true,
  purge     => true,
  force     => true,
  require   => Package['httpd'],
  subscribe => Package['httpd'],
} ->
file {'/var/www/html':
  ensure => directory,
  recurse => true,    # note here
  purge   => true,    #
  owner   => 'root', 
  group   => 'root',
  mode   => '0755'
} ->
file {'/var/www/html/appicon.ico':
  ensure  => file,
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  content => ''
}

在 Puppet list 中明确包含文件/目录“保护”它不被其父目录上设置的 purge => true, recurse => true 清除。

关于linux - Puppet - 如何清除目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52502910/

相关文章:

linux - Docker 客户端卡住

如果我重新启动/etc/init.d 脚本,Custom System() 会挂起吗?

linux - 如何使用 docker Composer 更改 Dockerfile 的上下文?

linux - jq select 动态项,其中 key 是环境变量而不是 bash 变量

ruby - 仅当在模板中定义变量时 Puppet 3 循环执行

ruby - puppet/ ruby : How to use a ruby variable in a bash line?

linux - 如何使用 cut 和 grep 在 unix 中打印一系列字符?

postgresql - 如何使用 puppet 定义具有 SELECT 权限的用户?

puppet - 错误 : Could not run Puppet configuration client: execution expired

ruby - 如何测试将 puppet 模板应用于给定测试参数的结果