#ansible #ansible-inventory
Вопрос:
Я надеюсь, что один из членов нашего экспертного сообщества сможет помочь мне решить эту проблему, которая сводила меня с ума. У меня есть список серверов, таких как ниже, которые, скорее всего, будут взяты из файла инвентаризации, через который мы будем запускать книгу игр.
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
.....
Я хотел бы взять совершенно другой набор IP-адресов, который будет динамичным, как показано ниже
10.1.16.1
10.1.16.2
10.1.16.3
10.1.16.4
.....
Теперь мне нужно повторить первый набор IP-адресов, таких как 10.1.1.[14], и сопоставить его с 10.1.16.[14] последним октетом с заданным количеством. В принципе, мне нужно, чтобы результат выглядел так, как показано ниже
FirstSet 10.1.1.14 SecondSet 10.1.16.14
FirstSet 10.1.1.14 SecondSet 10.1.16.15
FirstSet 10.1.1.14 SecondSet 10.1.16.16
FirstSet 10.1.1.14 SecondSet 10.1.16.17
..Until Count..
Мне также нужно, чтобы первый набор соответствовал тому же хосту, через который проходит playbook.
До сих пор я могу правильно разместить оба списка в одной строке (С этим возникли ОГРОМНЫЕ проблемы), но мне нужно понять, КАК заставить оба набора соответствовать последнему октету.
Если у кого-либо из участников есть какие-либо предложения или даже альтернативный способ сделать это, мы будем очень рады, заранее благодарим вас.
---
- name: Servers list integration and iteration
hosts: all
gather_facts: no
tasks:
- name: Get hosts from host file
local_action: command cat hosts
register: firstset
- debug: msg=hostip {{ firstset.stdout_lines }}
- set_fact:
counthold: 9
startip: 10.1.16.14
- name: Setting fact for testing loop
set_fact:
secondset: "{{ lookup('pipe', '/bin/echo') (((startip | ipaddr('int')) item|int) | ipaddr | ipmath(-2) ('/''24')) | ipaddr('next_usable') }}"
with_sequence: count={{counthold|int}}
register: testtest
- debug: var=testtest
- debug:
msg: "serverlist one {{ item.0 }} serverlist two {{ item.1.ansible_facts.ipmirange }}"
loop: "{{ serverlist.stdout_lines | zip(testtest.results) | list }}"