Come posso passare l'array yaml a --extra-vars
in un libro di testo di Ansible. La documentazione di Ansible non dichiara la sua sintassi né posso trovarla su nessuna risorsa internet.Passa array in --extra-vars - Ansible
voglio dire se ho un playbook:
---
- hosts: {{hostName}}
- remote_user: admin
...
allora dovrei chiamare il mio playbook come
ansible-playbook DeployWar.yml --extra-vars="hostName=tomcat-webApp"
Ma voglio eseguire questo playbook su due server dire tomcat-webApp
e tomcat-all
, e voglio controllarlo dal lato esterno, ovvero utilizzando --extra-vars
. Quello che ho cercato di fare è:
ansible-playbook DeployWar.yml --extra-vars="hostName=[tomcat-webApp, tomcat-all]"
ansible-playbook DeployWar.yml --extra-vars="hostName={tomcat-webApp, tomcat-all}"
ansible-playbook DeployWar.yml --extra-vars="[{hostName: tomcat-webApp}, {hostName: tomcat-all}]"
Ma in tutti i casi il playbook fallisce dichiarando un errore di sintassi nella mia chiamata. Qualsiasi aiuto apprezzato.
Ogni volta che sto lavorando con JSON, sia in extra-Vars o altrove Trovo l'uso di http://jsonlint.com essere un salvagente. Incollando {test_list: [1,2,3]} in quel sito puoi verificare rapidamente che il tuo JSON sia sintatticamente corretto. È particolarmente utile quando si passano più variabili ad Ansible o quando si ha un altro JSON complesso con cui si sta lavorando. –
Questa risposta è in realtà obsoleta - l'uso di '--extra-vars = '{test_list: [1,2,3]}'' porterà all'errore 'ERRORE: nome della proprietà in attesa racchiuso tra virgolette: riga 1 colonna 2 (char 1) '(almeno con 1.9.4, che sto usando), perché non è valido JSON. La versione corretta sarebbe '--extra-vars = '{" test_list ": [1,2,3]}'' – iquito
ha aggiornato la formattazione extra-vars, grazie! – jarv