当特定项目在ansible_facts中不可用时如何编写自定义消息(例如磁盘 SDB 不可用)



我正在从ansible_facts收集一些输出,并在复制模块(内容和目标(的帮助下将它们写入远程服务器上的文件中 如果某些项目在服务器上不可用,我需要写为 NONE(例如服务器上不存在磁盘 sdb(。

如果找不到磁盘sdb,如何写入 NONE?

我的剧本如下

- copy:
content: |
Memory = {{ ansible_memtotal_mb }}
Size of disk sda =  {{ ansible_devices.sda.size  }}
dest: /tmp/test

但是,如果磁盘SDB在服务器上不可用,如何检查并编写如下所示的自定义消息

Size of disk sdb =  NONE

使用默认过滤器。例如

- copy:
content: |
Memory = {{ ansible_memtotal_mb }}
Size of disk sda =  {{ ansible_devices.sda.size  }}
Size of disk sdb =  {{ ansible_devices.sdb.size|default('NONE')  }}
dest: /tmp/test

一般来说,Jinja2条件if-else-endif也应该做这项工作

- copy:
content: |
Memory = {{ ansible_memtotal_mb }}
Size of disk sda =  {{ ansible_devices.sda.size }}
{% if ansible_devices.sdb.size is defined %}
Size of disk sdb =  {{ ansible_devices.sdb.size }}
{% else %}
Size of disk sdb =  NONE
{% endif %}
dest: /tmp/test

请参阅 jinja2 模板中的"if"语句。

最新更新