Vorrei eseguire una determinata attività solo se nella riga di comando è presente un flag. Ad esempio, vorrei eseguire il comando ansible-playbook con il seguente: --extra-vars "composer-install=true"
. In qualche modo avrei bisogno di un'attività che controlli se è impostata la variabile composer-install
e se impostata e uguale a true, eseguire l'attività specificata che esegue composer install
. Non sono abbastanza sicuro di come fare quell'ultima parte.Come aggiungere variabili opzionali nella riga di comando ansible e verificare la loro esistenza nel playbook?
risposta
Il motivo per cui si verifica un errore è perché si sta accedendo a una variabile che non è mai stata impostata. Sembra che tu stia usando l'esistenza di extra-var come un'indicazione che vuoi che l'installazione di Composer venga eseguita (cioè non passi mai --extra-vars = "compositore-installazione = falso"), quindi potresti andare con is defined
:
- shell: composer install
when: composer-install is defined
Ma le variabili possono essere passati attraverso i filtri, che può essere utile per questo caso, perché permette ancora di passare true/false pur non definendo la variabile del tutto funziona ancora:
- shell: composer install
when: composer-install|default(false)
Altri servizi di assistenza sono disponibili qui: http://docs.ansible.com/playbooks_conditionals.html
I filtri Jinja2 sono molto utile per più di una ragione, quindi più su quelli qui: http://docs.ansible.com/playbooks_variables.html#jinja2-filters
E infine la lista completa di built-in filtri Jinja2 qui: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters
Penso che stiate cercando il when parameter.
- name: optional composer install
shell: composer install
when: composer-install
Grazie, questo mi ha fatto nella giusta direzione. Solo facendo ciò che hai fatto si è verificato un errore. La soluzione era anche aggiungere una sezione "vars:" al playbook e aggiungere la variabile 'composer-install', impostandola su" false ". Apparentemente le variabili della riga di comando sovrascrivono le variabili impostate nel playbook. Saluti. –
- 1. Override ospita variabile Ansible playbook dalla riga di comando
- 2. Come posso passare una variabile ad un playbook ansibile nella riga di comando?
- 3. Ansible porto cambiamento ssh nel playbook
- 4. È possibile definire le variabili globali di Playbook in Ansible?
- 5. variabili di registro in loop in un Ansible Playbook
- 6. Esecuzione di ansible-playbook utilizzando l'API Python
- 7. Come testare il playbook Ansible usando Docker
- 8. Ansible: Posso eseguire il ruolo dalla riga di comando?
- 9. Come scrivere variabile dinamica in Ansible playbook
- 10. Ansible: il passaggio delle variabili valutate include
- 11. utente vs sudo vs SUDO_USER nel Playbook ansible
- 12. Esegui ricciolo -X con playbook ansible
- 13. Controlla la versione Ansible dall'interno di una playbook
- 14. Variabili di scrittura Ansible nel file YAML
- 15. Accoda a GNU crea variabili tramite la riga di comando
- 16. Ansible: Store stdout del comando nella nuova variabile?
- 17. accesso variabili variabili nidificate in ansible
- 18. clonare un ramo specifico da git attraverso la playbook ansible
- 19. C++ - variabili temporanee e la loro vita
- 20. È possibile ottenere il nome utente dalla riga di comando
- 21. Ansible - Come eseguire sequenzialmente il playbook per ogni host
- 22. avviare le istanze AWS smesso di usare playbook ansible
- 23. debug di C# nella riga di comando
- 24. Come aggiungere una chiave/valore a una parola in un playbook ansible, condizionale
- 25. Ansible: ansible_user in inventory vs remote_user in playbook
- 26. Ansible - Raccolta di fatti con filtro all'interno di un Playbook
- 27. Ansible: numero di host nel gruppo
- 28. SQLCMD, variabili e script della riga di comando: setvar
- 29. Limitare in sicurezza i playbook Ansible su una singola macchina?
- 30. riga di comando openssl per verificare la firma
Grazie per la risposta informativa, anche dopo aver selezionato un'altra soluzione come risposta! –
In realtà, mentre sono qui, posso chiedere come usare correttamente i filtri jinja2 per convertire da stringa a intero e fare moltiplicazione? Ad esempio, ho un modello in cui voglio impostare una variabile su 'ansible_fact * 2', e ansible_fact è anche una stringa. Non riuscivo a trovarlo nella documentazione. –
C'è il filtro "int", e sembra funzionare (ho dovuto testarlo da solo): - debug: msg = {{'2' | int * 2}} –