Chefでnot_if条件が実行されない

投稿者: Anonymous

Chefでrubyの環境を構築するレシピを作成しておりrbenvとrubyのインストールまではできましたがgemのインストールがうまくいきません。
まだbundlerをインストールしていないのにも関わらず* bash[install bundler] action run (skipped due to not_if)と表示されてしまいます。

下記にレシピの当該箇所を抜粋します。

bash 'install bundler' do
  user 'test_user'
  group 'test_user'
  cwd '/home/test_user'
  environment 'HOME' => '/home/test_user'
  code <<-EOC
    source ~/.bash_profile
    gem install bundler
  EOC
  not_if 'gem list | grep bundler', :environment => { 'HOME' => '/home/test_user'}
end

解決

codeでは .bash_profile を読み込んでますが not_if のところでは読み込んでいないので それが影響している可能性があります。

次のように明示的に .bash_profile を読み込んでください。

bash 'install bundler' do
  user 'test_user'
  group 'test_user'
  cwd '/home/test_user'
  environment 'HOME' => '/home/test_user'
  code <<-EOC
    source ~/.bash_profile
    gem install bundler
  EOC
  not_if 'source ~/.bash_profile; gem list | grep bundler', :environment => { 'HOME' => '/home/test_user'}
end
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *