web-dev-qa-db-ja.com

Ansible:プレイブックホストを定義するために変数を使用する

次のバージョンをインストールしています: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変数を定義することです。

8
Vetemi

これは、integration変数を追加の変数として渡す場合に機能します。

ansible-playbook -e integration=int60 myplaybook.yml

Playの「ヘッダー」で使用される変数は、AnsibleがPlaybookを解析する前に定義する必要があります。

あなたの例では、integrationをホストファクトとして定義します。ファクトはタスクレベルでのみ定義され、プレイレベルでは定義されません。

更新:そして、追加の変数だけでなく、変数を渡す他の方法を使用できます。例えば:

- hosts: "{{ lookup('env','DYN_HOSTS') }}"

また動作します。

8