Puppet:更新文件(或包)时运行shell命令
每当tzinfo包(在Ubuntu Server上)发生变化时,我想运行
mysql_tzinfo_to_sql.我认为Puppet可以解决这个问题.
我认为Puppet会对包版本的更改做出反应,或者如果没有,那么就会改变包中包含的文件的时间戳. 我能看到这样做的唯一方法是拥有一个没有直接操作的资源,并根据它拥有一个exec. 我的问题是: >是否可以定义文件 总而言之,似乎势不可挡. 关注:很棒的答案!为了完整性(以及记录),我应该注意以下几点: >感兴趣的完整shell命令是 此外,詹姆斯·特恩布尔wrote所有关于审计时的介绍. Metaparameter Reference包含审计参数工作的简短描述.
使用audit属性跟踪文件内容或包版本号,并通过订阅包资源来触发更改.有一些问题,这不适用于–noop,因为state.yaml文件将在–noop模式下更新文件md5 checksum / package版本.我不确定这是否是一个悬而未决的bug,因为我现在无法追踪它.
file { '/etc/tzinfo': audit => content,} exec { '/usr/bin/mysql_tzinfo_to_sql': subscribe => File['/etc/tzinfo'],} 一种更可靠的方法是将文件复制到别处并使用它来触发更新(位置并不重要,我们只是将原始tzinfo作为源跟踪). file { '/etc/puppet/stage/tzinfo': source => '/etc/tzinfo',} 第二种方法当然不适用于包,但是你可以避免使用–noop和state.yaml问题. 关于第三个问题,是的,您可以使用管道和重定向(使用标题并将命令放在命令属性中): exec { '/bin/echo foo | grep foo > /tmp/foo': } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |