[英]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.