我有许多磁盘,其中有 1 个分区,已用 ext4 预格式化。有时新磁盘是空白的。我需要能够将它们粘贴在我们的任何 ubuntu 服务器中,运行一个 ansible playbook:识别(新)磁盘确保它尚未安装确保我们不会触及根磁盘(如果是新的)创建分区和 ext4 文件系统。为新磁盘创建挂载点,例如“/mnt/{newdiskserial}”,将其存储在变量中,以便我可以扩展 playbook 功能挂载新磁盘
我一直在看这个旧答案:Ansible - using with_items 并且当有条件时 我认为它可能可用或适应性强。但我的ansible woodoo不够强大。我需要一只高水平的手。
无功能代码
最终结果应该是。放入一些新磁盘或带有文件系统的旧磁盘。运行 playbook 并查看它们已安装在 /mnt/serialnumber 中
Ansible 被设计为幂等的,因此如果分区已经使用您期望的文件系统进行分区和/或格式化,那么采取格式化或安装分区等操作不会产生任何影响。
你的问题听起来像是你希望 Ansible 表现得更像一种通用语言;如果有帮助的话,请将 Ansible 视为一种工具/语言,无论如何,它都能让事情看起来像某种特定的方式。系统的哪些部分已经正确(例如分区 1 存在,或格式化为“ext4”),然后 Ansible 会说“很好,这是正确的,让我们继续下一步。”
将 Ansible 想象为一名(非常)初级的系统管理员,您必须以清单格式向其解释事情。那么你的情况会是这样的 - 你的问题是“没有功能代码”,所以我会保持这个高水平:
my_disk_list:
- "sdb"
- "sdc"
- "sdd"
Run Code Online (Sandbox Code Playgroud)
with_items: my_disk_list
ext4
with_items
和filesystem
带有force: no
.with_items
with_items
如果您register
在每个部分中使用该命令,则可以跟踪每个步骤中更改或保留的操作。
如果您需要使用磁盘序列号进行挂载,则必须循环遍历每个磁盘的 Ansible“setup:”模块事实,并使用它来设置挂载点。