【发布时间】:2013-05-28 14:01:40
【问题描述】:
我正在尝试创建一个 Chef 配方以将多行 (20-30) 附加到特定的配置文件。
我知道推荐的模式是 change entire config files 而不仅仅是附加到文件,但出于多种原因我不喜欢这种方法。
到目前为止,我找到的唯一解决方案是使用cookbook_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 模式。
【问题讨论】:
标签: linux chef-infra chef-recipe