Создайте список из нескольких хостов в Ansible - PullRequest
3 голосов
/ 01 апреля 2020

Я пытаюсь составить список серийных номеров коммутатора, используя Ansible. Серийный номер извлекается с использованием IOS Facts и является простым, но я не могу получить список no, чтобы быть инкрементным, он просто перезаписывает список последним серийным номером.

Вот частичный код, который у меня есть:

 tasks:

- name: Get all facts from ios devices
  register: all_facts
  ios_facts:
    gather_subset: hardware

- name: Create list Serials
  set_fact:
    IOSserials: "{{ IOSserials + [ all_facts.ansible_facts.ansible_net_serialnum ] }}"

- name: Display list
  debug:
    msg: "The list is: {{ IOSserials }}"

И вот результат, который я получаю:

TASK [Create list Serials] *****************************************************
ok: [lab3650s2] => {"ansible_facts": {"IOSserials": ["FDO201XXXXD"]}, "changed": false}
ok: [lab3650s1] => {"ansible_facts": {"IOSserials": ["FDO192XXXXV"]}, "changed": false}
ok: [lab4500s1] => {"ansible_facts": {"IOSserials": ["FOX141XXXXV"]}, "changed": false}

TASK [Display list] ************************************************************

ok: [lab4500s1] => {
"msg": "The list is: ['FOX141XXXXV']"
}
ok: [lab3650s2] => {
"msg": "The list is: ['FDO201XXXXD']"
}
ok: [dev-lab3650s1] => {
"msg": "The list is: ['FDO192XXXXV']"

Я пытаюсь получить результат как:

    ['FOX141XXXXV','FDO201XXXXD','FDO192XXXXV']"

1 Ответ

2 голосов
/ 01 апреля 2020

Можно отобразить извлечь . Например,

- debug:
    msg: "{{ ansible_play_hosts_all|map('extract', hostvars, 'IOSserials')|list }}"
  run_once: true

дает

    "msg": [
        "FOX141XXXXV", 
        "FDO201XXXXD", 
        "FDO192XXXXV"
    ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...