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.