Ansible 配列変数

Ansible 配列変数

テンプレートファイルがありますconfig.j2

{% for host in groups['dbs'] %}
ips= {{ hostvars[host].ansible_default_ipv4.address }}
{% endfor %}

私の結果は次のとおりです

   ips= 192.168.231.91
   ips= 192.168.231.92
   ips= 192.168.231.93

次のように配列変数に出力を保存したいと思います。

ips=192.168.231.91,192.168.231.92,192.168.231.93

どうすればいいですか?ありがとうございます。

解決策を見つけて編集して出力します。

  - set_fact:
  ips: []  
  run_once: true

- set_fact:
  ips: "{{ips}} + ['{{hostvars[item].ansible_default_ipv4.address}}']"  
  with_inventory_hostnames:
  - dbs  
  run_once: true

- name: Save ip servers
  template: src=conf.j2 dest=/root


TASK [Gathering Facts] *************************************************************************************************************************
ok: [db1]
ok: [db2]
ok: [db3]

TASK [get-var : set_fact] **********************************************************************************************************************
ok: [db1]

TASK [get-var : set_fact] **********************************************************************************************************************
ok: [db1] => (item=db1)
ok: [db1] => (item=db3)
ok: [db1] => (item=db2)

TASK [get-var : Save ip servers] ***************************************************************************************************************
ok: [db1]
ok: [db2]
ok: [db3]

PLAY RECAP *************************************************************************************************************************************
db1                        : ok=4    changed=0    unreachable=0    failed=0   
db2                        : ok=2    changed=0    unreachable=0    failed=0   
db3                        : ok=2    changed=0    unreachable=0    failed=0   

最後に、ホスト(db)のテンプレートに出力されます。

[root@db1 ~]# cat conf.j2 
ips=[]
[root@db1 ~]# 

ベストアンサー1

PlayBookの1つの解決策は、空のリストを初期化してからここに追加することです。在庫グループのホスト名の循環:

- set_fact:
    ips: []
  run_once: true

- set_fact:
    ips: "{{ips}} + ['{{hostvars[item].ansible_default_ipv4.address}}']"
  with_inventory_hostnames:
    - dbs
  run_once: true

- template:
    src: config.j2
    dest: /tmp/whatever

config.j2テンプレートファイルが含まれています。

ips={{ ips|to_yaml }}

おすすめ記事