JDKのインストール後、特定のユーザー.bashrc JAVA_HOME環境変数を更新しようとしています。私はこの奇妙なエラーを理解していない。ここに問題のコードブロックがあります。シェフが特定のユーザーの.bashrcを更新する
node['etc']['passwd'].each do |user, data|
only_if {data['uid'] > 9000}
jdk_dir_array = Dir.entries('/usr/java/').select {|entry| File.directory? File.join('/usr/java/',entry) and !(entry =='.' || entry == '..') }
jdk_dir_name = jdk_dir_array.shift
file = Chef::Util::FileEdit.new("#{data['dir']}/.bashrc")
file.search_file_replace(/JAVA_HOME=.*/,"JAVA_HOME=/usr/java/#{jdk_dir_name}")
file.write_file
end
私は取得していますエラーは、このです:
NoMethodError
-------------
No resource or method named `only_if' for `Chef::Recipe "install_jdk"'
それは私がnode.eachの内側にそれを宣言するときにレシピの方法である「only_if」と考えて、なぜ私は理解していませんブロック。
これをruby_blockに入れて、単一のユーザのホームディレクトリへのパスをハードコードすると、コードは期待通りに機能することを指摘しておきます。私は複数のユーザーを更新しようとしています。それが私が困っている場所です。
おかげさまで、テンプレートが適切でないようにJDKを更新した後、このレシピが呼び出されます。私は大いに助けとリンクに感謝します。 – user3481957
標準のシェルinitテンプレートを用意しておき、 '〜/ .env.d /'のようなものを作成して、そのすべてがそのメインテンプレートのソースとなる余分なファイルを削除したいと思うでしょう。 – coderanger