![使用puppet管理不同子目录下的一组文件](https://linux22.com/image/629150/%E4%BD%BF%E7%94%A8puppet%E7%AE%A1%E7%90%86%E4%B8%8D%E5%90%8C%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E4%B8%80%E7%BB%84%E6%96%87%E4%BB%B6.png)
因此我需要为 Windows 上的某些用户生成文件树。
我需要提供一个用户列表,最好是来自外部事实,并让 puppet 确保一组文件位于一个目录中(但允许不同的非托管文件),并且该目录命名为:C:\VaultWorkspace\username\Vault
因此,我将拥有与指定用户数量相同的用户名目录。我想要用户名目录和用户名用户拥有的文件...我最好的猜测是以下,但它不起作用。
我见过:是否可以使用 Puppet 来确保目录中存在多个文件而无需定义所有文件?其中看起来像“当然,如果到“/my/dir”的路径很长或者文件很多,就会变得有点笨拙,所以在这种情况下,你最好创建一个包含目录路径的定义,然后将文件名数组传递给它。”这是我想要做的,但是那篇文章并没有解释这个定义......
class inventor {
case $kernel {
'linux': {
}
'windows': {
@file {'VaultWorkspace':
path => "C:/VaultWorkspace/${user}/Vault",
source => "puppet:///modules/inventor/Vault",
recurse => true,
owner => "${user}",
group => 'Users',
mode => 0755,
ensure => present,
}
realize File["$inventorusers"]
}
}
}
$inventorusers = ['username1','username2','usernamen']
答案1
定义类型可以完成这项工作:
define userworkspace {
file { "VaultWorkspace-${title}":
path => "C:/VaultWorkspace/${title}/Vault",
source => "puppet:///modules/inventor/Vault",
recurse => true,
owner => $title,
group => 'Users',
mode => 0755,
ensure => present,
}
}
$inventorusers = ['username1','username2','usernamen']
userworkspace { $inventorusers: }