Chef の execute リソースでは command “source /path/to/file” がエラーになる

スポンサーリンク

昨日の Chef CookbookをServerspecテスト駆動で作成(Elasticsearchインストール) | EasyRamble の作業中に一箇所だけはまったエラー。CLASSPATH 環境変数を設定して、それを即座に反映させるために “source /path/to/file” を行おうとした処理の部分です。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

execute リソースでは command “source /path/to/file” と書けない

最初 execute リソース中で command “source /path/to/file” と書いていたのですがエラーになりました。まさか、これが原因でエラーになるとは考えてなかったので、少々はまってしまった。

何回繰り返してもエラー。

“source /path/to/file” を実行するには bash, ruby, perl など他のリソースを使う

エラー文をヒントにググりまくったところ、Chef の Recipe 中で “source /path/to/file” を実行するには、script ベースのリソース(bash, csh, perl, python, ruby など)を使う必要が有ることが分かりました。以下のページに助けられた。

The execute resource cannot be used to source a file (e.g. command “source filename”). The following example will fail becausesource is not an executable:

execute “foo” do
  command “source /tmp/foo.sh”
end

Instead, use the script resource or one of the script-based resources (bash, csh, perl, python, or ruby). For example:

bash “foo” do
  code “source /tmp/foo.sh”
end

ということで、Recipe のコードを bash リソースを使うように変更。

これで、問題なく Recipe を適用できました。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!