次のバージョンをインストールしています:ansible 2.3.0(devel 2131eaba0c)
ホスト変数を外部変数として指定し、それをplaybookで次のように使用したいと思います。
hosts: "{{integration}}"
私のgroup_vars/allファイルには、次の定義済み変数があります。
integration: "int60"
ホストファイルは次のようになります。
[int60]
hostA
[int61]
hostB
残念ながら、これは機能しません。また、次の方法でHost varを定義しようとしました。
[integration]
127.0.0.1 ansible_Host="{{ integration_env }}"
そして、私のgroup_vars/allファイルでintegration_envを指定します。この場合、タスクはローカルで実行され、目的の環境では実行されていないように見えました。
このようなことは可能ですか?私はこれを行う全く新しい方法を受け入れるでしょう。主な目標は、varファイルでHost変数を定義することです。
これは、integration
変数を追加の変数として渡す場合に機能します。
ansible-playbook -e integration=int60 myplaybook.yml
Playの「ヘッダー」で使用される変数は、AnsibleがPlaybookを解析する前に定義する必要があります。
あなたの例では、integration
をホストファクトとして定義します。ファクトはタスクレベルでのみ定義され、プレイレベルでは定義されません。
更新:そして、追加の変数だけでなく、変数を渡す他の方法を使用できます。例えば:
- hosts: "{{ lookup('env','DYN_HOSTS') }}"
また動作します。