2017-02-09 3 views
0

Ich möchte eine einfache wenn sonst Bedingung in ansibles jinja Vorlagen haben. Für Ebene Pythonanssible bedingte Vorlagen

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

wors groß, wenn die folgenden Variablen definiert:

isSingleNode = True 
cluster_name = 'example' 

In ansible ich die folgende Fehlermeldung angezeigt:

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"} 

Hier ist ein minimales Beispiel:

Datei_1: Variablen

--- 
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 

DATEI_4: Inventars

[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'] }}" 
} 

Befehl, um die minimale Beispiel auszuführen ist ansible-playbook -i inventory playbook.yml -e 'cluster_name=examplecluster'

+0

@ downvoter bitte erklären, warum. –

+0

Sie können in ** jinja2 ** Ausdruck keinen beliebigen Python-Code schreiben. –

Antwort

1

Haben Sie es versucht?

{% if isCondition %} {{ cluster_name }} A {% else %} {{ cluster_name }} B {% endif %}