Ich möchte mit ansible einen Servercluster erstellen.
In einem Hauptspielbuch füge ich einige Unterspielbücher hinzu.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
In der Datei playbook_commandserver.yml erstelle ich den Befehlsserver (auf aws). Dann löse ich eine Rolle aus, die das set_fact
Modul verwendet, um sich den DNS-Namen des Befehlsservers zu merken:
- name: Get hostname of command server
shell: /usr/bin/host $(/usr/bin/curl -s http://ipecho.net/plain) | /usr/bin/awk '{print $5}' | /usr/bin/awk -F 'aws.com' '{print $1"aws.com"}'
register: cs
- name: Set hostname of command server as fact
set_fact: commandserver="{{ cs.stdout }}"
Die commandserver
Tatsache ist im selben Spiel verfügbar, aber nicht im selben Spielbuch. Ganz zu schweigen von dem playbook_agent.yml
, das später aufgenommen wird. Und genau dort müsste ich auf diese Befehlsserver-Tatsache zugreifen.
Wie setzt / speichert man also Variablen, die für den gesamten Ansible-Run gültig sind?
Ich habe Folgendes gefunden: /programming/26732241/ansible-save-registered-variable-to-file Für mich sieht dies jedoch nach einem hässlichen Hack aus.
Gibt es keine bessere Lösung für dieses Problem? Gibt es keine Möglichkeit, eine Variable festzulegen, die für den gesamten Ansible-Lauf gültig ist?