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_fixturesist meine Variable?
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_fixturesist meine Variable?
Antworten:
Beim Lesen der Dokumente finde ich den Abschnitt Übergeben von Variablen in der Befehlszeile , der dieses Beispiel enthält:
ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
Andere Beispiele zeigen, wie aus einer JSON- Zeichenfolge (≥ 1.2) oder einer Datei (≥ 1.3) geladen wird.
key=valueSyntax ü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:
--extra-vars "version=1.23.45 other_variable=foo"
In Ihrer yml-Datei weisen Sie diese Variablen mit Gültigkeitsbereich zu, indem Sie Folgendes tun:
vars:
my_version: "{{ version }}"
my_other_variable: {{ other_variable }}
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:
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
lookup('env', SOMETHING)ist der 12 Faktor angepasst.
version: {{ version }}ist falsch, wie das Definieren versionvon selbst.
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
-eFlagge ist die Kurzform von--extra-vars
--extra-vars "@some_file.json"
--extra-varsFlag 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-varsOption verwenden. Siehe die Dokumente
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):
ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2
-eist die Kurzform von--extra-vars
-eFlagge angeben können
-e "firstvar=false second_var=value2"
ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"
In der yml-Datei können Sie sie so verwenden
---
arg1: "{{ var1 }}"
arg2: "{{ var2 }}"
Auch --extra-varsund -egleich sind, können Sie einen von ihnen verwenden.
s3_sync:
bucket: ansible-harshika
file_root: "{{ pathoftsfiles }}"
validate_certs: false
mode: push
key_prefix: "{{ folder }}"
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
sudo ansible-playbook multiadd.yml --extra-vars "pathoftsfiles=/opt/lampp/htdocs/video/uploads/tsfiles/$2 folder=nitesh"
Hinweis: Verwenden Sie keine Anführungszeichen, während Sie die Werte im Shell-Befehl an die Variable übergeben
ansible-playbook release.yml --extra-vars "username=hello password=bye"
#you can now use the above command anywhere in the playbook as an example below:
tasks:
- name: Create a new user in Linux
shell: useradd -m -p {{username}} {{password}}"
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') }}"
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
Sie können den obigen Befehl in den folgenden Playbooks verwenden.
---
- name: Service Status
gather_facts: False
tasks:
- name: Check Service Status (Linux)
shell: pgrep "{{ proc_name }}"
register: service_status
ignore_errors: yes
debug: var=service_status.rc`
--extra-varsVariablen die im Playbook definierten Variablen überschreiben.