Ansible Setup Module для поиска и поиска IP-адреса
У моих хостов есть 3 сетевых IP-адреса, и один из них понадобится мне позже.
В моем playbook я запустил следующий модуль установки:
- name: Gather Networks Facts into Variable
setup:
register: setup
- name: Debug Set Facts
debug:
var: setup.ansible_facts.ansible_ip_addresses
Обеспечивает следующий вывод:
{
"setup.ansible_facts.ansible_ip_addresses": [
"10.0.2.15",
"fe80::85ae:2178:df12:8da0",
"192.168.99.63",
"fe80::3871:2201:c0ab:6e39",
"192.168.0.63",
"fe80::79c5:aa03:47ff:bf65",
"fd89:8d5f:2227:0:79c5:aa03:47ff:bf65",
"2a02:c7f:9420:7100:79c5:aa03:47ff:bf65"
]
}
Я пытаюсь найти способ найти 192.168.0.63 путем поиска с использованием первых трех октетов или 192.168.0. Затем я также хочу привести это значение в факт, чтобы потом использовать его в своем сборнике пьес.
Как лучше всего найти и найти это значение с помощью Ansible или Jinja2?
1 ответ
Будет ли это делать?
- set_fact:
my_fact: "{{ (setup.ansible_facts.ansible_ip_addresses | select('match','192.168.0.') | list)[0] }}"
Если есть несколько значений, соответствующих шаблону, он получит первое по порядку.