2016-04-19 9 views
1

特定の要件の一部として、特定のGIDを持つ2つのグループ 'group1'と 'group2'を作成するように求められました。また、特定のUIDを持つ 'user1'ユーザー。 次のように私は、属性にハッシュとしてグループの名前と、そのIDを指定:シェフのグループリソースが冪等でない

default['abc']['groups'] = {'group1' => 45xxx, 'group2' => 45xxx} 

次のように私は私のレシピでこれを呼ばれます。私がここでやろうとしているのは、最初に2つのグループを作成することです。そして、ユーザーを作成します。グループを変更してユーザーを追加します。

最初の実行で正常に動作します。私は再びそれを実行すると次に、これは何が起こるかです:それはやっている何

Recipe: abc::recipename 
    * group[group1] action create 
    - alter group group1 
    - replace group members with new list of members 
    * group[group2] action create 
    - alter group group2 
    - replace group members with new list of members 
    * user[user1] action create (up to date) 
    * group[group1] action modify 
    - modify group group1 
    - add missing member(s): user1 
    * group[group2] action modify 
    - modify group group2 
    - add missing member(s): user1 

は、それが最初のブロックに当たったとき、すべてのユーザーを削除するグループを変更することです再放送で、です。 2番目のブロックでは、グループを再度変更してユーザーを追加します。 最初のグループブロックは、グループの作成専用です。グループがすでに存在している場合は、最初のブロックのメンバーについて何も言及していないときでも、グループを変更するのはなぜですか?それは最新のものとして見て、移動してください。なぜ私のように振る舞うのか理解してください。ここに何か不足しているかどうかわかりません

答えて

2

membersデフォルトは[]ですので、指定しないとメンバーを空に設定するように指示されます。最初のグループリソースにappend truemembers []を設定すると、あなたが望むと思うメンバーリストを管理しようとしません。シェフは一般的にオブジェクトレベルのモデリングの面で動作し、より手続き的な方法でそれを使用しようとしているので、状況はちょっと変わって見えます。

関連する問題