chef

Chef実行時に必要な環境変数の設定方法

More than 3 years have passed since last update.
execute "go get github.com/github/hub" do
  environment "GOPATH" => "/root/gocode"
end

こんな感じでこのrecipeを実行する時に必要な環境変数を設定できます。(永続的な環境変数ではありません)

一度のchef-soloの実行内でこの処理の前にbashのprofile等で環境変数を設定したりしているかもしれませんが、一度の実行中だと反映されていません。なので、そのコマンドで必要な環境変数は、上記のようにenvironment attributeで設定する必要があります。

なお、複数の環境変数を設定したい場合は以下のようにします。

execute "go get github.com/github/hub" do
  environment(
   "GOPATH" => "/root/gocode",
   "PATH" => "/usr/local/go/bin:#{ENV["PATH"]}"
  )
end

参考:

https://docs.chef.io/resource_execute.html
http://d.hatena.ne.jp/rougeref/20141217