Я хотел бы запускать конкретную задачу только в том случае, если в командной строке указан флаг. Например, я хотел бы запустить команду ansible-playbook со следующим: --extra-vars "composer-install=true"
. Мне как-то нужна задача, которая проверяет, установлена ли переменная composer-install
, и если она установлена и равна истине, запускает данную задачу, которая запускает composer install
. Я не совсем уверен, как сделать последнюю часть.
Как добавить необязательные переменные в командную строку и проверить их наличие в плейбуке?
Ответы (2)
Причина, по которой вы получаете сообщение об ошибке, заключается в том, что вы обращаетесь к переменной, которая никогда не устанавливалась. Похоже, вы используете существование extra-var как указание на то, что вы хотите, чтобы установка композитора выполнялась (т.е. вы никогда не передаете --extra-vars="composer-install=false"), поэтому вы можете использовать is defined
:
- shell: composer install
when: composer-install is defined
Но переменные можно передавать через фильтры, что может быть полезно в этом случае, потому что он по-прежнему позволяет вам передавать true/false, не определяя переменную вообще, все еще работает:
- shell: composer install
when: composer-install|default(false)
Еще немного об условных выражениях можно найти здесь: http://docs.ansible.com/playbooks_conditionals.html
Фильтры jinja2 очень полезны по нескольким причинам, поэтому подробнее о них здесь: http://docs.ansible.com/playbooks_variables.html#jinja2-filters
И, наконец, полный список встроенных фильтров jinja2 здесь: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters
ansible_fact * 2
, а ansible_fact также является строкой. Я не смог найти его в документации.
- person timetofly; 06.11.2014
Я думаю, вы ищете параметр when.
- name: optional composer install
shell: composer install
when: composer-install
composer-install
, установив для нее значение false. По-видимому, переменные командной строки перезаписывают переменные, установленные в playbook. Ваше здоровье.
- person timetofly; 06.11.2014