Um die Aufgabe idempotent zu machen, fügen Sie eine weitere Aufgabe hinzu, um zuerst nach nicht erweiterten Partitionen zu suchen. Beispiel:Wenn Sie möchten, dass die Root-Partition mindestens 10 GB groß ist:
- 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
HINWEIS: Diese Aufgabe schlägt fehl, wenn die Partition /
ist kleiner als 10 GB.
Als nächstes machen Sie die Erweiterungsaufgabe abhängig von expanded|failed
:
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
In meinem Fall erweitere ich Partition 2 auf dem Blockgerät /dev/mmcblk0
(für den Raspberry Pi). Sie sollten natürlich durch die Gerätenamen auf Ihrem System ersetzen.
Zum Schluss notify
löst Dateisystemerweiterung aus:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
Wenn Sie sich den Quellcode des Dateisystemmoduls in seiner derzeitigen Form ansehen, können Sie sehen, dass es nichts zu geben scheint, mit dem Sie die Größe eines Dateisystems ändern könnten.
Zum Glück haben Sie Optionen:das Befehlsmodul und das Shell-Modul.
Das Befehlsmodul wird gegenüber dem Shell-Modul bevorzugt, weil es nicht von der Benutzerumgebung beeinflusst wird, also zeige ich Ihnen, wie es geht, indem ich den Ansatz verwende:
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
wobei sda1
ist dein Dateisystem. Wenn Sie zuerst Ihr Dateisystem vergrößern müssen, verwenden Sie den gleichen Ansatz, aber rufen Sie fdisk
auf (mit den richtigen Befehlszeilenschaltern) stattdessen.
Kreuzen Sie man resize2fs
an für spezifische Optionen für diesen Befehl und die Ansible-Dokumentation für weitere Informationen, einschließlich der Parametrisierung Ihres Befehls.
Weiß nicht ob es helfen könnte. Aber seit Ansible 2.0
da ist resizefs
Option in filesystem
Modul, das false
ist standardmäßig und die ext4
unterstützen .
Wenn ja, vergrößern Sie das Dateisystem in den Speicherplatz, wenn sich die Größe des Blockgeräts und des Dateisystems unterscheidet. Unterstützt für ext2, ext3, ext4, ext4dev, f2fs, lvm, xfs, vfat, Swap-Dateisysteme.
https://docs.ansible.com/ansible/latest/modules/filesystem_module.html
- name: 'Extend the FS'
filesystem:
fstype: 'ext4'
dev: '/dev/sda1'
resizefs: yes