Puppet - 如何清除目录

Puppet - How to purge a directory

有点像 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 清单中明确包含一个 file/directory "protects" 它不会被其父目录中设置的 purge => true, recurse => true 清除。