3

Chefとknifeを使用してアプリケーション環境をセットアップするのに役立ついくつかのシェルスクリプトを継承しました。それはすばらしい。

しかし、私が本当にやりたいのは、同じことを行うためのRubyスクリプトのパワーと柔軟性を備えていることです。

シェルアウトするknifeと、コマンドのリアルタイム出力が失われます。

私が使用している「chef」gemと「cloudstack-fog」プラグインを含めることで、Ruby内からknifeのすべての機能を呼び出すことができるはずです。

しかし、例やAPIドキュメントは見つかりませんでした。シェフの宝石のソースを掘り下げようとすることは、欲求不満の練習です。

knife cloudstack server create -E ...Rubyスクリプトから等を行うことはできませんか?

4

1 に答える 1

1

Kernelこれを行うには、モジュールのメソッド[1]を使用します。このsystemメソッドは、サブシェルでコマンドを実行し、その出力を現在のシェルにパイプします。プログラムで作成された引数Knifeコマンドのリアルタイム出力を確認したい場合は、カスタムKnifeプラグインの多くでこれを使用しますknife ssh

これは、非常に複雑なコマンドになる可能性のあるものを作成して実行する例です。

query = "chef_environment:#{environment.name}"
options = ["-x#{:: Chef :: Config [:node_name]}"] .join('')
command =%Q {knife ssh "#{query}"#{options} "#{chef_command}"}
システム(コマンド)

[1] http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-system

于 2012-08-16T17:57:37.997 に答える