wake-up-neo.net

Ansible Get Hostname wie im Inventar definiert

In meinem Inventar definiere ich Hosts wie folgt:

 [server1]
 141.151.176.223

Ich suche nach einer Variablen, die den server1-Namen beibehält, da ich damit den Hostnamen des Servers definiere.

inventory_hostname ist auf 141.151.176.223ansible_hostname eingestellt, und inventory_hostname_short ist auf 148 eingestellt.

Um dieses Problem zu umgehen, stelle ich meine eigene Variable folgendermaßen ein:

 [server1]
 141.151.176.223 hostname=server1

aber ich bin mit diesem Ansatz nicht zufrieden.

Irgendwelche Ideen?

4

Erklärung

Wenn die Inventardatei folgendermaßen definiert wurde:

[server1_group]
server1 ansible_Host=141.151.176.223

Dann können Sie zugreifen:

  • server1 mit dem inventory_hostname-Fakt;

  • 141.151.176.223 mit dem ansible_Host-Fakt;

  • server1_group mit group_names|first (group_names fact enthält eine Liste aller Gruppen, zu denen der Server gehört, first wählt das erste Element aus dieser Liste aus).

Unabhängig davon enthält ansible_hostname fact den Hostnamen, wie er auf dem Host selbst definiert ist (der Wert wird während der Faktenerfassung festgelegt).


Lösung

Sie sollten eine ansible_Host-Standarddeklaration verwenden, um auf die IP-Adresse des Ziels zu verweisen, und den Hostnamen des Inventars auf den Server festlegen, auf den Sie sich in Ansible-Playbooks beziehen möchten.

Insbesondere können Sie die Gruppendefinition ganz überspringen und nur Folgendes definieren:

server1 ansible_Host=141.151.176.223
10
techraf

Die [server1]-Deklaration ist der Name einer group , nicht eines Hosts (auch wenn Sie dieser Gruppe nur einen einzelnen Host zuweisen).

Da Ansible es ermöglicht, dass ein Host in mehreren Gruppen platziert wird, können Sie die Namen nur als Array abrufen: http://docs.ansible.com/ansible/latest/playbooks_variables.html#magic-variables-and-how- zu-access-information-about-other-hosts

Ich denke, die von Ihnen gefundene Problemumgehung ist der Weg, es sei denn, Sie können echte Hostnamen anstelle von IP-Adressen verwenden (DNS oder statische Hosts-Datei).

0
Costi Ciudatu