我有以下数据结构:
static_dhcp_groups:
'site hypervisors':
- hostname: "hypervisor-1"
mac_address: "f0:1f:af:ce:60:d9"
ip_address: "192.168.10.1"
- hostname: "hypervisor-2"
mac_address: "f0:1f:af:ce:60:da"
ip_address: "192.168.10.2"
'site workstations':
- hostname: "workstation-1"
mac_address: "52:54:00:cb:93:ac"
ip_address: "192.168.10.50"我想要创建一个jinja模板,它将生成一个文件,如下所示:
# site hypervisors
group {
host hypervisor-1 {
hardware ethernet f0:1f:af:ce:60:d9;
fixed-address 192.168.10.1;
}
host hypervisor-2 {
hardware ethernet f0:1f:af:ce:60:da;
fixed-address 192.168.10.2;
}
}
# site workstations
group {
host workstation-1 {
hardware ethernet 52:54:00:cb:93:ac;
fixed-address 192.168.10.50;
}
}我正在努力循环数据以获得我需要的结果。到目前为止,我的jinja2模板如下所示:
{% for dhcp_group in static_dhcp_groups %}
# {{ dhcp_group.key }}
group {
{% for dhcp_host in dhcp_group %}
host {{ dhcp_host.key.hostname }} {
hardware ethernet {{ dhcp_host.key.mac_address }};
fixed-address {{ dhcp_host.key.ip_address }};
}
{% endfor %}
}
{% endfor %}我收到的错误消息如下:
TASK [generate the file.] ****************************************************************************************************************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.errors.AnsibleUndefinedVariable: 'ansible.parsing.yaml.objects.AnsibleUnicode object' has no attribute 'key'
fatal: [localhost]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'ansible.parsing.yaml.objects.AnsibleUnicode object' has no attribute 'key'"}我很难弄清楚该用什么来提取单个的字典元素。它应该是dhcp_host.key.hostname,dhcp_host.value.hostname,dhcp_host.item.hostname,还是与[]不同的?我完全被困住了。
发布于 2022-10-14 22:25:26
我朋友帮我修的。jinja2模板应该如下所示:
{% for dhcp_group in static_dhcp_groups %}
# {{ dhcp_group }}
group {
{% for dhcp_host in static_dhcp_groups[dhcp_group] %}
host {{ dhcp_host.hostname }} {
hardware ethernet {{ dhcp_host.mac_address }};
fixed-address {{ dhcp_host.ip_address }};
}
{% endfor %}
}
{% endfor %}https://stackoverflow.com/questions/74075273
复制相似问题