Para hacer que la tarea sea idempotente, agregue otra tarea para verificar primero si hay particiones no expandidas. Por ejemplo, si desea que la partición raíz tenga al menos 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
/
es menos de 10 GB.
A continuación, haga que la tarea de expansión esté condicionada a expanded|failed
:
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
En mi caso, estoy expandiendo la partición 2 en el dispositivo de bloque /dev/mmcblk0
(para la frambuesa pi). Por supuesto, debe reemplazar con los nombres de los dispositivos en su sistema.
Finalmente, notify
activa la expansión del sistema de archivos:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
Si observa la fuente del módulo del sistema de archivos tal como está actualmente, puede ver que no parece haber nada que pueda usar para cambiar el tamaño de un sistema de archivos.
Afortunadamente, tiene opciones:el módulo de comando y el módulo de shell.
Se prefiere el módulo de comando sobre el módulo de shell porque no se ve afectado por el entorno del usuario, así que le mostraré cómo hacerlo usando el enfoque:
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
donde sda1
es su sistema de archivos. Si primero necesita ampliar su sistema de archivos, use el mismo enfoque, pero haga una llamada a fdisk
(con los interruptores de línea de comando correctos) en su lugar.
Marque man resize2fs
para obtener opciones específicas para ese comando y la documentación de ansible para obtener más información, incluida la parametrización de su comando.
No sé si podría ayudar. Pero, desde Ansible 2.0
hay resizefs
opción en el filesystem
módulo que es false
de forma predeterminada y que admiten ext4
.
En caso afirmativo, si el dispositivo de bloque y el tamaño del sistema de archivos difieren, haga crecer el sistema de archivos en el espacio. Compatible con sistemas de archivos 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