web-dev-qa-db-ja.com

Ansibleプレイで現在ターゲットになっているすべてのホストを一覧表示する方法

私はAnsibleプレイを実行していますが、その対象となるすべてのホストをリストしたいと思います。 Ansible docs これが可能であることを述べています 、しかし彼らの方法は複雑なターゲットグループ(ホストのようなターゲット:web_servers:&data_center_primary)で動作しないようです

私はこれが実行可能であると確信していますが、それに関するさらなるドキュメントを見つけることができないようです。現在ターゲットになっているすべてのホストを含​​む変数はありますか?

22
xabram

「play_hosts」変数を探しています

---
- hosts: all

  tasks:
    - name: Create a group of all hosts by app_type
      group_by: key={{app_type}}

    - debug: msg="groups={{groups}}"
      run_once: true

- hosts: web:&some_other_group

  tasks:
   - debug: msg="play_hosts={{play_hosts}}"
     run_once: true

結果として

TASK: [Create a group of all hosts by app_type] *******************************
changed: [web1] => {"changed": true, "groups": {"web": ["web1", "web2"], "load_balancer": ["web3"]}}

TASK: [debug msg="play_hosts={{play_hosts}}"] *********************************
ok: [web1] => {
    "msg": "play_hosts=['web1']"
}

在庫:

[proxy]
web1 app_type=web
web2 app_type=web
web3 app_type=load_balancer

[some_other_group]
web1
web3
27
sirkubax

オプション--list-hostsを使用して、プレイブックが影響するホストのみをリストできます。

また、現在Ansibleが認識しているすべてのホストを保持するdict hostvarsがあります。ただし、setupモジュールはすべてのホストで実行する必要があるため、gather_facts: noを介してそのステップをスキップすることはできません。

21
udondan