2017-10-17 4 views
0

私はAnsible 2.3.2.0を使用しており、4つの異なるタスクを実行している役割を呼び出しています。タグを使用したコール固有のロールタスクが機能していない、すべてのタスクが実行中です

プレイブックでロールを呼び出し、特定のタグを指定すると、ロール全体とすべてのタスクが実行されます。私はこれが2.0の後に既知の問題であった場所を見て、includeステートメントの下に静的なディレクティブを追加することを提案しました。私はそれを試みたが、まだすべてのタスクが実行されました。ここで は、私が上記の役割文でこれを実行すると、私はAMIを期待

--- 

- include: ami.yml 
    static: yes 
    tags: 
    - ami 

- include: launch_config.yml 
    static: yes 
    tags: 
    - launch_config 

- include: asg.yml 
    static: yes 
    tags: 
    - asg 

- include: ami_lc_cleanup.yml 
    static: yes 
    tags: 
    - ami_lc_cleanup 

roles: 
    - {role: ansible-role-auto-deploy, tags: [ 'ami', 'launch_config', 'asg']} 

そして、ここでは役割main.ymlです...脚本における役割文ですlaunch_config、asgタスクを実行するだけでなく、ami_lc_cleanupタスクも実行されます。

タスクはすべて機能しますが、どのタスクを実行するかを制限する方法はわかりません。誰もがそれを(タグを介してタスクを指定することができます)を動作させる方法についての任意の提案を持っていますか?

答えて

1

条件が含まれていると、ではなく、は、static: noを使用して静的として定義する必要があります。あなたのコメントから想定すると

編集

あなたの脚本でtags文を誤解。これは、定義されたタグのロールを含むのではなく、コマンドラインで与えられたタグに基づいたロールを含めることです。

あなたのプレイでアクティブになっているタグは、コマンドラインだけで定義されています(私が知る限り、まだ覚えています)。

あなたのプレイブックのロールの条件を定義する場合は、そのために変数/ファクトを使用する必要があります。

ansible-playbook --tags ami,launch_config,asgを使用してプレイブックに電話をかけ、クリーンアッププロセスをスキップします。あなたのプレイブックにタグを定義すると、ami_lc_cleanupが他の3つのタグなしでコマンドライン上のタグとして定義されているときに、ロールが実行されないようになります。

+0

それはあまり助けにはならない、あなたは精巧にできますか? – tman

+0

includeは 'static:yes'として定義されていますが、' when'や '' tags''などの条件文を使うときは 'static:no'にする必要があります。 – clemens321

+0

静的に切り替えることを試みました:いいえ、そして違いはありません。 --list-tagsと--list-tasksオプションを使うと、最初の3つのタスクがTAGS:[ami、asg、およびlaunch_config]で実行されていることがわかります。たとえそれが電話プレイブックにタグ付けされていなくても。だから、ロールからタグを継承する必要があります... – tman

関連する問題