Untuk membuat tugas idempoten, tambahkan tugas lain untuk terlebih dahulu memeriksa partisi yang tidak diperluas. Misalnya, jika Anda ingin partisi root minimal 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
CATATAN: Tugas ini gagal jika partisi /
kurang dari 10 GB.
Selanjutnya, jadikan tugas perluasan bersyarat pada expanded|failed
:
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
Dalam kasus saya, saya memperluas partisi 2 pada perangkat blok /dev/mmcblk0
(untuk RaspberryPi). Anda tentu saja harus mengganti dengan nama perangkat di sistem Anda.
Terakhir, notify
memicu ekspansi sistem file:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
Jika Anda melihat sumber modul sistem file seperti saat ini, Anda dapat melihat bahwa sepertinya tidak ada yang dapat Anda gunakan untuk mengubah ukuran sistem file.
Untungnya, Anda memiliki opsi:modul perintah dan modul shell.
Modul perintah lebih disukai daripada modul shell karena tidak terpengaruh oleh lingkungan pengguna, jadi saya akan menunjukkan cara melakukannya menggunakan pendekatan:
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
di mana sda1
adalah sistem file Anda. Jika Anda perlu memperbesar sistem file terlebih dahulu, gunakan pendekatan yang sama, tetapi lakukan panggilan ke fdisk
(dengan saklar baris perintah yang benar) sebagai gantinya.
Periksa man resize2fs
untuk opsi khusus untuk perintah itu dan dokumentasi yang memungkinkan untuk informasi lebih lanjut, termasuk parameterisasi perintah Anda.
Tidak tahu apakah itu bisa membantu. Tapi, karena 2.0
yang memungkinkan ada resizefs
opsi di filesystem
modul yaitu false
secara default dan mendukung ext4
.
Jika ya, jika ukuran perangkat blok dan sistem file berbeda, kembangkan sistem file ke dalam ruang. Didukung untuk sistem file ext2, ext3, ext4, ext4dev, f2fs, lvm, xfs, vfat, swap file.
https://docs.ansible.com/ansible/latest/modules/filesystem_module.html
- name: 'Extend the FS'
filesystem:
fstype: 'ext4'
dev: '/dev/sda1'
resizefs: yes