首页 > 解决方案 > 如何使用ansible在rhel中新连接的磁盘上检测和创建分区

问题描述

我是新手Ansible(有基本的工作知识)。尝试从 ansible playbook 在 linux 机器上自动添加磁盘。

以下是试图实现这一目标的事情。

  1. 我试图识别附加在 linux 机器上的新磁盘。从命令行我能够识别新的磁盘名称,但无法通过 ansible 找到。

我需要为此编写哪个模块。已尝试使用 shell 命令,/sys/block但它不起作用,因此我离开了这种情况。

  1. 现在我决定手动扫描磁盘并提供该名称ansible以自动创建分区。

为此,我写了下面的代码。

- name: list out currnet PV
  shell: pvs --noheadings -o pv_name
  register: pvs_list

- debug: var=pvs_list.stdout

- name: create partition on the given disk name
  shell: /bin/echo -e "n\np\n1\n\n\nt\n8e\nw" | fdisk "{{ disk_name }}" ## Create the partition on a disk.
  register: partitioning

上面的代码工作正常,但如果我再次运行此作业,它不会失败,它会再次在磁盘中重新创建新分区。

我试图应用 when / failed_when 条件,但它不起作用。

如果再次提供已经存在的磁盘,则播放应该会失败并显示正确的消息。

failed_when: "'{{ disk_name }}"' in pvs_list.stdout" 这种情况也行不通。

也无法使用 Ansible 识别新磁盘。

标签: ansible

解决方案


问:“无法使用 Ansible 识别新磁盘”

A:看一下设置——收集有关远程主机的事实。例如,给定 Linux localhost 中的磁盘

$ lsscsi 
[N:0:1:1]    disk    SSDPEKKF256G8 NVMe INTEL 256GB__1          /dev/nvme0n1

看看 Ansible 提供了哪些信息

$ ansible localhost -m setup | grep nvme0n1 -A 2
            "nvme0n1": [
                "nvme-SSDPEKKF256G8_NVMe_INTEL_256GB_BTHH832111P1256B", 
                "nvme-eui.5cd2e42981b06cef"
  ...

有关详细信息,请参阅如何使用 Ansible 收集有关磁盘的事实

看看如何使用 Ansible 创建一个新分区(格式化并挂载它)。


推荐阅读