我正在尝试使用安装javachef-solo
。问题是设置JAVA_HOME
and PATH
变量在/etc/profile
文件。我尝试使用'file'
厨师提供的资源。这是我的一些代码:
java_home = "export JAVA_HOME=/usr/lib/java/jdk1.7.0_05"
path = "export PATH=$PATH:/usr/lib/java/jdk1.7.0_05/bin"
execute "make_dir" do
cwd "/usr/lib/"
user "root"
command "mkdir java"
end
execute "copy" do
cwd "/usr/lib/java"
user "root"
command "cp -r /home/user/Downloads/jdk1* /usr/lib/java"
end
file "/etc/profile" do
owner "root"
group "root"
action :touch
content JAVA_HOME
content PATH
end
但问题是content
命令覆盖文件的所有内容,有没有办法在使用 Chef-solo 资源时更新文件。谢谢!
UPDATE:我找到了一些代码chef-recipe
,但我不确定它到底是做什么的,代码是..
ruby_block "set-env-java-home" do
block do
ENV["JAVA_HOME"] = java_home
end
end
它是仅为该实例设置 JAVA_HOME 变量还是永久设置?有人可以帮忙吗?
Use Chef::Util::File编辑 http://rubydoc.info/gems/chef/11.2.0/Chef/Util/FileEdit。下面是我如何修改的示例.bashrc
。这里的想法是我只是添加:
# Include user specific settings
if [ -f ~/.bashrc_user ]; then . ~/.bashrc_user; fi
到默认结束.bashrc
所有其他修改都发生在.bashrc_user
这是我食谱的一部分。
cookbook_file "#{ENV['HOME']}/.bashrc_user" do
user "user"
group "user"
mode 00644
end
ruby_block "include-bashrc-user" do
block do
file = Chef::Util::FileEdit.new("#{ENV['HOME']}/.bashrc")
file.insert_line_if_no_match(
"# Include user specific settings",
"\n# Include user specific settings\nif [ -f ~/.bashrc_user ]; then . ~/.bashrc_user; fi"
)
file.write_file
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)