precisa listar o item da saída de fatos

0

Eu preciso salvar os endereços IP do host de destino em um arquivo usando set_fact. Abaixo está o meu manual, mas está dando saída como uma lista.

  hosts:  all
  tasks:
    - set_fact:
        data:  "{{ ansible_all_ipv4_addresses }}"
    - set_fact:
        ip: "{{ data.split(',')  }}"

    - name: Show the devices
      shell: echo {{ item }} >> /tmp/ips
      with_items: "{{  ip  }}"

saída: ok: [system1] = > {     "data": [         "172.19.0.1",         "172.18.0.1",         "172.20.0.1",         "172.17.0.1",         "172.16.108.124",         "10.0.41.117"     ] }

cat /tmp/ips
[u'172.19.0.1', u'172.18.0.1', u'172.20.0.1', u'172.17.0.1', u'172.16.108.124', u'10.0.41.117']


Desired o/p is 
 172.168.1.21
 172.168.1.22
    
por Pandu 06.09.2018 / 17:14

2 respostas

0

Em vez de

shell: echo {{ item }} >> /tmp/ips
with_items: "{{  ip  }}"

Use o modelo .

template:
  src: ips.j2
  dest: /tmp/ips

com template ips.j2

{% for item in ip %}
{{ item }}
{% endfor %}
    
por 10.09.2018 / 08:47
0

ansible_all_ipv4_addresses já é uma matriz, portanto, você não precisa split it:

- copy:
    dest: /tmp/ips
    content: "{{ ansible_all_ipv4_addresses | join('\n') }}"

Isso produzirá a saída desejada.

    
por 11.09.2018 / 18:27

Tags