[英]How do I re-gather device facts to remove any partitioned disks?
我正在构建一个角色,我试图为其收集磁盘而不使用任何分区
disks: "{{ ansible_devices | dict2items | selectattr('key', 'match', '^sd.*') | selectattr('value.partitions', 'match', '{}' ) | list }}"
然后挂载到分区上。 但是,当我运行一个循环时,我想在挂载和分区完成时更新列表/磁盘。
例如,如果一开始我的列表看起来像
disks: [sdb,sdc,sdd,sde]
当使用 Ansible 中的mount
模块在sdb
上分区和挂载完成时,列表应该更新并且看起来像这样
disks: [sdc,sdd,sde]
我怎样才能做到这一点?
您应该能够通过在安装后调用setup
模块来刷新事实。
因此,一个简单明了的任务阅读:
- setup:
而 Ansible 将再次收集主机的信息,因此,您的分区列表应该是最新的。
由于您不能在任务本身中执行此操作,因此您可以做的是,在您的角色中有一个include_tasks
可以使任务具有唯一性: parted
(或您用于分区的任何内容); mount
和setup
。
就像是:
- include_tasks: partition-mount-and-setup.yml
loop: "{{ mounts }}"
在partition-mount-and-setup.yml中,类似
- parted:
device: "{{ item.mount_point }}"
number: 1
state: present
part_end: "{{ item.size }}"
- mount:
src: "{{ item.mount_point }}"
path: "/mnt/{{ item.mount_point }}"
state: mounted
fstype: ext2
- setup:
所有这些都未经测试,但您可以遵循一般逻辑
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.