centos – 使用Puppet管理一个文本块

我正在尝试使用Puppet将一块文本插入到CentOS主机上的CA证书文件中. I asked about this before,and it seems CentOS is sorely lacking in certificate management functions...

我需要做的是在我的/etc/ssl/certs/ca-bundle.crt文件获取代表我的CA证书(通过openssl的info命令传递任何愚蠢的理由)的相当大的文本块,并确保它始终存在,甚至如果主机稍后从repo更新其CA文件.

我不想用Puppet完整地管理ca-bundle文件.这已由服务器指向的yum存储库处理.

难度:Puppet没有正式的方法来管理文本块,只使用file_line资源来管理行.不过,我试图变得聪明,以为你可以使用换行的“换行”文本来管理它.

好吧,有点.它起作用,因为文本最终在文件中,但问题是它在每次木偶运行后不断重新添加,就像代码无法判断它已经存在一样.

对于细节,文本块看起来很像这样(截断原因显而易见:3)

$cacert = "Certificate:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            10:d8:83:91:-redacted-"

我的Puppet模块中的行如下所示:

class em_cacerts::centos inherits em_cacerts{
    file_line { 'ca-certificate':
            path => '/etc/ssl/certs/ca-bundle.crt',line => $cacert,#match => "(see below)",ensure => present,}

我试着匹配线各种恶作剧(包括使用inline_template设置正则表达式匹配到$CACERT变量,它在IRB完美的作品的全部内容,但不是在木偶),企图得到它认识到文本块已经存在,但它每次都会不断重新添加,并且只是叠加在自身之上.

我可能在这里咆哮错误的树……但无论如何,这是问题的一部分.

>有没有更好的方法来实现这一目标?
>如果没有,我如何让Puppet意识到文本块已经存在?

谢谢!

我最终用exec行解决了这个问题:
class em_cacerts::centos inherits em_cacerts{
        exec { 'cent-ca-certificate':
                command => "/bin/echo '$centcacert' >> '$cabundlepath'",onlyif => "test ! `grep (redacted CA name) $cabundlepath`",provider => 'shell',}
}

是的,它正在使用exec,这是官方气馁,但这可靠地工作,并使用任何CentOS盒将具有的绝对基本的东西.

感谢大家!

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native