タスクを冪等にするために、拡張されていないパーティションを最初にチェックする別のタスクを追加します。たとえば、ルート パーティションを少なくとも 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
注: パーティション /
の場合、このタスクは失敗します は 10 GB 未満です。
次に、拡張タスクを expanded|failed
で条件付きにします :
- name: Expand partition
command: parted /dev/mmcblk0 resizepart 2 15.5GB # NOTE: Assumes 16GB card
when: expanded|failed
notify: Expand filesystem
私の場合、ブロック デバイス /dev/mmcblk0
でパーティション 2 を拡張しています。 (ラズベリーパイ用)。もちろん、システム上のデバイス名に置き換える必要があります。
最後に notify
ファイルシステムの拡張をトリガーします:
handlers:
- name: Expand filesystem
command: resize2fs /dev/mmcblk0p2
現在のファイルシステム モジュールのソースを見ると、ファイル システムのサイズを変更するために使用できるものは何もないように見えることがわかります。
ありがたいことに、コマンド モジュールとシェル モジュールというオプションがあります。
コマンド モジュールは、ユーザー環境の影響を受けないため、シェル モジュールよりも優先されます。そのため、次のアプローチを使用してコマンド モジュールを実行する方法を示します。
- name: "resize my ext4 filesystem, please"
command: resize2fs /dev/sda1
sudo: True
どこで sda1
あなたのファイルシステムです。最初にファイルシステムを拡大する必要がある場合は、同じアプローチを使用しますが、 fdisk
を呼び出します (正しいコマンド ライン スイッチを使用して) 代わりに。
man resize2fs
をチェック そのコマンドの特定のオプションについては を、コマンドのパラメータ化を含む詳細については ansible ドキュメントを参照してください。
それが役立つかどうかわからない。しかし、Ansible 2.0
以降 resizefs
があります filesystem
のオプション false
のモジュール デフォルトで ext4
をサポート .
はいの場合、ブロック デバイスとファイル システムのサイズが異なる場合は、ファイル システムをスペースに拡張します。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