Ansible Dynamic Inventory - Generieren Sie Inventar mit IP-Adressen unter einem bestimmten Tag mit Unterstrich anstelle von Punkt

11

Ich bin neu bei Ansible. Wenn ich ec2.pydynamisches Inventar zum Generieren von Inventar verwende, werden die Ergebnisse nach Abschluss der Ausführung des Playbooks als Liste der IP-Adressen unter einem bestimmten Tag mit Unterstrich anstelle von Punkt angezeigt. Ich möchte beispielsweise ein Playbook für Instanzen mit einem bestimmten Tag ausführen. Ich frage mich, wie andere Personen mit IP-Adressen arbeiten.

---
- 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 

Für die private Adresse ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

Die Ergebnisse von ec2.py:

 "tag_test_staging": [
    "10_80_20_47"
  ],

Für die öffentliche Ansprache ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

Die Ergebnisse von ec2.py:

 "tag_test_staging": [
    "52_28_11_11"
  ],
Berlin
quelle
Warum ist es für Sie wichtig, dass der Name, den das Skript jedem Host gibt, Unterstriche für nicht alphanumerische Zeichen enthält?
Assaf Lavie
Dies scheint eine sehr spezifische werkzeugzentrierte Frage zu sein. Dafür gibt es ServerFault und das dortige Thema serverfault.com/help/on-topic . Ich bin mir nicht sicher, wie aktuell das Thema hier ist, wenn überhaupt.
Evgeny
@Evgeny, nicht sicher, ob ich verstehe, was du meinst, was bringt es, http://devops.stackexchange.comwenn du keine Fragen stellst ? ist es nicht DevOps Frage?
Berlin

Antworten:

5

Es funktioniert, wenn ich die Variable hostname_variable auskommentiere, da der Inventarname mit einer ec2-Variablen überschrieben werden kann, anstatt die Zielvariable zu verwenden

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

Für private IPs:

destination_variable = private_ip_address
Berlin
quelle
Leider sehe ich das gleiche Verhalten und das Auskommentieren von hostname_variable korrigiert es nicht.
Todd Walton
Allerdings ... Ich habe jetzt mehrmals bemerkt, dass das Ändern der INI-Datei und das erneute Ausführen von ec2.py nicht sofort die richtigen Informationen zurückgibt. Seltsamer AF, richtig? Aber nach mehrmaligem Ausprobieren und Ausprobieren begann es nach etwa 20 Minuten plötzlich, IP-Adressen mit Punkten anstelle von Unterstrichen zurückzugeben! Ich weiß nicht.
Todd Walton
Wissen Sie, was ich tun kann, wenn ich eine Bedingung stellen möchte? zB vpc_destination_variable: "{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack
0

Ich hatte das gleiche Problem. Ich bekam IP-Adressen mit Unterstrichen anstelle von Punkten zurück. Aber ich habe jetzt schon mehrmals bemerkt, dass das Ändern der INI-Datei und das erneute Ausführen von ec2.py nicht sofort die richtigen Informationen zurückgibt. Einmal wechselte ich zu private_ip_address und es gab für eine Weile immer wieder private_dns_name zurück. Dieses Mal, nachdem es zu private_ip_address gewechselt und mehrmals erneut ausgeführt wurde - es versucht und versucht und versucht -, begann es nach ungefähr 20 Minuten plötzlich, IP-Adressen mit Punkten anstelle von Unterstrichen zurückzugeben! Ich weiß nicht. Seltsamer AF, richtig?

Todd Walton
quelle
Klingt nach einem Caching-Problem. Haben Sie versucht, den Parameter 'cache_max_age' in ec2.ini zu ändern?
Malte
Du hast wahrscheinlich vollkommen recht. Ich habe mir das heute eigentlich nur angesehen. Sie können "./ec2.py --refresh-cache" ausführen.
Todd Walton