Ich bin neu bei Ansible und frage mich, wie das geht, da das Folgende nicht funktionierte
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' Django_fixtures="tile_colors"
Wo Django_fixtures
meine Variable ist.
Beim Lesen der Dokumente finde ich den Abschnitt Übergeben von Variablen in der Befehlszeile , die dieses Beispiel ergeben:
ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
Weitere Beispiele zeigen, wie Sie aus JSON string (≥1.2
) oder Datei (≥1.3
) laden.
In anderen Antworten wird angegeben, wie die Befehlszeilenvariablen übergeben werden sollen, nicht jedoch, wie auf sie zugegriffen werden soll.
--extra-vars "version=1.23.45 other_variable=foo"
In Ihrer Yml-Datei weisen Sie diese den bereichsabhängigen Variablen zu, indem Sie Folgendes tun:
vars:
my_version: "{{ version }}"
my_other_variable: {{ other_variable }}
Eine Alternative zur Verwendung der Befehlszeilenargumente besteht darin, Umgebungsvariablen zu verwenden, die bereits in Ihrer Sitzung definiert sind. Sie können diese wie folgt in Ihren anpassbaren Yml-Dateien referenzieren:
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
Sie können die Option --extra-vars
verwenden. Siehe die Dokumente
Aus irgendeinem Grund funktionierte keine der obigen Antworten für mich. Da ich in Ansbile 2.2.0 mehrere zusätzliche Variablen an mein Playbook übergeben muss, habe ich es so zum Laufen gebracht.
ansible-playbook site.yaml -i hostinv -e firstvar=false -e 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 }}"
Außerdem sind --extra-vars
und -e
gleich. Sie können einen davon verwenden.
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`
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}}"
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. Der Wert für diese Variable kann jetzt 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, wenn Sie die Werte an die Variable im Shell-Befehl übergeben