Ansible Dynamic Inventory - gere inventário com endereços IP sob uma tag específica com sublinhado em vez de ponto

11

Eu sou novo no Ansible. Quando estou usando ec2.pyo inventário dinâmico para gerar inventário, após a execução da cartilha, os resultados são mostrados como uma lista de endereços IP sob uma tag específica com sublinhado em vez de ponto. Por exemplo, eu quero executar um manual em instâncias com etiqueta específica, gostaria de saber como outras pessoas trabalham com endereços 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 endereço privado, ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

Os resultados de ec2.py:

 "tag_test_staging": [
    "10_80_20_47"
  ],

Para Endereço público, ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

Os resultados de ec2.py:

 "tag_test_staging": [
    "52_28_11_11"
  ],
Berlim
fonte
Por que importa para você que o nome que o script fornece a cada host tenha sublinhados para caracteres não alfanuméricos?
Assaf Lavie
Esta parece ser uma pergunta centrada em ferramentas muito específica. Existe ServerFault para isso, e seu tópico lá serverfault.com/help/on-topic . Não tenho certeza de como é o tópico aqui, se houver.
precisa
@ Evgeny, não sei se entendi o que você quer dizer, qual é o sentido de http://devops.stackexchange.comnão fazer perguntas? não é pergunta do DevOps?
Berlim

Respostas:

5

Funciona se eu comentar o hostname_variable, porque ele permite substituir o nome_do_ inventário por uma variável ec2, em vez de usar o destino_variavel

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

Para IPs privados:

destination_variable = private_ip_address
Berlim
fonte
Infelizmente, estou vendo o mesmo comportamento e comentar o hostname_variable não o corrige.
Todd Walton
No entanto ... já notei várias vezes que alterar o arquivo ini e executar novamente o ec2.py não retornará imediatamente as informações corretas. AF estranho, certo? Mas, após várias tentativas e tentativas e tentativas, após 20 minutos, de repente, começou a retornar endereços IP com pontos em vez de sublinhados! Não sei.
Todd Walton
Você sabe o que posso fazer se quiser fazer uma condição? por exemplo, vpc_destination_variable: "{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack
0

Eu tive o mesmo problema. Eu estava retornando endereços IP com sublinhados em vez de pontos. Mas já notei várias vezes que alterar o arquivo ini e executar novamente o ec2.py não retornará imediatamente as informações corretas. Uma vez eu mudei para private_ip_address e ele continuou retornando private_dns_name por um tempo. Desta vez, depois de mudar para private_ip_address e reexecutá-lo várias vezes - tentando e tentando e tentando - após cerca de 20 minutos, de repente, começou a retornar endereços IP com pontos em vez de sublinhados! Não sei. AF estranho, certo?

Todd Walton
fonte
Parece um "problema" de cache. Você tentou alterar o parâmetro 'cache_max_age' no ec2.ini?
malte
Você provavelmente está completamente certo. Eu estava olhando para isso hoje, na verdade. Você pode executar "./ec2.py --refresh-cache".
Todd Walton