0

以下にシナリオを示します。

  • 私たちのノードには、「ロール a」と「ロール b」の run_list があります。ノードが収束し、run_list を実行します。
  • ステップ 1 のノード収束実行中に、knife コマンドを使用して、別の「ロール c」をノード run_list に追加しようとしています。knife コマンドの出力に従って正常に追加されます。
  • ノードの収束が完了した後、ナイフノードのステータスを確認すると。ステップ 2 で追加した「ロール c」は、ノード run_list に追加されていません。

ノード収束実行中にナイフ コマンドを使用してノード run_list を更新する方法は?

4

1 に答える 1

3

ナイフ コマンドは、シェフ サーバーを管理するためにワークステーションで使用されることを目的としています。動作を変更するためにレシピ内で使用してはなりません (これは機能しないため)。

そこで何が起こるの:

  • シェフラン内で、誰か (ノード自体でなくても) がノード オブジェクトを変更し、その run_list を変更します。

  • ノードが実行を終了すると、ノード オブジェクト (実行リストを含む) が保存され、その間に実行された内容が上書きされます。ナイフ コマンドは役に立ちません。

レシピで run_list を変更したい場合はnode.run_list、将来の実行のために run_list を変更できるメソッドを使用する必要があります。

あなたの例を考えると、次を使用できます:

ruby_block 'remove ntp::undo from run list' do
  block do
    node.run_list.add('role[role c]')
  end
  only_if { !node.run_list.include?('role[role c]') }
end
于 2015-06-23T07:55:49.917 に答える