7

オプションにしたいシェフのレシピのリソースがあります。つまり、レシピが実行され、リソースが失敗した場合でも、他のすべてを続行したいということです。もちろん、そのリソースで障害が発生したことを知りたいのですが、それは重要なリソースではなく、それに依存するものがないため、残りの実行を続行したいだけです.

私は、依存関係を明示的に宣言する必要がある Puppet で作業することに慣れています。リソースは、依存関係が失敗した場合にのみスキップされます。

なぜこれが本当の質問ではないとして閉じられたのか (FAQ を読んだ後でも) はわかりませんが、私が求めていることを説明するためにいくつかのサンプル コードを追加します。

私はシェフを使用して開発環境をセットアップしていますが、その一部は、いくつかの git リポジトリを複製して配置することです。それらに依存するものは何もありません。また、一部の開発者がアクセスできないプライベート リポジトリが存在することもあります。複製に失敗した場合は、他のリソースを引き続き実行してほしい。

したがって、次のリソースの場合:

["foo", "bar", "baz"].each do |repo|
  git repo do
    repository  "git@github.com/example/#{repo}"
    reference   "master"
    action      :sync
    depth       1
    user        'dev'
    group       'dev'
    destination "#{node[:src_dir]}/#{repo}"
  end
end

これを実行しているユーザーが foo のクローンを作成する権限を持っていない場合、foo は失敗しますが、bar と baz は引き続きクローンを作成します。そんなことがあるものか?

4

2 に答える 2

6

設定できますignore_failure true

于 2012-11-02T21:38:55.220 に答える
0

Chef::Provider::Git1 つの可能性は、サブクラスを作成し、サブクラスで気に入らない動作を変更する独自のプロバイダー クラスを作成することです。リソースで属性メソッドを使用してprovider、そのリソースのプロバイダー クラス (この場合はプロバイダー クラス) を設定できます。おそらく、プロバイダ クラスをライブラリ ファイルに配置します。

于 2012-11-02T21:36:00.993 に答える