2017-07-18 12 views
0

マイansible役割は、私は、ユーザーに更新のような複数のアクションを渡す機能を提供したい、このmain.ymlチェック複数の条件は

more tasks/main.yml 
--- 

- include: ssl_pull.yml 
    when: ACTION == 'renewal' 
- include: ssl_gen.yml 
    when: ACTION == 'generate' 
- include: ssl_push.yml 
    when: ACTION == 'install' 
- include: ssl_install.yml 
    when: ACTION == 'install' 

を持って&インストールので、それは

- include: ssl_pull.yml 
- include: ssl_push.yml 
- include: ssl_install.yml 
をインクルード

は私が

ansible-playbook -v -i /web/hosts.txt site.yml -e "ACTION=renewal" 

どのように以下のようACTION変数のための単一の値を渡す方法を知っています私は1つまたは複数の値を渡して、渡された値に基づいてファイルをインクルードすることはできますか?

あなたは私のコマンド/ ymlにどのような変更を加える必要があるかお勧めしますか?

+3

Isnと」どのタグが実装されているか? – techraf

答えて

1

Tagsあなたが探しているのは?

ansible-playbook -v -i /web/hosts.txt site.yml -t "renewal,generate" 

あなたには、いくつかの理由のためにタグを使用できない場合、我々はまた、次のことができます。-t引数を使用してタグを指定すると

- include: ssl_pull.yml 
    tags: renewal 

- include: ssl_push.yml 
    tags: install 

- include: ssl_install.yml 
    tags: install 

あなたのようなタスクにタグを付けますvarsと似たようなことをする。

カンマ区切りとしてVARを指定します。

ansible-playbook -v -i /web/hosts.txt site.yml -e "ACTIONS=renewal,generate" 

とコンマでVARを分割する条件を更新:

- include: ssl_pull.yml 
    when: "'renewal' in ACTIONS.split(',')" 
+0

私のsite.ymlにはインクルードがありません。これには3つの役割があり、main.ymlにincludeステートメントがあります。 – shifahim

+0

問題ではありません。 –

+0

あなたはすごいです..チップをありがとう – shifahim

1

Ansible tagsは、タスク選択のこの種を行うように設計されています。


あなた本当にあなたは、余分な-VARSでJSONオブジェクトを渡すことができ、タグを使用しないようにしたい場合:

ansible-playbook --inventory-file /web/hosts.txt site.yml \ 
       --extra-vars '{"ACTIONS": ["renewal", "install"]}' 

次に配列に対するテスト:

- include: ssl_pull.yml 
    when: "'renewal' in ACTIONS"