Ansible для хранения переменных фактов

#ansible #ansible-facts

#ansible #ansible-факты

Вопрос:

Используя Ansible здесь, я собираю факты о контейнере:

    - name: start my container 
      lxd_container:
        name: vm_srv1
        state: started
      register: st
    - debug: msg="{{ st.addresses }}"
  

Запуск playbook приводит к следующему:

 TASK [manager : debug] *********************************************************
ok: [lxc.myvmhost ] => {
    "msg": {
        "eth0": [
            "10.0.3.103"
        ]
    }
}
  

Я хотел бы сохранить значение eth0 в файл

Я добавил

 - debug: msg="{{ st.addresses['eth0'] }}"
  

вывод:

 TASK [manager : debug] *********************************************************
ok: [lxc.myvmhost ] => {
    "msg": [
        "10.0.3.103"
    ]
}
  

При сохранении выходных данных в файл

 - lineinfile: dest=/tmp/file line="{{ st.addresses.eth0 }}"
  

Я получаю следующее:

 Hello world
['10.0.3.103']
  

Как я могу сохранить IP-адрес без каких-либо забавных вложений, которые добавляет Ansible?

Ответ №1:

В вашем примере eth0 это список ip-адресов, поэтому для извлечения первого элемента данного списка используйте:

 st.addresses.eth0[0]