私が持っているもの:シェフ;
必要なもの:RVMがインストールされてい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
。user node[:deploy][:user][:name]
はい、Chefではユーザーを変更する代わりにユーザーを指定できることを知っていますsu
が、何らかの理由でそれを実行rvm
すると、自分自身をインストールしようとし/root/.rvm
ます(envが正しくリセットされませんか?)。さて、私は質問したいのですが、なぜシェフはそのような非常に単純なタスクでも非常にくだらないのですか?しかし、私は間違った場所を選んだようです、それで問題は私が間違っているのか、それとも明らかな何かを見逃しているのですか?