Ansible Dynamic Inventory - generuj zasoby z adresami IP pod określonym tagiem z podkreśleniem zamiast kropki


11

Jestem nowy w Ansible. Kiedy używam ec2.pydynamicznej inwentaryzacji do generowania ekwipunku, po zakończeniu playbooka wyniki są wyświetlane jako lista adresów IP pod określonym znacznikiem z podkreśleniem zamiast kropki. Na przykład chcę uruchomić playbook na instancjach z określonym znacznikiem, zastanawiam się, jak inne osoby pracują z adresami 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 

W przypadku adresu prywatnego ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

Wyniki z ec2.py:

 "tag_test_staging": [
    "10_80_20_47"
  ],

W przypadku adresu publicznego ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

Wyniki z ec2.py:

 "tag_test_staging": [
    "52_28_11_11"
  ],

Dlaczego jest dla ciebie ważne, że nazwa skryptu nadana każdemu hostowi ma podkreślenia dla znaków innych niż alfanumeryczne?
Assaf Lavie,

To wydaje się być bardzo konkretnym pytaniem zorientowanym na narzędzia. Jest do tego ServerFault, a jego temat jest na serwerze serverfault.com/help/on-topic . Nie jestem pewien, jak tu na temat, jeśli w ogóle.
Evgeny,

@Eggeny, nie jestem pewien, czy rozumiem, co masz na myśli, jaki jest sens, http://devops.stackexchange.comjeśli nie zadajesz pytań? czy to nie jest pytanie DevOps?
Berlin

Odpowiedzi:


5

Działa, jeśli skomentuję zmienną nazwa_hosta, ponieważ pozwala na zastąpienie nazwy_zasobu zmienną ec2 zamiast używania zmiennej_docelowej

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

W przypadku prywatnych adresów IP:

destination_variable = private_ip_address

Niestety, widzę to samo zachowanie, a komentowanie zmiennej nazwa_hosta nie poprawia tego.
Todd Walton

Jednak .... Kilka razy zauważyłem, że zmiana pliku ini i ponowne uruchomienie ec2.py nie zwróci natychmiast poprawnych informacji. Dziwny AF, prawda? Ale po kilku próbach i wypróbowaniu go, po około 20 minutach nagle zaczął zwracać adresy IP kropkami zamiast podkreślników! Nie wiem.
Todd Walton

Czy wiesz, co mogę zrobić, jeśli chcę spełnić warunek? np. vpc_destination_variable: "{{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack

0

Miałem ten sam problem. Otrzymywałem adresy IP z podkreśleniami zamiast kropek. Ale już kilka razy zauważyłem, że zmiana pliku ini i ponowne uruchomienie ec2.py nie zwróci natychmiast poprawnych informacji. Kiedyś zmieniłem na private_ip_address i przez jakiś czas zwracał private_dns_name. Tym razem po zmianie na adres prywatny_ip i ponownym uruchomieniu go kilka razy - próbując i próbując - i po około 20 minutach nagle zaczął zwracać adresy IP kropkami zamiast podkreślników! Nie wiem. Dziwny AF, prawda?


Brzmi jak „problem” z buforowaniem. Czy próbowałeś zmienić parametr „cache_max_age” w ec2.ini?
malte

Prawdopodobnie masz całkowitą rację. Właściwie właśnie na to patrzyłem dzisiaj. Możesz uruchomić „./ec2.py --refresh-cache”.
Todd Walton
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.