jinja2文件
modules:{% for item in ipmi_nodes %}{{ item.ip }} :user: "{{ item.user | default("root") }}"pass: "{{ item.pass | default("99cloud") }}"driver: "{{ item.driver | default("LAN_2_0") }}"privilege: "{{ item.privilege | default("admin") }}"collectors: {{ item.collectors | default(["bmc", "ipmi", "chassis", "dcmi"]) }}{% endfor %}
yaml文件
---ipmi_nodes:- ip: 172.16.140.202- ip: 172.16.140.203- ip: 192.168.2.105pass: "Huawei12$#"collectors: "['dcmi', 'ipmi']"
yaml文件作为数据源输入,jinja按照jinja2文件格式渲染数据,生成下面的文件
modules:172.16.140.202 :user: "root"pass: "99cloud"driver: "LAN_2_0"privilege: "admin"collectors: ['bmc', 'ipmi', 'chassis', 'dcmi']172.16.140.203 :user: "root"pass: "99cloud"driver: "LAN_2_0"privilege: "admin"collectors: ['bmc', 'ipmi', 'chassis', 'dcmi']192.168.2.105 :user: "root"pass: "Huawei12$#"driver: "LAN_2_0"privilege: "admin"collectors: ['dcmi', 'ipmi']
对于collectors的渲染,需要数据格式为字符串,如 "strings" ,然后将 ['dcmi', 'ipmi'] 以jinja2文件对应的格式 collectors: {{ item.collectors | default(["bmc", "ipmi", "chassis", "dcmi"]) 渲染成 collectors: ['dcmi', 'ipmi']
以下格式如何渲染呢?
- ip: 192.168.2.105pass: "Huawei12$#"collectors:- ipmi- dcmi
包含unicode字符串默认渲染带 u
yaml文件
source_index: [ifIndex]
配置一
jinja2文件
source_index: {{ item }}
output:
source_index: [u'ifIndex']
配置二
jinja2文件
source_index: [{{ item | list | join('\',\'') }}
output:
source_index: [ifIndex]
