我有什么:厨师;
我需要什么:为node[:deploy][:user][:name]
. 我需要用户范围的安装,而不是系统范围的。
我最近尝试的:
script 'install_rvm' do
user = node[:deploy][:user][:name]
interpreter '/bin/bash'
code "su -l #{user} -c '\curl https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable'"
not_if { ::File.exists? "/home/#{user}/.rvm" }
end
su -l <username> -c '\curl <long_url> | bash -s stable'
当我在测试服务器上手动运行时,它肯定可以完美运行。我希望 Chef 运行相同的代码,并且在日志中看起来确实如此,但是下一个execute
资源失败了,因为实际上不/home/<username>/.rvm
存在。是的,我知道在 Chef 中我可以将用户指定为user node[:deploy][:user][:name]
而不是更改用户,su
但由于某种原因,如果我这样做rvm
会尝试将自身安装在/root/.rvm
(env 未正确重置?)。好吧,我想问一下,为什么即使对于如此简单的任务,厨师也如此糟糕,但看起来我选择了错误的地方,所以问题是我做错了什么还是我错过了一些明显的事情?