我正在从ansible_facts
收集一些输出,并借助复制模块(内容和目标)将它们写到远程服务器上的文件中
如果某些项在服务器上不可用(例如服务器上不存在磁盘sdb),我需要写为NONE。
如果找不到磁盘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
答案 0 :(得分:1)
使用default过滤器。例如
- 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