Ruby と Chef のハッカーに質問があります。
私はChefの知識が非常に限られており、Rubyプログラミング言語についてはさらに少ないですが、「augeas」に似たものをChef(chef-solo)に実装する必要があります(Puppetで動作しますが、ここではChefのソリューションが必要です)。
以下のサンプルコードを入手しましたが、機能していません。現在、何が問題なのかを把握しようと数日間取り組んでいます。
基本的に、テキスト ファイル内の特定の文字列を選択し、これらの値を変更できる必要があります。sed を使用することもできますが、Chef の ruby_block を使用して、よりエレガントな方法で実行できるかもしれません。
以下のコードで何が間違っている可能性があるか教えてください。/etc/hosts が新しい値で更新されないのはなぜですか?
シェフソロを再実行すると、常に次のエラーが表示されます。
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