Per rendere l'attività idempotente, aggiungi un'altra attività per verificare prima eventuali partizioni non espanse. Ad esempio, se desideri che la partizione root sia di almeno 10 GB:
- name: Assert root partition is expanded
assert: { that: item.mount != '/' or item.size_total > 10737418240 } # 10 GB
with_items: '{{ ansible_mounts }}'
ignore_errors: yes
register: expanded
NOTA: Questa attività fallisce se la partizione /
è inferiore a 10 GB.
Successivamente, rendi l'attività di espansione condizionata a expanded|failed
:
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
Nel mio caso, sto espandendo la partizione 2 sul dispositivo a blocchi /dev/mmcblk0
(per il Raspberry Pi). Dovresti ovviamente sostituire con i nomi dei dispositivi sul tuo sistema.
Infine, notify
attiva l'espansione del filesystem:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
Se guardi l'origine del modulo del filesystem così com'è attualmente, puoi vedere che non sembra esserci nulla che potresti usare per ridimensionare un filesystem.
Per fortuna, hai delle opzioni:il modulo di comando e il modulo shell.
Il modulo di comando è preferito rispetto al modulo shell perché non è influenzato dall'ambiente utente, quindi ti mostrerò come farlo utilizzando l'approccio:
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
dove sda1
è il tuo filesystem. Se devi prima ingrandire il tuo filesystem, usa lo stesso approccio, ma fai una chiamata a fdisk
(con le opzioni della riga di comando corrette).
Seleziona man resize2fs
per opzioni specifiche per quel comando e la documentazione ansible per ulteriori informazioni, inclusa la parametrizzazione del tuo comando.
Non so se potrebbe aiutare. Ma, poiché Ansible 2.0
c'è resizefs
opzione nel filesystem
modulo che è false
per impostazione predefinita e che supportano ext4
.
In caso affermativo, se il dispositivo a blocchi e le dimensioni del filesystem differiscono, fai crescere il filesystem nello spazio. Supportato per filesystem ext2, ext3, ext4, ext4dev, f2fs, lvm, xfs, vfat, swap.
https://docs.ansible.com/ansible/latest/modules/filesystem_module.html
- name: 'Extend the FS'
filesystem:
fstype: 'ext4'
dev: '/dev/sda1'
resizefs: yes