Предоставление другого пути установки для Java в рецепте шеф-повара
Я пытаюсь установить Java с помощью приведенного ниже кода, но по умолчанию он устанавливается в каталог /usr/java/. Я хочу, чтобы он был установлен в отдельном каталоге, например /u01/app.
Рецепт
# Remove old environment then notify new environment to be created
ruby_block "delete_environement" do
block do
editBashrc = Chef::Util::FileEdit.new("/home/oracle/.bash_profile")
editBashrc.search_file_delete_line(/^.*#{node['java']['home']} environment settings.*$/)
editBashrc.search_file_delete_line(/^.*#Auto-generated by Chef Cookbook sun_java.*$/)
editBashrc.search_file_delete_line(/^.*export JAVA_HOME=.*$/)
editBashrc.write_file
end
action :create
end
remote_file "#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm" do
source "http://#######/java/jdk-7u51-linux-x64.rpm"
mode "0755"
end
rpm_package "javaRPM" do
source :"#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm"
only_if {::File.exists?("#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm")}
owner :oracle
action :install
end
# update oracle bash profile ~/.bash_profile
execute "create_environment" do
user "oracle"
command "echo -e '#{node['java']['home']} environment settings\n#Auto-generated by Chef Cookbook oracle_java\nexport JAVA_HOME=#{node['java']['home']}' >> ~/.bash_profile"
command "echo -e '#{node['java']['home']} environment settings\n#Auto-generated by Chef Cookbook oracle_java\nexport PATH=$PATH:#{node['java']['home']}/bin' >> ~/.bash_profile"
command "source ~/.bash_profile"
end
file "javaRPM-cleanup" do
path "#{Chef::Config[:file_cache_path]}/jdk-7u51-linux-x64.rpm"
action :delete
end
1 ответ
Эта проблема - ваше понимание execute
ресурс. Как я объяснил в этом посте:
Обратите внимание, что Chef собирается использовать только последнее значение для атрибута команды. Это потому, что Chef выполняется в два этапа - компиляция и выполнение.
Итак, только последняя команда в этой последовательности (source ~/.bash_profile
) будет выполнено.