[英]Ansible templates with undefined variables
我有一个文件,其中包含我在剧本中使用的变量:
net_interfaces:
...
- name: "eth0"
ip: "192.168.1.100"
mask: "255.255.255.0"
gateway: "192.168.1.1"
...
我想使用此变量部署一些配置,例如ifcfg-eth0 :
DEVICE={{ item.name }}
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR={{ item.ip }}
NETMASK={{ item.netmask }}
GATEWAY={{ item.gateway }}
但有时没有项目的 网关变量,在这种情况下,我想删除字符串
GATEWAY={{ item.gateway }}
从目标计算机上的此配置文件中。 如何在不为特定主机创建其他任务的情况下实现此目标?
添加条件:
{% if item.gateway is defined %}
GATEWAY={{ item.gateway }}
{% endif %}
另一种(更好的方法)是使用“默认”过滤器,因为在这种情况下,我们可以检查是否定义了某些变量,如果没有定义,则将其设置为默认值。 例:
{{ my_string_value | default("awesome") }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.