你如何使用puppet来更改没有一致名称的文件的权限?
我的任务是管理一个日期附加在其末尾的二进制文件,如下所示:
lrwxrwxrwx 1 root root 18 Oct 25 18:46 apbridge -> ./apbridge20131025
lrwxrwxrwx 1 root root 18 Oct 25 18:46 apbridge1025 -> ./apbridge20131025
-rwxr-xr-x 1 root root 2914 Oct 25 18:46 apbridge20131025
apbridge20131025拥有错误的权限。通常以下情况会改变它:
file {'/root/alpsSim/alps_simulator_r7537/tester/apbridge20131025':
owner => 'root',
group => 'root',
ensure => file,
mode => '0755',
}
然而,因为我无法预测apbridge会以什么数字结束,所以这很可能会破裂。
我无法控制apbridgexxxxx的名称,因为它是由第三方脚本安装的。末尾的数字代表它安装的那一天。
有没有办法在puppet文件资源声明中使用通配符?
答案 0 :(得分:3)
我建议你使用exec:
exec { 'apbridge':
command => 'find /root/alpsSim/alps_simulator_r7537/tester/ -maxdepth 1 -type f -iname "apbridge*" -exec chmod 755 {} \;',
path => '/bin:/sbin:/usr/bin:/usr/sbin',
}
答案 1 :(得分:1)
通常情况下,我建议不要在Puppet中使用exec
,但在这种情况下,chmod
是幂等的 - 但是运行它会获得相同的结果。还有一个小小的好处,Puppet不必为每个尝试更改权限的文件计算md5哈希值。
也就是说,确保权限的一种更优雅的方法是将它们设置在包含文件的目录上 - 假设只有apbridge*
文件存在。
file {'/root/alpsSim/alps_simulator_r7537/tester':
owner => 'root',
group => 'root',
ensure => directory,
recurse => true,
mode => '0755',
}