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"
  ],

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

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?


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.