我正在从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"语句。