2017-02-09 5 views
0

Я хочу иметь простое условие if else в шаблонах jinja ansibles. Для обычного питонаНеобязательные условные шаблоны

cluster_name+'A' if isCondition is True else cluster_name +'B' 

WORS замечательно, если определены следующие переменные:

isSingleNode = True 
cluster_name = 'example' 

В анзибль я вижу следующую ошибку:

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "AnsibleError: template error while templating string: no test named 'True'. String: {\n\n \"key\" : \"{{ groups[cluster_name+'_mn01' if isSingleNode is True else cluster_name + '_mn02'] }}\"\n}\n"} 

Вот минимальный пример:

file_1: переменные

--- 
isCondition: True 

file_2: playbook.yml

--- 
- hosts: all 
    tasks: 
    - include_vars: variables 
    - debug: msg=" condition is {{ isCondition }} with cluster_name {{ cluster_name }}" 

    - name: copy file 
     template: src="bare_cluster.bp.j2" dest={{ cluster_name }}_blueprint.json backup=yes 

file_4: инвентарь

[examplecluster:children] 
examplecluster_mn01 

[mn01:children] 
examplecluster_mn01 

[examplecluster_mn01] 
localhost ansible_connection=local 

file_5: bare_cluster.bp.j2

{ 

    "key" : "{{ groups[cluster_name+'_mn01' if isSingleNode is True else cluster_name + '_mn02'] }}" 
} 

команду выполнить минимальный пример является ansible-playbook -i inventory playbook.yml -e 'cluster_name=examplecluster'

+0

@downvoter объясните пожалуйста почему. –

+0

Вы не можете написать произвольный код python в ** jinja2 ** выражении. –

ответ

1

Вы попробовали?

{% if isCondition %} {{ cluster_name }} A {% else %} {{ cluster_name }} B {% endif %} 
Смежные вопросы