2017-10-09 3 views
0

Mes hôtes ont 3 adresses IP réseau et l'un d'entre eux est nécessaire plus tard dans mon playbook.Ansible Configuration Module pour rechercher et trouver une adresse IP

Dans mon PlayBook j'ai couru le module de configuration suivante:

- name: Gather Networks Facts into Variable 
    setup: 
    register: setup 

- name: Debug Set Facts 
    debug: 
    var: setup.ansible_facts.ansible_ip_addresses 

Le fournit la sortie suivante:

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

Je suis en train de trouver un moyen de trouver le 192.168.0.63 en recherchant en utilisant les trois premiers octets ou 192.168.0. Je veux aussi ensuite mettre cette valeur dans un fait afin que je puisse l'utiliser plus tard dans mon livre de jeu.

Quel serait le meilleur moyen de rechercher et de trouver cette valeur avec Ansible ou Jinja2?

Répondre

1

Est-ce que cela va?

- set_fact: 
    my_fact: "{{ (setup.ansible_facts.ansible_ip_addresses | select('match','192.168.0.') | list)[0] }}" 

S'il y a plusieurs valeurs correspondant au motif, il obtiendra le premier dans l'ordre.

+0

Cela a fonctionné parfaitement. Je vous remercie – PatchSte