2017-02-07 6 views
2

ハンドラの実行を停止する方法はありますか?私はタグを追加しようとしていましたが、 "--skip-tags"を使用しましたが動作しません。ハンドラの実行を無効にする

次のロール変数reload_service: trueを追加して使用することはできますが、すでにタグを使用していて、ロールの一部を再実行するだけでうまく動作します。

通常、サービスを再起動するためにハンドラが使用されます。サービスを開始せずにこのロールを実行するには、ロール変数を変更せずに次のケースをカバーします。私はansible 2.1.2.0

テストケースを使用してい

あなたがタグは、実行時に指定されているテストすることができますAnsible内には変数が現在ありません

mkdir -p test/role/handlers test/role/tasks cd test echo -ne '---\n - command: "echo Test"\n notify: restart\n' > role/tasks/main.yml echo -ne '---\n- name: restart\n command: "echo Handler"\n tags: [handlers]\n' > role/handlers/main.yml echo -ne '---\n- hosts: localhost\n gather_facts: false\n roles:\n - role\n' > play.yml ansible-playbook play.yml --skip-tags handlers

+0

これが理解できないです:「*私は次のケースをカバーする役割を変更することなく、サービスを開始せずにこの役割を実行する*。」私は私がいけない、理想的に、変数を変更しないことを意味し – techraf

+0

@techraf 'rsyslog_add_service:true'のような条件変数がありますが、制御しやすいタグを使うだけです。 – alkuzad

+0

タグは使用できません。質問は何ですか?そして、あなたはその文が何を意味しているのかを説明していない。 – techraf

答えて

3

ハンドラは、割り当てられたタグに関係なく実行されます。ドキュメンテーションは、これがバグか意図した動作かどうかを明確にしていません。

いくつかのオプションがあります:

  • は、タスクに別の変数を追加し、ハンドラはまだ「ここ」を条件とすることができるので、これを使用句。

  • ハンドラに、アクションとタグが割り当てられた別のファイルを含めます。ファイルは常に含まれますが、タグはアクションを条件付きにします。

  • タグ付けされたアクションをタスクで実行し、ハンドラのローカル変数を設定します。このタスクの変換により、タグは実行時に引き続き使用できます。

+0

これらは唯一の有効なオプションですが、私はどのように分かれているのか分かりません、私はただ塩に切り替えるだけです。 – alkuzad

関連する問題