0

同じレシピを異なる属性で 2 回実行しようとしています。実行リストで指定する方法はありますか? 例:

"myRecipe":{
"run-list": "recipe[test], recipe[test]"
}

最初のものは flag=false にする必要があり、2 番目のものは flag=true で実行する必要があります。

4

4 に答える 4

1

私は以前に同様の質問に答えました:短いバージョンは、あなたの考えを変える必要があるということです. ソフトウェアをインストールして構成する必要がある場合は、ソフトウェアを 2 つに分割することを検討することをお勧めします。

より長い回答: opscode コミュニティ サイトのクックブックをご覧になりましたか? 多くのパターンが繰り返され、他の人が公開した作業は確かに役立つ可能性があります...特に、シェフを始めたばかりのように見える場合.

于 2014-01-03T06:20:42.557 に答える
1

いいえ、それは不可能です。レシピにそのようなロジックを実装し、たとえば配列を反復処理する必要があります。

于 2014-01-02T21:50:08.420 に答える
0

私の意見では、 https://github.com/daptiv/visualstudioの VisualStudio クックブックなど、Chef クックブックのいくつかは非常によく書かれています。

このレシピを 2 回実行する必要がある場合があります。別のソース コードをコンパイルするには、マシンに Visual Studio 2012 および 2013 をインストールする必要があります。これらのバージョンの Visual Studio には、XML ファイルを指定するサイレント インストール プロセスがまったく同じであるため、2012 と 2013 で簡単に機能させることができました。

プライベート Visual Studio 2012 ISO を指すように、VisualStudio クックブックの属性をオーバーライドする Chef ロール ファイルを作成することができました。それは簡単でした。次に、別の Visual Studio 2013 ISO を指すように 2013 をインストールするための別の Chef ロール ファイルを作成しました。Chef はレシピを 2 回実行しないため、Visual Studio 2013 のみをインストールすることになります。:(

「visualstudio」クックブックのローカル コピーを 2 つ作成する必要があるとしたら、最悪です。

于 2014-09-10T21:44:45.413 に答える
0

リソースも使用してみました:

define :installx, :cmd=>'good', :upgrade=>true do
  Chef::Log.info('cmd = #{params[:cmd]}')
  if params[:upgrade]
    Chef::Log.info('upgrading...')
  else
    Chef::Log.info('installing...')
  end
end

installx resource
installx "name" do
  cmd "install 1"
  upgrade true
end

「エラー: 定義するリソースが見つかりません」というエラーが表示されます。これは、公式ドキュメントからほとんど外れています。何が原因なのかわかる方がいましたら教えてください。

于 2014-01-03T00:41:29.780 に答える