我有许多磁盘,上面有1个分区,并用ext4预先格式化。有时新磁盘是空白的。我需要能够将它们粘贴到我们的任何ubuntu服务器中,并运行一个能解决问题的剧本: 识别(新)磁盘 确保尚未安装 确保我们不接触根磁盘 如果是新的,则创建分区和ext4文件系统。 为新磁盘创建挂载点,例如“ / mnt / {newdiskserial} 将其存储在变量中,以便我可以扩展剧本功能 挂载新磁盘
我一直在看这个旧答案:Ansible - using with_items and when conditional to 我认为这可能是有用的,也可能是适应性的。但是我烦躁的伍德努还不够强。我需要高手。
无功能代码
最终结果应该是。 放入一些新磁盘或与文件系统一起使用的磁盘。运行剧本,看看它们是否已安装在/ mnt / serialnumber
中答案 0 :(得分:0)
Ansible被设计为是幂等的,因此,如果已经使用期望的文件系统对它进行了分区和/或格式化,则执行格式化或装入分区之类的操作不会产生任何影响。
您的问题听起来像是您希望Ansible表现得更像一种通用语言;如果有帮助,可以将Ansible视为一种工具/语言,它使使事物看起来具有某种方式。并且系统的哪些部分已经正确(例如,分区1存在,或格式化为“ ext4”),然后Ansible说:“很好,没错,让我们继续下一步。”
想象一下Ansible是一名(非常)初级系统管理员,您必须以清单格式来解释这些事情。这样,您的情况就会变成这样-您的问题是“无功能代码”,因此我将保持较高级别:
my_disk_list:
- "sdb"
- "sdc"
- "sdd"
with_items: my_disk_list
ext4
with_items
和带有filesystem
的{{1}}模块。force: no
with_items
如果在每个部分中使用with_items
命令,则可以跟踪在每个步骤中更改或保留的操作。
如果需要使用磁盘序列号进行挂载,则必须遍历每个磁盘的Ansible“ setup:”模块事实,并使用其来设置挂载点。