Inventario dinámico de Ansible: genere inventario con direcciones IP bajo una etiqueta específica con guión bajo en lugar de punto

11

Soy nuevo en Ansible. Cuando uso ec2.pyel inventario dinámico para generar inventario, una vez que el libro de jugadas termina de ejecutarse, los resultados se muestran como una lista de direcciones IP bajo una etiqueta específica con guión bajo en lugar de punto. Por ejemplo, quiero ejecutar un libro de jugadas en instancias con etiquetas específicas, me pregunto cómo trabajan otras personas con direcciones 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 

Para dirección privada, ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

Los resultados de ec2.py:

 "tag_test_staging": [
    "10_80_20_47"
  ],

Para dirección pública, ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

Los resultados de ec2.py:

 "tag_test_staging": [
    "52_28_11_11"
  ],
Berlina
fuente
¿Por qué le importa que el nombre que el script le da a cada host tenga guiones bajos para caracteres no alfanuméricos?
Assaf Lavie
Esta parece ser una pregunta muy específica centrada en la herramienta. Hay ServerFault para eso, y su tema es serverfault.com/help/on-topic . No estoy seguro de cómo se trata el tema aquí, si lo hay
Evgeny
@Evgeny, no estoy seguro de entender a qué te refieres, ¿de qué sirve http://devops.stackexchange.comsi no haces preguntas? ¿No es una pregunta de DevOps?
Berlín

Respuestas:

5

Funciona si comento el hostname_variable, ya que permite anular el Inventory_name con una variable ec2, en lugar de usar el destination_variable

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

Para IP privadas:

destination_variable = private_ip_address
Berlina
fuente
Por desgracia, estoy viendo el mismo comportamiento, y comentar hostname_variable no lo corrige.
Todd Walton
Sin embargo ... He notado varias veces que cambiar el archivo ini y volver a ejecutar ec2.py no devolverá de inmediato la información correcta. AF extraño, ¿verdad? ¡Pero después de intentarlo varias veces y probarlo y probarlo, después de aproximadamente 20 minutos, de repente comenzó a devolver direcciones IP con puntos en lugar de guiones bajos! No se.
Todd Walton
¿Sabes qué puedo hacer si quiero hacer una afección? por ejemplo, vpc_destination_variable: "{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack
0

Tuve el mismo problema. Estaba recuperando direcciones IP con guiones bajos en lugar de puntos. Pero ahora he notado varias veces que cambiar el archivo ini y volver a ejecutar ec2.py no devolverá de inmediato la información correcta. Una vez que cambié a private_ip_address y seguí devolviendo private_dns_name por un tiempo. Esta vez, después de cambiar a private_ip_address y volver a ejecutarlo varias veces, probándolo y probándolo y probándolo, después de unos 20 minutos, ¡de repente comenzó a devolver direcciones IP con puntos en lugar de guiones bajos! No se. AF extraño, ¿verdad?

Todd Walton
fuente
Suena como un "problema" de almacenamiento en caché. ¿Has intentado alterar el parámetro 'cache_max_age' en ec2.ini?
Malte
Probablemente tengas toda la razón. Solo estaba viendo eso hoy, en realidad. Puede ejecutar "./ec2.py --refresh-cache".
Todd Walton el