Как передать массив yaml в --extra-vars
в Ansible playbook. Невозможная документация не объявляет его синтаксис, и я не могу найти это на любом интернет-ресурсе.Пропустить массив в --extra-vars - Ansible
Я имею в виду, если у меня есть сборник пьес:
---
- hosts: {{hostName}}
- remote_user: admin
...
Тогда я должен назвать мой сборник пьес, как
ansible-playbook DeployWar.yml --extra-vars="hostName=tomcat-webApp"
Но я хочу, чтобы запустить этот сборник пьес на двух серверах говорят tomcat-webApp
и tomcat-all
, и я хочу контролировать его из стороны, то есть используя --extra-vars
. То, что я постарался сделать, это:
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}]"
Но во всех случаях playbook не объявляет синтаксическую ошибку в моем вызове. Любая помощь приветствуется.
Всякий раз, когда я работаю с JSON, будь то в экстра-Пере или в другом месте я нахожу использование http://jsonlint.com быть спасателем. Вставив {test_list: [1,2,3]} на этот сайт, вы можете быстро проверить, что ваш JSON синтаксически корректен. Это особенно полезно при передаче нескольких переменных в Ansible или при наличии любого другого сложного JSON, с которым вы работаете. –
Этот ответ на самом деле устарел - использование '--extra-vars = '{test_list: [1,2,3]}'' приведет к ошибке 'ERROR: Ожидание имени свойства, заключенного в двойные кавычки: строка 1 столбец 2 (char 1) '(по крайней мере, с 1.9.4, который я использую), потому что он недействителен JSON. Правильной версией будет '--extra-vars = '{" test_list ": [1,2,3]}'' – iquito
обновлено форматирование дополнительных кадров, спасибо! – jarv