Ich bin neu in Ansible und frage mich, wie ich das machen soll, da das Folgende nicht funktioniert hat
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Wo django_fixtures
ist meine Variable?
variables
command-line
command-line-arguments
ansible
ansible-playbook
Édouard Lopez
quelle
quelle
--extra-vars
Variablen die im Playbook definierten Variablen überschreiben.key=value
Syntax übergebene Werte werden als Zeichenfolgen interpretiert . Verwenden Sie das JSON-Format, wenn Sie etwas übergeben müssen, das keine Zeichenfolge sein sollte (Boolesche Werte, Ganzzahlen, Gleitkommazahlen, Listen usw.). Zum Beispiel:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
Andere Antworten geben an, wie die Befehlszeilenvariablen übergeben werden, nicht jedoch, wie auf sie zugegriffen werden soll. Wenn Sie dies also tun:
In Ihrer yml-Datei weisen Sie diese Variablen mit Gültigkeitsbereich zu, indem Sie Folgendes tun:
Eine Alternative zur Verwendung von Befehlszeilenargumenten besteht darin, Umgebungsvariablen zu verwenden, die bereits in Ihrer Sitzung definiert sind. Sie können diese in Ihren ansible-yml-Dateien wie folgt referenzieren:
quelle
lookup('env', SOMETHING)
ist der 12 Faktor angepasst.version: {{ version }}
ist falsch, wie das Definierenversion
von selbst.quelle
-e
Flagge ist die Kurzform von--extra-vars
--extra-vars "@some_file.json"
--extra-vars
Flag benötigen , um Variablen zu übergeben, die nicht in der Datei enthalten sind. Zum Beispiel--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
Sie können die
--extra-vars
Option verwenden. Siehe die Dokumentequelle
Aus irgendeinem Grund hat keine der oben genannten Antworten für mich funktioniert. Da ich in Ansbile 2.2.0 mehrere zusätzliche Vars an mein Playbook übergeben muss, habe ich es so zum Laufen gebracht (beachten Sie die Option -e vor jeder VAR):
quelle
-e
ist die Kurzform von--extra-vars
-e
Flagge angeben können-e "firstvar=false second_var=value2"
In der yml-Datei können Sie sie so verwenden
Auch
--extra-vars
und-e
gleich sind, können Sie einen von ihnen verwenden.quelle
Hier werden die Variablen mit den Namen 'pathoftsfiles' und 'folder' verwendet. Jetzt kann der Wert für diese Variable mit dem folgenden Befehl angegeben werden
Hinweis: Verwenden Sie keine Anführungszeichen, während Sie die Werte im Shell-Befehl an die Variable übergeben
quelle
quelle
Dies hat auch bei mir funktioniert, wenn Sie Shell-Umgebungsvariablen verwenden möchten:
ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_HOST={{ lookup('env', 'LDAP_HOST') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"
quelle
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
Sie können den obigen Befehl in den folgenden Playbooks verwenden.
quelle