ansible - 如何使用ansible在rhel中新连接的磁盘上检测和创建分区
问题描述
我是新手Ansible
(有基本的工作知识)。尝试从 ansible playbook 在 linux 机器上自动添加磁盘。
以下是试图实现这一目标的事情。
- 我试图识别附加在 linux 机器上的新磁盘。从命令行我能够识别新的磁盘名称,但无法通过 ansible 找到。
我需要为此编写哪个模块。已尝试使用 shell 命令,/sys/block
但它不起作用,因此我离开了这种情况。
- 现在我决定手动扫描磁盘并提供该名称
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 识别新磁盘”
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 创建一个新分区(格式化并挂载它)。
推荐阅读
- asp.net-mvc - asp.net 5,满足某些条件时在控制器中注销
- azure-active-directory - Azure B2C 的 Azure AD 中 Microsoft 帐户应用程序的域验证
- python - 我的二进制递归函数找到最大值
- python - mysql fetchone 在它应该返回 None 时返回对象
- javascript - 递归异步/等待
- machine-learning - DOCCANO 和 SpaCY 中未标记的实例。他们提供任何价值吗?
- c# - 如何将服务基础数据库显示到组合框 C#
- python-3.x - 设计师门垫算法的深入解释?
- xcode - 我想在 Discord 上显示 Xcode
- python - Keras tuner.search 搜索错误给我一个与形状相关的错误“形状(无,11,11)和(无,1000,11)不兼容”