GNU/Linux >> Tutoriels Linux >  >> Linux

Ansible :est-il possible de redimensionner le système de fichiers ext4 ?

Afin de rendre la tâche idempotente, ajoutez une autre tâche pour vérifier d'abord les partitions non développées. Par exemple, si vous souhaitez que la partition racine fasse au moins 10 Go :

  - 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

REMARQUE : Cette tâche échoue si la partition / est inférieure à 10 Go.

Ensuite, rendez la tâche d'expansion conditionnelle à expanded|failed :

  - name: Expand partition
    command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
    when: expanded|failed
    notify: Expand filesystem

Dans mon cas, j'étends la partition 2 sur le périphérique bloc /dev/mmcblk0 (pour le Raspberry Pi). Vous devez bien sûr remplacer par les noms d'appareils sur votre système.

Enfin, notify déclenche l'expansion du système de fichiers :

  handlers:
  - name: Expand filesystem
    command: resize2fs /dev/mmcblk0p2

Si vous regardez la source du module de système de fichiers tel qu'il se présente actuellement, vous pouvez voir qu'il ne semble y avoir rien que vous puissiez utiliser pour redimensionner un système de fichiers.

Heureusement, vous disposez d'options :le module de commande et le module shell.

Le module de commande est préféré au module shell car il n'est pas affecté par l'environnement utilisateur, je vais donc vous montrer comment le faire en utilisant l'approche :

- name: "resize my ext4 filesystem, please"
  command: resize2fs /dev/sda1 
  sudo: True

sda1 est votre système de fichiers. Si vous devez d'abord agrandir votre système de fichiers, utilisez la même approche, mais appelez fdisk (avec les bons commutateurs de ligne de commande) à la place.

Vérifiez man resize2fs pour les options spécifiques de cette commande et la documentation ansible pour plus d'informations, y compris le paramétrage de votre commande.


Je ne sais pas si cela pourrait aider. Mais depuis Ansible 2.0 il y a resizefs option dans le filesystem module qui est false par défaut et qui prennent en charge ext4 .

Si oui, si le périphérique de bloc et la taille du système de fichiers diffèrent, développez le système de fichiers dans l'espace.Pris en charge pour les systèmes de fichiers 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

Linux
  1. Quel système de fichiers à sauvegarder est le meilleur ? ?

  2. Exemples de commandes mkfs.ext4 sous Linux

  3. umount :commande introuvable

  4. Commande Make pour Windows - options possibles ?

  5. Comment mentionner un caractère générique dans les commandes ansible

Comprendre les systèmes de fichiers Linux :ext4 et au-delà

Guide Ansible :la commande ad hoc

Comment sauvegarder le système de fichiers Linux à l'aide de la commande dump

Convertir le système de fichiers de démarrage de Xfs en Ext4 ?

Est-il possible pour root d'exécuter une commande en tant que non root ?

Monter une partition ext4 sur Mac OS X