2017-12-29 16 views
0

私はダイナミックな目録に対してプレイブックを実行していますので、プレイブックを実行しているときに別のホストを除外しています。可能なwhen文複数変数の置換

私は 'ansible_hostname'という事実に基づいて特定のタスクをスキップ/実行しました。例として:

- name: say 'yes' to every server except server0[12] 
    shell: | 
    echo 'yes' 
    when: '"server01" not in ansible_hostname and 
     "server02" not in ansible_hostname' 

- name: say 'no' for only server0[12] 
    shell: | 
    echo 'no' 
    when: '"server01" in ansible_hostname or 
     "server02" in ansible_hostname' 

これは私のために働いていますが、それほど持続的ではありません。私は動的にこれを行う方法を探しています(可変置換?)。例えば、私は[server01、server02]のリストである変数を保持することができ、{{var}} {ansible_hostname}にはないforループを実行できます。

これが可能かどうか、またはこれを達成する方法がわかりません。何かご意見は?

+0

あなたの意図はansible_hostname'条件に '「SERVER01」を書き込むために何でしたか?部分一致? – techraf

答えて

1

レッツはあなたがチェックしたいに対してホスト名のリストを持っていると言う:

--- 
- hosts: all 
    vars: 
    hostname_list: ["server01", "server01", "server01"] 

    tasks: 
    - debug: 
     msg: "test pass" 
     when: ansible_hostname not in hostname_list 
関連する問題