Sono nuovo di risposta e mi chiedo come farlo poiché il seguente non ha funzionato
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Dov'è la django_fixtures
mia variabile.
Sono nuovo di risposta e mi chiedo come farlo poiché il seguente non ha funzionato
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Dov'è la django_fixtures
mia variabile.
Risposte:
Leggendo i documenti trovo la sezione Passaggio di variabili sulla riga di comando , che fornisce questo esempio:
ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
Altri esempi dimostrano come caricare dalla stringa JSON (≥ 1.2
) o dal file (≥ 1.3
)
key=value
sintassi sono interpretati come stringhe . Utilizzare il formato JSON se è necessario passare qualcosa che non dovrebbe essere una stringa (booleani, numeri interi, float, elenchi ecc.). Ad esempio:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
Altre risposte indicano come passare le variabili della riga di comando ma non come accedervi, quindi se lo fai:
--extra-vars "version=1.23.45 other_variable=foo"
Nel tuo file yml li assegni a variabili rispondibili con ambito facendo qualcosa del tipo:
vars:
my_version: "{{ version }}"
my_other_variable: {{ other_variable }}
Un'alternativa all'utilizzo di args a riga di comando è quella di utilizzare variabili ambientali che sono già definite all'interno della sessione, è possibile fare riferimento a questi all'interno dei tuoi file yml ansible come questo:
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
lookup('env', SOMETHING)
corrisponde al fattore 12.
version: {{ version }}
è sbagliato, come definire version
da solo.
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
-e
bandiera è la forma abbreviata di--extra-vars
--extra-vars "@some_file.json"
--extra-vars
flag per passare le variabili non presenti nel file. Ad esempio--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
Puoi usare l' --extra-vars
opzione. Vedi i documenti
Per qualche motivo nessuna delle risposte sopra ha funzionato per me. Dato che ho bisogno di passare diversi parametri extra sul mio playbook in Ansbile 2.2.0, ecco come ho fatto funzionare (notare l'opzione -e prima di ogni var):
ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2
-e
è la forma abbreviata di--extra-vars
-e
bandiera
-e "firstvar=false second_var=value2"
ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"
Nel file yml puoi usarli in questo modo
---
arg1: "{{ var1 }}"
arg2: "{{ var2 }}"
Inoltre, --extra-vars
e -e
sono uguali, puoi usarne uno.
s3_sync:
bucket: ansible-harshika
file_root: "{{ pathoftsfiles }}"
validate_certs: false
mode: push
key_prefix: "{{ folder }}"
qui vengono utilizzate le variabili denominate 'pathoftsfiles' e 'folder'. Ora il valore di questa variabile può essere dato dal comando seguente
sudo ansible-playbook multiadd.yml --extra-vars "pathoftsfiles=/opt/lampp/htdocs/video/uploads/tsfiles/$2 folder=nitesh"
Nota: non utilizzare le virgolette durante il passaggio dei valori alla variabile nel comando shell
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}}"
Questo ha funzionato anche per me se si desidera utilizzare le variabili di ambiente shell:
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"
Puoi usare il comando sopra nei playbook sottostanti.
---
- 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-vars
sostituiranno le variabili definite all'interno del playbook.