(Nouveau pour ansible) Je suis en train d'exécuter ansible all -m setup
sur une poignée d'hôtes pour produire une sortie JSON pour notre système d'inventaire. Certains de nos remotes ansible sont dans des sous-réseaux différents (DMZs par exemple). J'aimerais inclure le LAN IP associés à ces hôtes dans la sortie JSON d'ansible. Comment puis-je faire cela ?
MISE À JOUR : Pour clarifier, j'aimerais que les 192.168.1.1
l'adresse IP doit être dans la sortie des faits d'une manière ou d'une autre. Le site ansible_all_ipv4_addresses
et ansible_default_ipv4
dans la sortie contient 10.10.10.1
ce qui n'est pas une adresse IP utile pour les personnes qui regardent l'inventaire du point de vue du réseau local.
192.168.1.0/24 192.168.1.0/24
LAN ----------------FIREWALL
| |
eth0 eth1
| |
| +-------DMZ1---------+
| |
host1.org.net > + eth0:1=192.168.1.1 + 10.10.10.1 > host1.org.net
| |
host2.org.net > + eth0:2=192.168.1.2 + 10.10.10.2 > host2.org.net
0 votes
Elles devraient déjà être dans ces faits s'il s'agit d'interfaces locales..... Cherchez-vous des IPs de LOM ???
0 votes
Exact, les adresses IP sont déjà dans les faits.
0 votes
Je ne pense pas avoir été clair sur ce dont j'ai besoin ou j'ai complètement manqué quelque chose d'évident. J'ai ajouté un diagramme et je vais regarder à nouveau la sortie JSON. Peut-être que mon grep était sur un saut de ligne ou quelque chose comme ça.
0 votes
Ansible utilise
ip -4 route get 8.8.8.8
pour déterminer l'adresse IPv4 par défaut. Ceci est raisonnable sur un hôte correctement configuré. Quant à vos autres interfaces, assurez-vous que vous ne les avez pas configurées style ancien avec des pseudonymes . Si vous l'avez fait, passez votre configuration à la méthode moderne.0 votes
Merci pour l'explication, mais je pense que ansible fonctionne bien. L'hôte de gestion (à partir duquel ansible est lancé) est sur le réseau local. J'aimerais savoir s'il existe un moyen d'inclure un fait à partir de cette extrémité de la connexion, et non à partir du point d'extrémité. Dans mon cas, le point d'extrémité n'a aucun moyen de savoir quelle est son adresse IP dans la vue DNS du réseau local.
0 votes
Le module de configuration renvoie les informations recueillies auprès du système géré. Si vous voulez définir des faits supplémentaires ou les modifier, vous aurez probablement besoin de créer un playbook. Dans un livre de jeu, vous devriez être en mesure de mettre en place un moyen de rassembler les faits, puis d'en ajouter d'autres en fonction des informations de votre inventaire. Une autre option pourrait être de définir des faits personnalisés sur les machines.
0 votes
@zoredache est-ce qu'une "commande : " d'un playbook s'exécutera-t-elle sur le contrôleur, ou sur la machine distante ? Si je peux obtenir l'adresse IP de l'hôte sur le contrôleur, puis utiliser un playbook "command" pour transférer la sortie dans /etc/ansible/facts.d/lan_ip, cela pourrait fonctionner. J'aurais juste besoin de "get_facts" après avoir placé le fichier. C'est ce que vous aviez en tête ? J'ai essayé de faire un test en faisant simplement "command : ifconfig > /tmp/lan_ip" et j'obtiens une erreur. J'ai besoin de lire davantage sur les playbooks