如何在 Puppet 中排除命名管道和套接字?

如何在 Puppet 中排除命名管道和套接字?

我们有一个应用程序可以动态生成命名管道(类型 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 {} \;"
} 

相关内容