Ich verwende das ec2-Modul ansible-playbook
, um eine Variable für den Inhalt einer Datei festzulegen . Hier ist, wie ich es gerade mache.
- Var mit dem Dateinamen
- Shell-Aufgabe in
cat
die Datei - Verwenden Sie das Ergebnis von
cat
, um an das ec2-Modul zu übergeben.
Beispielinhalt meines Spielbuchs.
vars:
amazon_linux_ami: "ami-fb8e9292"
user_data_file: "base-ami-userdata.sh"
tasks:
- name: user_data_contents
shell: cat {{ user_data_file }}
register: user_data_action
- name: launch ec2-instance
local_action:
...
user_data: "{{ user_data_action.stdout }}"
Ich gehe davon aus, dass es einen viel einfacheren Weg gibt, dies zu tun, aber ich konnte ihn beim Durchsuchen von Ansible-Dokumenten nicht finden.
ansible
ansible-playbook
TesterJeff
quelle
quelle
Antworten:
Sie können mit Lookups in ansible , um den Inhalt einer Datei, zB bekommen
Vorsichtsmaßnahme: Diese Suche funktioniert mit lokalen Dateien, nicht mit Remote-Dateien.
Hier ist ein vollständiges Beispiel aus den Dokumenten :
quelle
cat
Befehl im Beispiel von @ TesterJeff auf dem Remotecomputer ausgeführt wird.Sie können das Slurp-Modul verwenden: (Vielen Dank an @mlissner für den Vorschlag)
quelle
Sie können das Abrufmodul verwenden, um Dateien von Remote-Hosts auf lokale zu kopieren, und das Suchmodul , um den Inhalt der abgerufenen Dateien zu lesen.
quelle
Die Suche funktioniert nur auf localhost. Wenn Sie Variablen aus einer Variablendatei abrufen möchten, die Sie remote verwendet haben, verwenden Sie include_vars :
{{ varfile }}
. Der Inhalt von{{ varfile }}
sollte ein Wörterbuch des Formulars sein{"key":"value"}
. Sie werden feststellen, dass ansible Ihnen Probleme bereitet, wenn Sie ein Leerzeichen nach dem Doppelpunkt einfügen.quelle
include_vars
Funktioniert lokal auf dem Steuercomputer, nicht mit Dateien auf dem Ziel.