msanford Asked: 2014-03-28 09:44:24 +0800 CST2014-03-28 09:44:24 +0800 CST 2014-03-28 09:44:24 +0800 CST 使用 puppet 将命令添加到“exit 0”上方的 rc.local 的正确方法? 772 一个木偶新手,我目前正在开发一个部署脚本,该脚本将在启动时启动几个 foreverjs服务rc.local。 我担心的是,在 Ubuntu中,文件底部rc.local带有一个。exit 0 我没有看到使用 stdlib 的file_line指令来确保我的行出现在退出命令上方(或者特别是其他任何地方,如果需要的话)的方法。 我可以用一个exec块和一些丑陋的 sed 来做到这一点,但是 puppet 中必须有一种更标准、更优雅的方式吗? puppet 2 个回答 Voted Best Answer Craig Watson 2014-04-11T13:48:51+08:002014-04-11T13:48:51+08:00 您可以使用PuppetLabs Concat 模块将部分动态插入到rc.local文件中,如下所示: 将文件定义为一个 concat 文件,并添加一个标题(hash-bang、“由 Puppet 管理”注释等) - 请注意以下可能不起作用,我不确定 Puppet 的换行符处理我的头顶! concat { '/etc/rc.local': ensure => present, } concat::fragment { '00_rc.local_header': target => '/etc/rc.local' content => '#!/bin/bash\n# This file is manageed by Puppet, do not modify!', order => '01' } 添加您的自定义部分,确保指定正确target且order高于标题的值: concat::fragment { '05_rc.local_custom': target => '/etc/rc.local', content => template('path/to/template.erb'), order => '05' } concat::fragment { '15_rc.local_custom_2': target => '/etc/rc.local', source => 'puppet:///modules/mymodule/myfile.txt', order => '06' } 添加exit 0页脚: concat::fragment { '99_rc.local_footer': target => '/etc/rc.local', content => 'exit 0\n', order => '99' } 等鳍! 只要您设置了正确的值并且将该文件声明为资源,您就可以concat::fragment跨多个子类(以及多个模块,尽管这确实不推荐!)使用。该参数允许您在文件中定位元素。targetconcatorder 查看模块的使用自述文件了解更多信息。 sjbotha 2016-06-17T05:21:20+08:002016-06-17T05:21:20+08:00 如果您安装了 cron 服务,则可以通过使用 @reboot 时间规范将其用于此目的。使用 puppet 更容易管理的原因是您可以在 /etc/cron.d 中创建一个单独的文件,而不是尝试编辑单个整体文件。 我测试了以下工作: file { "/etc/cron.d/at_startup_myscript": content => "@reboot root /usr/local/bin/myscript.sh \n", }
您可以使用PuppetLabs Concat 模块将部分动态插入到
rc.local
文件中,如下所示:将文件定义为一个 concat 文件,并添加一个标题(hash-bang、“由 Puppet 管理”注释等) - 请注意以下可能不起作用,我不确定 Puppet 的换行符处理我的头顶!
添加您的自定义部分,确保指定正确
target
且order
高于标题的值:添加
exit 0
页脚:等鳍!
只要您设置了正确的值并且将该文件声明为资源,您就可以
concat::fragment
跨多个子类(以及多个模块,尽管这确实不推荐!)使用。该参数允许您在文件中定位元素。target
concat
order
查看模块的使用自述文件了解更多信息。
如果您安装了 cron 服务,则可以通过使用 @reboot 时间规范将其用于此目的。使用 puppet 更容易管理的原因是您可以在 /etc/cron.d 中创建一个单独的文件,而不是尝试编辑单个整体文件。
我测试了以下工作: