繁体   English   中英

在Jinja2模板中添加Ansible变量

[英]Add up Ansible variable in Jinja2 template

我有这个vars文件:

addvlan:
 - vlan: pruebavlan
   address: 192.168.10.0
   mask: 25
   gateway: ????
   tag: 1917

而且我有使用以上vars的vars的JSON:

  "address": "{{address}}",
  "mask": {{mask}},
  "gateway": "{{gateway}}",
  "tag": "{{tag}}",

我需要网关始终使用该地址的下一个IP。 例如,在上述情况下,可能是192.168.10.1

您知道这是否可行或有任何方法吗?

看看ipaddr过滤器

gateway: "{{ network_address | ipaddr('1') | ipaddr('address') }}"

不带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 }}",
  ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM