Ansible:是否可以调整ext4文件系统的大小?

zom*_*man 5 linux ansible

我如何通过Ansible调整ext4文件系统的大小?我知道文件系统模块,但我没有看到"resize"参数或其他相关内容......

小智 8

如果您查看当前文件系统模块的源代码,您可以看到似乎没有任何可用于调整文件系统大小的内容.

值得庆幸的是,您有以下选项:命令模块shell模块.

命令模块比shell模块更受欢迎,因为它不受用户环境的影响,因此我将向您展示如何使用该方法:

- name: "resize my ext4 filesystem, please"
  command: resize2fs /dev/sda1 
  sudo: True
Run Code Online (Sandbox Code Playgroud)

sda1你的文件系统在哪里.如果您需要首先扩大文件系统,请使用相同的方法,但调用fdisk(使用正确的命令行开关).

检查man resize2fs该命令的特定选项和ansible文档以获取更多信息,包括参数化命令.

  • 任何好的`when`和`changed_when`条件使它成为幂等的? (2认同)

cri*_*hoj 8

为了使任务具有幂等性,请添加另一个任务以首先检查任何未展开的分区.例如,如果您希望根分区至少为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
Run Code Online (Sandbox Code Playgroud)

注意:如果分区/小于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
Run Code Online (Sandbox Code Playgroud)

就我而言,我正在扩展块设备上的分区2 /dev/mmcblk0(对于Raspberry Pi).您当然应该替换系统上的设备名称.

最后,notify触发文件系统扩展:

  handlers:
  - name: Expand filesystem
    command: resize2fs /dev/mmcblk0p2
Run Code Online (Sandbox Code Playgroud)


Rom*_*ain 5

不知道能不能帮上忙。但是,因为Ansible2.0存在resizefs的选项中filesystem是模块false默认和支持ext4

如果是,如果块设备和文件系统大小不同,则将文件系统增加到空间中。支持 ext2、ext3、ext4、ext4dev、f2fs、lvm、xfs、vfat、交换文件系统。

https://docs.ansible.com/ansible/latest/modules/filesystem_module.html

- name: 'Extend the FS'
  filesystem:
    fstype: 'ext4'
    dev: '/dev/sda1'
    resizefs: yes
Run Code Online (Sandbox Code Playgroud)