我正在尝试创建一个厨师食谱以将多行(20-30)附加到特定的配置文件中。
我知道推荐的模式是更改整个配置文件,而不仅仅是附加到文件,但出于多种原因我不喜欢这种方法。
到目前为止,我发现的唯一解决方案是使用 acookbook_file
然后使用 bash 资源来执行以下操作:
cat lines_to_append >> /path/configfile
显然这不能正常工作,因为它会一遍又一遍地附加文件,每次你运行 chef-client。我必须先创建一个小型 bash 脚本来检查特定字符串,如果未找到,则附加到文件中。
但这似乎违背了使用 Chef 的目的。一定会有更好的办法。
一个有希望的解决方案是来自 OpsCode 社区的line cookbook 。它旨在解决这个确切的问题。不幸的是,功能不完整,有缺陷,而且代码只是一个快速破解。远非一个可靠的解决方案。
我评估的另一个选项是augeas。看起来非常强大,但它会为系统添加另一层抽象。就我而言,矫枉过正。
鉴于这是任何系统管理员最明显的任务之一,是否有任何我没有看到的简单而漂亮的 Chef 解决方案?
编辑:这是我目前解决的方法:
cookbook_file "/tmp/parms_to_append.conf" do
source "parms_to_append.conf"
end
bash "append_to_config" do
user "root"
code <<-EOF
cat /tmp/parms_to_append.conf >> /etc/config
rm /tmp/parms_to_append.conf
EOF
not_if "grep -q MY_IDENTIFIER /etc/config"
end
它有效,但不确定这是推荐的 Chef 模式。