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] }}"

Если есть несколько значений, соответствующих шаблону, он получит первое по порядку.

Другие вопросы по тегам