Siéntete en la libertad de compartir nuestra página y códigos en tus redes, necesitamos tu ayuda para ampliar nuestra comunidad.
Solución:
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
NOTA: Esta tarea falla si la partición /
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 bloques. /dev/mmcblk0
(para la frambuesa pi). Por supuesto, debe reemplazar con los nombres de los dispositivos en su sistema.
Por fin, notify
desencadena 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.
Cheque 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
por defecto y ese soporte 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
Reseñas y puntuaciones
Ten en cuenta dar recomendación a este post si te fue útil.