我有这个vars文件:
addvlan:
- vlan: pruebavlan
address: 192.168.10.0
mask: 25
gateway: ????
tag: 1917
我有这个JSON使用上述变种的变种:
"address": "{{address}}",
"mask": {{mask}},
"gateway": "{{gateway}}",
"tag": "{{tag}}",
我需要网关永远是地址的下一个IP。例如,在上述情况下,可能是192.168.10.1
你知道它是否可行或有任何办法吗?
答案 0 :(得分:1)
gateway: "{{ network_address | ipaddr('1') | ipaddr('address') }}"
答案 1 :(得分:1)
没有ipaddr
过滤器的解决方案:
{{ gateway.split('.')[:3] | join('.') + '.' + (gateway.split('.')[3] | int + 1) | string }}
但你不能这样做:
addvlan:
- vlan: pruebavlan
address: 192.168.10.0
mask: 25
gateway: "{{ << address manipulations here >> }}"
tag: 1917
这会给你递归错误,因为你试图定义addvlan.vlan
引用来自同一个字典的其他键的键。
请改为在JSON模板中进行操作:
...
"address": "{{ address }}",
"mask": "{{ mask }}",
"gateway": "{{ address.split('.')[:3] | join('.') + '.' + (address.split('.')[3] | int + 1) | string }}",
"tag": "{{ tag }}",
...