ansible - 当 ansible_facts 中的特定项目不可用时如何编写自定义消息(比如磁盘 sdb 不可用)
问题描述
我正在从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
解决方案
使用默认过滤器。例如
- 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
推荐阅读
- python-3.x - 如何根据熊猫中列的条件进行聚合?
- django - 如果提供了额外的字段,Django 使表单测试无效
- unity3d - 如何创建没有轮廓的滑块?
- javascript - 使用 touchmove 和 touchend 在移动设备上单击链接和网站页面
- module - 编辑:Wasm/WASI 会通过消息传递实现流程吗?
- python - How to use SQlite NULL inside function default parameter?
- swift - Firebase Crashlytics“加载您的问题时出错”和上传符号脚本错误 - 使用 XCode 的 iOS 应用程序
- c++ - 使用 new 运算符在 C++ 中创建多维数组的简单方法
- kubernetes - 如何在特定时间后强制将 pod 设置为失败?
- php - 无法从 Laravel 7 中的控制器获取数据