【发布时间】:2019-04-23 10:54:29
【问题描述】:
我正在尝试创建字典。使用 var 时,事情按预期工作。但是 Set_fact 它就像被忽略的东西,我无法隔离。
阅读 Jinja2 手册,多次迭代
---
- hosts: localbox gather_facts: false
vars:
app_servers: 5
ipaddress_base: "192.168.0"
rmi_portbase: 10000
host_info: |
{% set res = [] -%}
{%- for number in range(1,app_servers + 1) -%}
{% set ignored = res.extend([{
'hostname': 'app' + number|string,
'ipaddress': ipaddress_base + '.' + number|string,
'rmi_port': rmi_portbase|int + ( number * 10)
}]) -%}
{%- endfor %}
{{ res }}
tasks:
- name: thing
set_fact:
thing2: "{% set res = [] -%}
{%- for number in range(1,app_servers + 1) -%}
{% set ignored = res.extend([{
'hostname': 'app' + number|string,
'ipaddress': ipaddress_baase + '.' + number|string,
'rmi_port': rmi_portbase|int + ( number * 10)
}]) -%}
{%- endfor %}
{{ res }}"
- debug: var=host_info[0].hostname
- debug: var=thing2[0]
我期望来自 thing2 的类似 host_info 的结果。
TASK [debug] *******************************************************************
ok: [localhost] => {
"host_info[0].hostname": "app1"
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"thing2[0]": " "
}
【问题讨论】:
标签: ansible jinja2 ansible-facts