17

私は Vagrant を使用して標準の「precise32」ボックスを生成し、それを Chef でプロビジョニングして、Windows マシンで作業しているときに Linux で Node.js コードをテストできるようにします。これはうまくいきます。

また、次の bash コマンドがあるため、npm モジュールが自動インストールされます。

bash "install npm modules" do
  code <<-EOH
    su -l vagrant -c "cd /vagrant && npm install"
  EOH
end

これも、正常に完了した場合にコンソール出力が表示されないことを除いて、正常に機能します。しかし、何が起こっているのかを視覚的に監視できるようにしたいのです。これは npm に固有のものではありません。

具体的な答えのないこの同様の質問が表示されます: Vagrant - how to print Chef's command output to stdout?

フラグを指定してみましたが、私はひどい linux/ruby n00b であり、エラーが発生するかまったく出力されないため、解決策の例で私のスニペットを編集してください。

4

5 に答える 5

16

可能であればロギングを使用するようにしていますが、一部のシナリオでは出力を確認することが重要であることがわかりました。これが私のやり方の短いバージョンです。bash リソースを実行リソースに置き換えても問題なく動作します。標準エラー出力と標準出力の両方がファイルに出力されます。

results = "/tmp/output.txt"
file results do
    action :delete
end

cmd = "ls  /"
bash cmd do
    code <<-EOH
    #{cmd} &> #{results}
    EOH
end

ruby_block "Results" do
    only_if { ::File.exists?(results) }
    block do
        print "\n"
        File.open(results).each do |line|
            print line
        end
    end
end
于 2013-11-06T18:48:45.817 に答える
3

私は以下を使用しました:

bash "install npm modules" do
  code <<-EOH
    su -l vagrant -c "cd /vagrant && npm install"
  EOH
  flags "-x"
end

flagsプロパティにより、コマンドは次のように実行されますbash -x script.sh

于 2016-11-22T12:28:01.177 に答える