I'm building a role for which I'm trying to gather disks without any partitions using
disks: "{{ ansible_devices | dict2items | selectattr('key', 'match', '^sd.*') | selectattr('value.partitions', 'match', '{}' ) | list }}"
and then mount on the partition. But, as I'm running over a loop I wanted to update the list/disks when the mount and partition is completed.
For example, if my list at the start looks like
disks: [sdb,sdc,sdd,sde]
when the partitioning and mounting on sdb
using the mount
module in Ansible is done, the list should be updated and look something like this
disks: [sdc,sdd,sde]
How can I achieve this?
You should be able to refresh the facts by calling the setup
module after your mounts.
So, a plain and simple task reading:
- setup:
And Ansible will gather the facts of the host(s) again, so, your partition list should be up-to-date.
Since you cannot do it in the task itself, what you could do, in your role is to have an include_tasks
that would make an unicity of the tasks: parted
(or whatever you are using to partition); mount
and setup
.
Something like:
- include_tasks: partition-mount-and-setup.yml
loop: "{{ mounts }}"
And in partition-mount-and-setup.yml , something like
- 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:
All this is untested, but you could just follow the general logic
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.