Ansible Dynamic Inventory - générer un inventaire avec des adresses IP sous une balise spécifique avec un soulignement au lieu d'un point

11

Je suis nouveau à Ansible. Lorsque j'utilise ec2.pyun inventaire dynamique pour générer un inventaire, une fois le playbook terminé, les résultats sont affichés sous forme de liste d'adresses IP sous une balise spécifique avec un trait de soulignement au lieu d'un point. Par exemple, je veux exécuter un playbook sur des instances avec une balise spécifique, je me demande comment d'autres personnes travaillent avec des adresses IP?

---
- hosts: tag_test_staging
  sudo: true
  tasks:
  - name: Make sure that we can connect to the machine
    ping:

    PLAY RECAP *********************************************************************
    10_80_20_47                : ok=0    changed=0    unreachable=1    failed=0 

Pour une adresse privée, ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

Les résultats d'ec2.py:

 "tag_test_staging": [
    "10_80_20_47"
  ],

Pour le discours public, ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

Les résultats d'ec2.py:

 "tag_test_staging": [
    "52_28_11_11"
  ],
Berlin
la source
Pourquoi est-ce important pour vous que le nom que le script donne à chaque hôte comporte des traits de soulignement pour les caractères non alphanumériques?
Assaf Lavie
Cela semble être une question très spécifique axée sur les outils. Il y a ServerFault pour cela, et son sujet sur serverfault.com/help/on-topic . Je ne sais pas comment sur le sujet ici, le cas échéant.
Evgeny
@Evgeny, je ne suis pas sûr de comprendre ce que tu veux dire, à quoi ça sert http://devops.stackexchange.comsi tu ne poses pas de questions? n'est-ce pas une question DevOps?
Berlin

Réponses:

5

Cela fonctionne si je commente la variable hostname_variable, car elle permet de remplacer l'inventaire_name avec une variable ec2, au lieu d'utiliser la destination_variable

#hostname_variable = private_ip_address
#hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = private_ip_address

Pour les adresses IP privées:

destination_variable = private_ip_address
Berlin
la source
Hélas, je vois le même comportement, et commenter hostname_variable ne le corrige pas.
Todd Walton
Cependant .... J'ai plusieurs fois remarqué que changer le fichier ini et relancer ec2.py ne retournera pas immédiatement les informations correctes. AF bizarre, non? Mais après plusieurs essais et essais et essais, après environ 20 minutes, il a soudainement commencé à renvoyer des adresses IP avec des points au lieu de traits de soulignement! Je ne sais pas.
Todd Walton
Savez-vous ce que je peux faire si je veux faire une condition? par exemple vpc_destination_variable: "{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack
0

J'ai eu le même problème. Je récupérais des adresses IP avec des traits de soulignement au lieu de points. Mais j'ai remarqué à plusieurs reprises que changer le fichier ini et relancer ec2.py ne retournera pas immédiatement les informations correctes. Une fois, je suis passé à private_ip_address et il a continué à renvoyer private_dns_name pendant un certain temps. Cette fois, après avoir changé en private_ip_address et l'avoir relancé plusieurs fois - l'essayer et l'essayer et l'essayer - après environ 20 minutes, il a soudainement commencé à renvoyer des adresses IP avec des points au lieu de traits de soulignement! Je ne sais pas. AF bizarre, non?

Todd Walton
la source
Cela ressemble à un «problème» de mise en cache. Avez-vous essayé de modifier le paramètre 'cache_max_age' dans ec2.ini?
malte
Vous avez probablement tout à fait raison. Je regardais ça aujourd'hui, en fait. Vous pouvez exécuter "./ec2.py --refresh-cache".
Todd Walton