ansible - 如果服务器上不存在磁盘 sdb,我如何显示类似“磁盘不存在”的消息
问题描述
如果服务器上不存在磁盘 sdb,我如何显示类似“磁盘不存在”的消息。
我尝试了以下事情,但没有奏效。
- debug:
msg: "disk does not exist"
when: ansible_devices != "sdb"
- debug:
msg: "disk does not exist"
when: item.key != "sdb"
with_dict: "{{ ansible_devices }}"
- debug:
msg: "disk does not exist"
when: ansible_devices.sdb == "false"
谢谢,
解决方案
ansible_devices
是设备的字典。有更多选项如何找出设备是否存在。
1)让我们创建一个设备列表并搜索设备列表。例如
- hosts: localhost
gather_facts: true
tasks:
- debug:
msg: Disk nvme0n1 exists.
when: "'nvme0n1' in ansible_devices.keys()|list"
- debug:
msg: Disk sdb does not exist.
when: "'sdb' not in ansible_devices.keys()|list"
给
"msg": "Disk nvme0n1 exists."
"msg": "Disk sdb does not exist."
2)也可以测试变量是否已定义。例如,这出戏给出了相同的结果
- debug:
msg: Disk nvme0n1 exists.
when: ansible_devices.nvme0n1 is defined
- debug:
msg: Disk sdb does not exist.
when: ansible_devices.sdb is undefined
3) 也可以使用空变量评估为 False的事实。例如,这出戏给出了相同的结果
- debug:
msg: Disk nvme0n1 exists.
when: ansible_devices.nvme0n1|default('')
- debug:
msg: Disk sdb does not exist.
when: not ansible_devices.sdb|default('')
推荐阅读
- c - C 执行的文件在 linux 服务器上不能按预期工作
- c# - 从 MSMQ 接收时,什么会导致“无法导入事务”错误?
- c# - 如何用新对象列表实例化列表
- scala - 如何使用 SDK 使 Scala 代码在 EMR 集群上运行?
- php - 如何在 laravel 6 上上传图片?
- r - 如何将文件夹中的多个excel文件导入并转换为R中的数据框
- r - 使用 R 中的 tidymodel 框架进行随机森林超参数调整的错误
- python - Django 在 ModelForm 中的“其他”模型上包含 ManyToManyField
- java - 映射与函数接口关联的管道运算符
- canvas - Redraw a line around a point in a canvas