Ansible Jinja2生成Netplan配置时子键缩进异常问题求助
Ansible生成Netplan配置的缩进与空行问题
我使用Ansible Playbook结合Jinja2模板,通过变量生成Netplan配置文件,但最终生成的配置存在子键缩进不符合预期、多余空行的问题。
Playbook任务
- name: Configuring Netplan template: src: config.yaml.j2 dest: "/some_folder/some_file.yaml" when: my_conf != []
变量定义
my_conf变量
my_conf: network: ethernets: eno1: "{{ servers[inventory_hostname].eno1 }}" eno2: "{{ servers[inventory_hostname].eno2 }}" eno3: "{{ servers[inventory_hostname].eno3 }}" eno4: "{{ servers[inventory_hostname].eno4 }}" vlans: "{{ servers[inventory_hostname].vlans }}" version: 2
servers变量
servers: localhost: eno1: dhcp4: true match: macaddress: XX:XX:XX:XX:XX set-name: eno1 eno2: dhcp4: true eno3: dhcp4: true eno4: addresses: - 127.3XX.XXX.XXX vlans: 192.168.XXX.XXX: eno1: addresses: - 192.168.XXX.XXX/XX eno2: addresses: - 192.168.XXX.XXX/XX eno3: addresses: - 127.2XX.XXX.XXX gateway4: 127.3XX.XXX.XXX nameservers: addresses: - 127.4XX.XXX.XXX - 127.5XX.XXX.XXX search: - myserver.com eno4: addresses: - 192.168.XXX.XXX/XX vlans: eno1.101: id: 101 link: eno1 addresses: - 192.168.XXX.XXX/X
Jinja2模板(config.yaml.j2)
network: ethernets: eno1: {{ my_conf['network']['ethernets']['eno1']|to_nice_yaml|indent(6, true) }} eno2: {{ my_conf['network']['ethernets']['eno2']|to_nice_yaml|indent(6, true) }} eno3: {{ my_conf['network']['ethernets']['eno3']|to_nice_yaml|indent(6, true) }} eno4: {{ my_conf['network']['ethernets']['eno4']|to_nice_yaml|indent(6, true) }} {% if my_conf['network']['vlans'] is defined and my_conf['network']['vlans']|d('')|length > 0 %} vlans: {{ my_conf['network']['vlans']|to_nice_yaml|indent(6, true) }} {% endif %} version: {{ my_conf['network']['version']|default('2') }}
生成的不符合预期的配置输出
network: ethernets: eno1: dhcp4: true match: macaddress: XX:XX:XX:XX:XX set-name: eno1 eno2: dhcp4: true eno3: dhcp4: true eno4: addresses: - 127.3XX.XXX.XXX version: 2
内容的提问来源于stack exchange,提问作者Taylan Yuksel
相关产品推荐
相关产品推荐

