繁体   English   中英

具有未定义变量的Ansible模板

[英]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.

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