我剛剛安裝了使用廚師食譜的java,併爲所有用戶更新了PATH環境變量(將新文件添加到/etc/profile.d/)。廚師食譜 - 重新加載路徑
是否可以告訴廚師重新加載PATH變量?
當我做這樣的事情:
execute "java_check" do
command "java -version"
end
是說,Java原本不被發現。
當我註銷時,它可以正常工作,再次登錄,然後運行廚師食譜。
我剛剛安裝了使用廚師食譜的java,併爲所有用戶更新了PATH環境變量(將新文件添加到/etc/profile.d/)。廚師食譜 - 重新加載路徑
是否可以告訴廚師重新加載PATH變量?
當我做這樣的事情:
execute "java_check" do
command "java -version"
end
是說,Java原本不被發現。
當我註銷時,它可以正常工作,再次登錄,然後運行廚師食譜。
我不是100%肯定,你可以更新爲今後的廚師運行PATH變量,但你可以使用environment
屬性手動設置它在execute
節內。這也可以在其他資源上使用。請參閱:http://docs.opscode.com/chef/resources.html#execute
從廚師文檔,
environment
A hash of environment variables: {"ENV_VARIABLE"=>"VALUE"}.
(These environment variables must exist for a command to execute successfully.)
Default value: nil.
Run a command which requires an environment variable
execute "slapadd" do
command "slapadd < /tmp/something.ldif"
creates "/var/lib/slapd/uid.bdb"
action :run
environment ({'HOME' => '/home/myhome'})
end
execute "run_updated_bash" do
command "bash /etc/profile.d/myscript.sh"
end
你有沒有試過類似的東西?它可以運行你把你的文件/etc/profile.d/在後
它沒有爲我工作。腳本已成功執行,但這些ENV變量僅在此單個bash上下文中導出。腳本完成後,它們會丟失。 – Konrad
我發現這是不可能的更新ENV變量pemanently(可用廚師結束後),但它可以更新當前大廚運行的未來命令的變量。
ruby_block "set-env-" do
block { ENV[variable_name] = variable_value }
not_if { ENV[variable_name] == variable_value }
end
對於可能的情況,更新ENV變量以用於將來的廚師運行,但是可以更新當前廚師運行的未來命令的變量。在下一篇文章中介紹。 – Konrad