Ansible 剧本用于格式化和挂载未使用的磁盘

Ansible 剧本用于格式化和挂载未使用的磁盘

我正在尝试使用 Ansible 在 Linux 上设置磁盘。我对 ansible 还不太熟悉。

我设法获取了所有未使用磁盘的列表(尽管可能只包含一个),但是在格式化和安装它时遇到了问题。

我通过字典获取了设备信息,但我可以设法获取实际的设备路径(例如 /dev/sdb):

---
- name: Prepare unformatted disk
  hosts: test_hosts
  gather_facts: true
  remote_user: confmanager
  become: true
  tasks:

      - name: Get unformatted disks
        ansible.builtin.set_fact:
            disks: "{{ disks | default([]) + ['/dev/' + item.key] }}"
        when:
            - not item.value.partitions
            - item.key | regex_search ("sd")
        with_dict: "{{ ansible_devices }}"

      - name: Show unformatted disks
        ansible.builtin.debug:
            msg: "{{ disks }}"

      - name: Format disk
        community.general.filesystem:
            fstype: btrfs
            device: "{{ disks }}"

      - name: Mount disk
        ansible.posix.mount:
            state: mounted
            fstype: btrfs
            path: /storage
            src: "{{ disks + '1' }}"

错误如下:

TASK [Format disk] **************************************************************************************************************************************************************************************
fatal: [testserver]: FAILED! => {"changed": false, "msg": "Device ['/dev/sdb'] not found."}

PLAY RECAP **********************************************************************************************************************************************************************************************
testserver

我想我真的不明白如何从每个磁盘中提取“/dev/sdb”部分。

另外,知道如何循环遍历所有未格式化的磁盘也很好。

相关内容