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

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

スポンサーリンク

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 を適用できました。

スポンサーリンク
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!