- roles
- consul
- vars/main.yml
В main.yml использую:
consul_is_server: {{ true if consul_server is defined else false }}
playbook:
- hosts: consul-server
roles:
- consul
vars:
consul_server: true
Ошибка:
consul_is_server: {{ "true" if consul_server is defined else "false" }}
^
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:
with_items:
- {{ foo }}
Should be written as:
with_items:
- "{{ foo }}"
Сделал так:
consul_is_server: >
{{ true if consul_server is defined and consul_server==true else false }}
Но тогда consul_is_server будет строкой: "False" или "True".
И тогда в шаблонах приходится кастить в bool
"server": {{ "true" if consul_is_server |bool else "false" }}
Можно как-то в vars написать так проверку условий, чтоб потом в шаблоне кастить не пришлось?
Ответ
Используйте ternary
Документация: http://docs.ansible.com/playbooks_filters.html
Пример:
---
# https://ru.stackoverflow.com/questions/470202/
- name: https://ru.stackoverflow.com/questions/470202/
hosts: test
vars:
str1: "asdf1"
str2: "asdf2"
cond1: True
cond2: False
result1: "{{ cond1 | ternary(str1, str2) }}"
result2: "{{ cond2 | ternary(str1, str2) }}"
tasks:
- name: debug result1
debug: msg="{{ result1 }}"
connection: local
- name: debug result2
debug: msg="{{ result2 }}"
connection: local
Вывод:
$ ansible-playbook -i hosts_debug sample_ru_470202.yml
PLAY [collect info] ************************************************************
TASK [setup] *******************************************************************
ok: [myserver1]
TASK [debug result1] ***********************************************************
ok: [myserver1] => {
"msg": "asdf1"
}
TASK [debug result2] ***********************************************************
ok: [myserver1] => {
"msg": "asdf2"
}
PLAY RECAP *********************************************************************
myserver1 : ok=3 changed=0 unreachable=0 failed=0
PS Более сложный пример вот тут сам спросил сегодня: Составная переменная в ternary j2-шаблона ansible
Комментариев нет:
Отправить комментарий