Tenho servidor de máquina virtual Ubuntu 20.04 Cloud-init
instalado. Estou tentando fazer com que o disco da VM seja expandido automaticamente com Cloud-init. O host da VM é ESXi e a fonte de dados é None, pois eu só quero fazer algumas configurações automáticas para novas VMs sem a necessidade de uma fonte de dados externa.
Tentei configurar os módulos Cloud-init de acordo com esta documentação: https://cloudinit.readthedocs.io/en/latest/reference/modules.html#
- SO: Ubuntu: 20.04.6 LTS
- Inicialização na nuvem: 23.4.4-0ubuntu0~20.04.1
Cloud-init é executado na inicialização, mas os módulos growpart
são resizefs
sempre ignorados por motivo desconhecido:
2024-04-03 11:59:04,058 - modules.py[DEBUG]: Running module growpart (<module 'cloudinit.config.cc_growpart' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_growpart.py'>) with frequency always
2024-04-03 11:59:04,058 - handlers.py[DEBUG]: start: init-network/config-growpart: running config-growpart with frequency always
2024-04-03 11:59:04,058 - helpers.py[DEBUG]: Running config-growpart using lock (<cloudinit.helpers.DummyLock object at 0x7f8bec612430>)
2024-04-03 11:59:04,059 - cc_growpart.py[DEBUG]: growpart disabled: mode=off
2024-04-03 11:59:04,059 - handlers.py[DEBUG]: finish: init-network/config-growpart: SUCCESS: config-growpart ran successfully
2024-04-03 11:59:04,059 - modules.py[DEBUG]: Running module resizefs (<module 'cloudinit.config.cc_resizefs' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_resizefs.py'>) with frequency always
2024-04-03 11:59:04,059 - handlers.py[DEBUG]: start: init-network/config-resizefs: running config-resizefs with frequency always
2024-04-03 11:59:04,059 - helpers.py[DEBUG]: Running config-resizefs using lock (<cloudinit.helpers.DummyLock object at 0x7f8bec612460>)
2024-04-03 11:59:04,059 - cc_resizefs.py[DEBUG]: Skipping module named resizefs, resizing disabled
2024-04-03 11:59:04,059 - handlers.py[DEBUG]: finish: init-network/config-resizefs: SUCCESS: config-resizefs ran successfully
Eu tenho configuração mínima em /etc/cloud/cloud.cfg
:
cloud_init_modules:
- growpart
- resizefs
growpart:
mode: auto
devices: ["/"]
resize_rootfs: true
system_info:
distro: ubuntu
paths:
cloud_dir: /var/lib/cloud/
templates_dir: /etc/cloud/templates/
As partições e o sistema de arquivos estão neste estado durante a inicialização:
user@server:~$ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
GPT PMBR size mismatch (20971519 != 31457279) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Command (m for help): p
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 20969471 20965376 10G Linux filesystem
user@server:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.8G 3.4G 6.0G 36% /
De acordo com a documentação, um arquivo pode bloquear o growpart, mas o arquivo bloqueador não existe:
user@server:~$ ls /etc/growroot-disabled
ls: cannot access '/etc/growroot-disabled': No such file or directory
O que poderia estar fazendo com que os módulos fossem ignorados e o que devo fazer para que funcionem?
ATUALIZAR:
De acordo com cloud-init query
a configuração do meu cloud.cfg
não é aplicado:
user@server:~$ sudo cloud-init query combined_cloud_config
...
"cloud_init_modules": [
"growpart",
"resizefs"
],
...
"growpart": {
"mode": "off"
},
...
"final_message": "This comes from cloud.cfg as it should.",
...
Cloud.cfg parece estar funcionando para outras configurações, por exemplo, a mensagem final aparece conforme elas são definidas no arquivo de configuração.