2016-05-23 9 views
0

私が書いた複数の役割を呼び出すプレイブックがあります。このプレイブックには、個別に呼び出すことも、最初から最後までプロシージャ全体を実行することよりも、タグ付けされた各ロールがあります。役割の中で、それらの中の作品を分割するために追加のタグを提供することができる。ロールタスクの中には、ロール固有のタグに関係なく、ロールが実行されるたびに実行されるため、「always」というタグが付いています。アシスタント:ロール内の「always」タグをスキップ

私が取り組んでいる問題は、これらの「常に」タグは、ロール固有のタグが呼び出されたかどうかにかかわらず実行されることです。ロールのタグを呼び出さないと、そのロールに固有の「常に」のタスクを含め、ロールを実行したくはありません。

例:

# Playbook 
- hosts: localhost 
    roles: 
    - role: roleA 
     tags: do_roleA 

    - role: roleB 
     tags: do_roleB 


# Role A: 
- name: Always do this when doing role A 
    debug: msg="test" 
    tags: always 

- name: Task1 
    debug: msg="task1" 
    tags: do_task1 

- name: Task2 
    debug: msg="task2" 
    tags: do_task2 

例コール:

ansibile-playbook my-playbook.yml --tags "do_roleB" 

しかし、これはロールAでのデバッグが同様に発生する原因となります。私が持っている

いくつかの要件:roleBがそれを必要とするいくつかのタスクを有することができるよう

  • は「常に」スキップすることはできません。
  • タグをalwaysから変更し、すべてのサブタスクにタグのリストを追加しないでください。すなわち、[do_task1、do_task2]はタグの数が大きくなり、追加するのを忘れやすくなるため、

基本的に私は、「プレイブックタグ」と呼ぶと、タグが一致するプレイブックからロールのみを実行することをアナフィラティブに指示する方法を探しています。 「always」タグが付いていても、一致しないロールのタスクは実行しないでください。しかし、私が "ロールタグ"を呼び出すと、そのロール内の "always"というタグか、私が呼び出すタグを持つすべてのタスクを実行します。

この機能はありますか?それは私がAnsible 2.0.1.0

+0

お試しいただけますか?ansibile-playbook my-playbook.yml -skip-tags "do_roleA" – perbellinio

答えて

1

を使用していますができます場合は役割にタグdo_roleAを適用すると、そのロール内のすべてのタスクdo_roleAタグを追加することに注意してください。
だからあなたの例の役割は、実際には次のようになります。

# Role A: 
- name: Always do this when doing role A 
    debug: msg="test" 
    tags: 
    - always 
    - do_roleA 

- name: Task1 
    debug: msg="task1" 
    tags: 
    - do_task1 
    - do_roleA 

- name: Task2 
    debug: msg="task2" 
    tags: 
    - do_task2 
    - do_roleA 

あなたは、そのタスクからalwaysタグを削除することができますので、do_roleAと役割をタグ付けした後、それはそのタスクのタグのみとなります。
-t do_roleBでプレイブックを呼び出すと、そのタスクは実行されません。

関連する問題