Variable
如何獲取 ansible 庫存並填充 ansible 變數?
我有一個定義了一組伺服器的清單文件
[prod] prod1 ansible_host=10.10.2.30 prod2 ansible_host=10.10.2.40 prod3 ansible_host=10.10.2.50 prod4 ansible_host=10.10.2.60
我想定義一個變數來連接由逗號分隔的 prod 組中的所有伺服器。假設變數是列表,變數應該包含類似的值
list: "prod1_IP,prod2_IP,prod3_IP,prod4_IP" list: "10.10.2.30,10.10.2.40,10.10.2.50,10.10.2.60"
可以很容易地手動放置這些,但要注意的是,列表應該在不同的場景中擴展。
我想可以使用
hostvars[item].ansible_host
for 循環。但不確定如何
下面的劇本可以完成這項工作
- hosts: prod gather_facts: false tasks: - block: - set_fact: list1: "{{ ansible_play_hosts_all|product(['_IP'])|map('join')| join(',') }}" - debug: var: list1 - set_fact: list2: "{{ ansible_play_hosts_all|map('extract', hostvars, 'ansible_host')| join(',') }}" - debug: var: list2 run_once: true
給
list1: prod1_IP,prod2_IP,prod3_IP,prod4_IP list2: 10.10.2.30,10.10.2.40,10.10.2.50,10.10.2.60