首页 > 解决方案 > 如果服务器上不存在磁盘 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"

谢谢,

标签: ansibleansible-facts

解决方案


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('')

推荐阅读