21
シェルコマンドの出力を後でシェフレシピで使うための変数に入れたいと思います。 bashでシェフの実行リソースの出力を変数に入れるにはどうすればいいですか?
私はoutput=`tail -1 file.txt`
ような何かを行うことができ、私はレシピの後の結果を使用できるように、私はecho $output
は「リソースを実行する」これを行うことができますでしょうか?
シェルコマンドの出力を後でシェフレシピで使うための変数に入れたいと思います。 bashでシェフの実行リソースの出力を変数に入れるにはどうすればいいですか?
私はoutput=`tail -1 file.txt`
ような何かを行うことができ、私はレシピの後の結果を使用できるように、私はecho $output
は「リソースを実行する」これを行うことができますでしょうか?
グラハムのソリューションは、最初に動作するように見えながら、私はシェフ::ミックスインを知ったが:シェルアウト
ruby_block "check_curl_command_output" do
block do
#tricky way to load this Chef::Mixin::ShellOut utilities
Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)
curl_command = 'curl --write-out %{http_code} --silent --output /dev/null '+node['url']
curl_command_out = shell_out(curl_command)
if curl_command.stdout == "302"
...
else
...
end
end
action :create
end
シェフ::ミックスイン:あなたが特定のユーザーとしてコマンドを実行する必要がある場合シェルアウトは特に便利です(参照http://www.slideshare.net/opscode/chef-conf-windowsdougireton):
ruby_block "run_command_as" do
block do
Chef::Resource::RubyBlock.send(:include,Chef::Mixin::ShellOut)
add_group = shell_out("your command",
{
:user => "my_user",
:password => "my_password",
:domain => "mycorp.com"
}
)
end
end
これが受け入れ答えよりも問題に、よりエレガントなソリューションであり、優れた機能を提供します。投稿してくれてありがとう、フランソワ! – cixelsyd
このタイプのコードにchefspecを書いた人はいますか? –