我正在尝试使用 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”部分。
另外,知道如何循环遍历所有未格式化的磁盘也很好。