2016-05-03 13 views
1

実行時にコマンドラインから渡されたタグとスキップタグを、可能なプレイブックにアクセスするにはどうすればよいですか?実行時にタグにアクセスする

when節を使用してタグ/スキップタグに基づいて項目をスキップまたは含めることができるwith_itemsループを実現しようとしています。 This previous SO questionは同じトピックで触れていますが、別のアプローチをとります。 私は反復ごとにタグの存在を評価します。例えば

- name: Build docker images 
    docker_image: 
     name: "{{item.name}}" 
     path: "{{build_folder}}/dockerfiles/{{item.name}}" 
     dockerfile: "{{item.name}}.Dockerfile" 
     state: build 
     tag: "{{private_docker_registry}}/{{item.name}}" 
    when: "{{ansible_host_vars['tags'][image1]}}" is defined 
    with_items: 
     - image1 
     - image2 
     - image3 
+0

[this](https://github.com/ansible/ansible/issues/12003)の機能要求があるようですが、注意を払うことはできません。 – stacksonstacks

答えて

0

タグは、実行時に利用できません。タグは、実行されるタスクを定義します。

... 
when: hostvars[inventory_hostname][item] == True 
with_items: 
    - image1 
    - image2 
    - image3 

しかし、私にとって、これは間違っている感じ:

- set_fact: 
    image1: True 
    tags: image1 

- set_fact: 
    image2: True 
    tags: image2 

- set_fact: 
    image3: True 
    tags: image3 

は、今すぐあなたのタグに対応した事実を持っているし、あなたの状態でそれらを使用することができます:あなたは事実にタグを変換するためにこれを使用することができます。これはタグの目的ではありません。タグは、どのソフトウェアがホストにインストールされているかを定義するべきではありません。これはあなたのグループ/ホスト変数で定義する必要があります。タグは、パッケージを更新したり、サービスを再起動するなど、タスクのサブセットに再生を制限するだけです。

タグのほかに、extra-varsでアーカイブすることもできます。これにより、さらに制御が可能になります。タグなしで電話帳を呼び出すと、すべてのタスクが実行されます。

関連する問題