Aby byla úloha idempotentní, přidejte další úlohu, abyste nejprve zkontrolovali případné nerozbalené oddíly. Např. pokud chcete, aby měl kořenový oddíl alespoň 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
POZNÁMKA: Tato úloha se nezdaří, pokud oddíl /
je menší než 10 GB.
Dále podmiňte úlohu rozšíření expanded|failed
:
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
V mém případě rozšiřuji oddíl 2 na blokovém zařízení /dev/mmcblk0
(pro Raspberry Pi). Měli byste je samozřejmě nahradit názvy zařízení ve vašem systému.
Nakonec notify
spouští rozšíření souborového systému:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
Pokud se podíváte na zdrojový kód modulu souborového systému v jeho současné podobě, můžete vidět, že neexistuje nic, co byste mohli použít ke změně velikosti souborového systému.
Naštěstí máte možnosti:příkazový modul a modul shell.
Příkazový modul je preferován před shellovým modulem, protože není ovlivněn uživatelským prostředím, takže vám ukážu, jak to udělat pomocí přístupu:
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
kde sda1
je váš souborový systém. Pokud potřebujete nejprve zvětšit souborový systém, použijte stejný přístup, ale zavolejte na fdisk
(se správnými přepínači příkazového řádku).
Zkontrolujte man resize2fs
pro konkrétní volby pro tento příkaz a dokumentaci ansible pro více informací, včetně parametrizace vašeho příkazu.
Nevím, jestli by to mohlo pomoci. Ale od Ansible 2.0
existuje resizefs
možnost v filesystem
modul, který je false
ve výchozím nastavení a které podporují ext4
.
Pokud ano, pokud se blokové zařízení a velikost souborového systému liší, rozšiřte souborový systém do prostoru. Podporováno pro ext2, ext3, ext4, ext4dev, f2fs, lvm, xfs, vfat, swap souborové systémy.
https://docs.ansible.com/ansible/latest/modules/filesystem_module.html
- name: 'Extend the FS'
filesystem:
fstype: 'ext4'
dev: '/dev/sda1'
resizefs: yes