Geo*_*ler 1 python jinja2 ansible ansible-template ansible-2.x
我希望在ansibles jinja模板中有一个简单的if else else条件。对于普通的python
cluster_name+'A' if isCondition is True else cluster_name +'B'
Run Code Online (Sandbox Code Playgroud)
如果定义了以下变量,效果会更好:
isSingleNode = True
cluster_name = 'example'
Run Code Online (Sandbox Code Playgroud)
在Ansible中,我看到以下错误:
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"}
Run Code Online (Sandbox Code Playgroud)
这是一个最小的示例:
file_1:变量
---
isCondition: True
Run Code Online (Sandbox Code Playgroud)
文件_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
Run Code Online (Sandbox Code Playgroud)
file_4:库存
[examplecluster:children]
examplecluster_mn01
[mn01:children]
examplecluster_mn01
[examplecluster_mn01]
localhost ansible_connection=local
Run Code Online (Sandbox Code Playgroud)
档案5:bare_cluster.bp.j2
{
"key" : "{{ groups[cluster_name+'_mn01' if isSingleNode is True else cluster_name + '_mn02'] }}"
}
Run Code Online (Sandbox Code Playgroud)
执行最小示例的命令是 ansible-playbook -i inventory playbook.yml -e 'cluster_name=examplecluster'
你试过了吗?
{% if isCondition %} {{ cluster_name }} A {% else %} {{ cluster_name }} B {% endif %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7191 次 |
| 最近记录: |