我们有一个应用程序可以动态生成命名管道(类型 p)。我们想用 Puppet 管理生成管道的目录中的其他文件。有没有一种简单的方法可以告诉 puppet 跳过该类型的文件。我可以忽略几个文件,如下所示:
file {'/var/opt/OV/share/tmp':
ensure => directory,
recurse => true, # enable recursive directory management
owner => user,
group => group,
mode => 2775,
ignore => 'ovcd.*',
}
但正如我所说,我无法预先确定管道的命名方式。我真的应该喜欢 ignore => Type p 或类似的东西。这可以在 Puppet 中标准地完成吗?
我最终得到:
exec { "set_perms_tmp":
command => '/usr/bin/find /var/opt/OV/tmp ! \( -type s -o -type p \) -exec chmod 2775 {} \; -exec chown -R bin:bin /var/opt/OV/tmp/* {} \;'
}
Sockets 和 Puppet 也没有什么乐趣。
答案1
当某些内容未内置到文件中时,我通常只是求助于 puppetexec
声明。通过使用 find 执行您所说的“管理文件”的任何命令,您应该能够实现您的目标。
查找可以排除命名管道:
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
....
因此类似于:
exec { "set_perms":
command => "/usr/bin/find /var/opt/OV/share/tmp ! -type p -exec chmod 2775 {} \;"
}