【发布时间】:2013-11-26 07:19:27
【问题描述】:
我有一个问题要问 Ruby 和 Chef 黑客。
我对 Chef 的了解非常有限,对 Ruby 编程语言的了解更少,但是,我需要在 Chef (chef-solo) 上实现类似于“augeas”的东西(它适用于 Puppet,但在这里我需要一个解决方案厨师)。
我得到了下面的示例代码,但它不起作用,我现在花了几天时间试图找出问题所在。
基本上我需要能够在文本文件中选择特定的字符串并修改这些值。我可以使用 sed,但也许我可以使用 Chef 的 ruby_block 以更优雅的方式完成。
请让我知道下面的代码可能有什么问题。为什么我的 /etc/hosts 没有更新为新值?
当我重新运行 chef-solo 时,总是出现以下错误:
NoMethodError
-------------
undefined method `chef' for Chef::Resource::RubyBlock
感谢您的帮助。
遵循我的 default.rb 文件:
ruby_block "edit etc hosts" do
block do
rc = Chef::Util::FileEdit.new("/etc/hosts")
rc.search_file_replace_line(
/^127\.0\.0\.1 localhost$/,
"127.0.0.1 #{new_fqdn} #{new_hostname} localhost"
)
rc.write_file
end
end
【问题讨论】:
-
您找到解决方案了吗?请不要忘记将答案标记为正确! :)
标签: ruby chef-infra