Не могу установить qemu-guest-agent на образ debian-12-generic-amd64.qcow2. Пытаюсь следовать инструкциям из этого учебника и кода. Вот шаги, которые я выполняю и результат:
Сначала я получаю образ с помощью этого скрипта:
`./bin/import-cloud-image debian-12-generic-amd64.qcow2`
Затем, поскольку Debian cloud-образ не имеет qemu-guest-agent, я делаю следующее:
`virt-customize -a /var/lib/vz/images/debian-12-generic-amd64.qcow2 --install qemu-guest-agent`
Вот вывод:
```bash
Bash: root@hoth:~# virt-customize -a /var/lib/vz/images/debian-12-generic-amd64.qcow2 --install qemu-guest-agent
[ 0.0] Examining the guest ...
[ 2.1] Setting a random seed
virt-customize: warning: random seed could not be set for this type of
guest
[ 2.1] Installing packages: qemu-guest-agent
[ 5.2] Finishing off
```
Затем, убедившись, что Packer будет использовать привилегированный токен на Proxmox-узле, я выполняю следующее из этой документации:
```bash
Bash: packer init main.pkr.hcl &&\
packer validate -var-file="auto.pkrvars.hcl" . &&\
packer build -var-file="auto.pkrvars.hcl" .
```
Он успешно создает VM, но зависает на:
```bash
Code: ➜ packer init main.pkr.hcl &&\
packer validate -var-file="auto.pkrvars.hcl" . &&\
PACKER_LOG=1 packer build -var-file="auto.pkrvars.hcl" .
```
Конфигурация действительна.
proxmox-clone.base: вывод будет в этом цвете.
==> proxmox-clone.base: Используется существующий SSH-ключ для коммуникатора...
==> proxmox-clone.base: Создание VM
==> proxmox-clone.base: Запуск VM
...
2025/05/11 11:06:07 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:07 using token auth
2025/05/11 11:06:07 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:07 disk discovered on source vm at scsi0
2025/05/11 11:06:21 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:21 No boot command given, skipping
2025/05/11 11:06:24 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:24 [DEBUG] Unable to get address during connection step: 500 QEMU guest agent is not running
2025/05/11 11:06:24 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:24 [INFO] Waiting for SSH, up to timeout: 10m0s
2025/05/11 11:06:27 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:27 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
2025/05/11 11:06:35 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:35 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
2025/05/11 11:06:43 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:43 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
2025/05/11 11:06:52 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:52 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
Это истекает по таймауту. Прежде чем истечет таймаут, я могу использовать SSH-ключ, указанный в переменных, чтобы подключиться к VM с моего клиента, но получаю этот вывод:
```bash
Bash: debian@nomad-base-debian12-2025-05-11:~$ sudo systemctl status qemu-guest-agent
Unit qemu-guest-agent.service could not be found.
debian@nomad-base-debian12-2025-05-11:~$ sudo systemctl list-units --type=service --all | grep qemu
debian@nomad-base-debian12-2025-05-11:~$
```
У меня также включен cloud init на гостевой системе, как видно по этим входным переменным в сборке Packer:
```
# Properties of the new VM
vm_id = var.vm_id
vm_name = local.vm_name
template_description = local.template_desc
qemu_agent = true
cloud_init = true
cloud_init_storage_pool = var.cloud_init_storage_pool
```
Я также подтвердил в веб-интерфейсе Proxmox после создания VM, что "QEMU Guest Agent" включен. Чего я не хватает? И как kencx смог заставить proxmox-clone работать с предоставленным им кодом? Единственное, что имеет смысл, это то, что он не использовал Debian, учитывая, что Debian cloud-init образ не имеет установленного qemu-guest-agent. Но все же...почему virt-customize говорит, что он установлен, а на самом деле он не установлен?
Вся идея в конечном итоге состоит в том, чтобы автоматизировать этот процесс в моем само-хостинговом GitLab CE instance с GitLab CI/CD runner. У кого-нибудь есть другое решение, которое может сработать для автоматизации следующего?
1. Загрузить последнюю Debian qcow2 image.
2. Создать VM шаблон из него.
3. Использовать Packer's proxmox-clone для создания нового пользовательского VM шаблона из этого шаблона по умолчанию, но с моими собственными shell provisioners.
4. Продолжить автоматизацию развертывания новой VM из этого шаблона с помощью Terraform или что-нибудь еще (я очень знаком с Terraform/Packer, поскольку я использую их на работе в качестве SRE для создания AWS AMIs для launch templates EC2).
Сначала я получаю образ с помощью этого скрипта:
`./bin/import-cloud-image debian-12-generic-amd64.qcow2`
Затем, поскольку Debian cloud-образ не имеет qemu-guest-agent, я делаю следующее:
`virt-customize -a /var/lib/vz/images/debian-12-generic-amd64.qcow2 --install qemu-guest-agent`
Вот вывод:
```bash
Bash: root@hoth:~# virt-customize -a /var/lib/vz/images/debian-12-generic-amd64.qcow2 --install qemu-guest-agent
[ 0.0] Examining the guest ...
[ 2.1] Setting a random seed
virt-customize: warning: random seed could not be set for this type of
guest
[ 2.1] Installing packages: qemu-guest-agent
[ 5.2] Finishing off
```
Затем, убедившись, что Packer будет использовать привилегированный токен на Proxmox-узле, я выполняю следующее из этой документации:
```bash
Bash: packer init main.pkr.hcl &&\
packer validate -var-file="auto.pkrvars.hcl" . &&\
packer build -var-file="auto.pkrvars.hcl" .
```
Он успешно создает VM, но зависает на:
```bash
Code: ➜ packer init main.pkr.hcl &&\
packer validate -var-file="auto.pkrvars.hcl" . &&\
PACKER_LOG=1 packer build -var-file="auto.pkrvars.hcl" .
```
Конфигурация действительна.
proxmox-clone.base: вывод будет в этом цвете.
==> proxmox-clone.base: Используется существующий SSH-ключ для коммуникатора...
==> proxmox-clone.base: Создание VM
==> proxmox-clone.base: Запуск VM
...
2025/05/11 11:06:07 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:07 using token auth
2025/05/11 11:06:07 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:07 disk discovered on source vm at scsi0
2025/05/11 11:06:21 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:21 No boot command given, skipping
2025/05/11 11:06:24 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:24 [DEBUG] Unable to get address during connection step: 500 QEMU guest agent is not running
2025/05/11 11:06:24 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:24 [INFO] Waiting for SSH, up to timeout: 10m0s
2025/05/11 11:06:27 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:27 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
2025/05/11 11:06:35 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:35 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
2025/05/11 11:06:43 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:43 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
2025/05/11 11:06:52 packer-plugin-proxmox_v1.2.2_x5.0_darwin_arm64 plugin: 2025/05/11 11:06:52 [DEBUG] Error getting SSH address: 500 QEMU guest agent is not running
Это истекает по таймауту. Прежде чем истечет таймаут, я могу использовать SSH-ключ, указанный в переменных, чтобы подключиться к VM с моего клиента, но получаю этот вывод:
```bash
Bash: debian@nomad-base-debian12-2025-05-11:~$ sudo systemctl status qemu-guest-agent
Unit qemu-guest-agent.service could not be found.
debian@nomad-base-debian12-2025-05-11:~$ sudo systemctl list-units --type=service --all | grep qemu
debian@nomad-base-debian12-2025-05-11:~$
```
У меня также включен cloud init на гостевой системе, как видно по этим входным переменным в сборке Packer:
```
# Properties of the new VM
vm_id = var.vm_id
vm_name = local.vm_name
template_description = local.template_desc
qemu_agent = true
cloud_init = true
cloud_init_storage_pool = var.cloud_init_storage_pool
```
Я также подтвердил в веб-интерфейсе Proxmox после создания VM, что "QEMU Guest Agent" включен. Чего я не хватает? И как kencx смог заставить proxmox-clone работать с предоставленным им кодом? Единственное, что имеет смысл, это то, что он не использовал Debian, учитывая, что Debian cloud-init образ не имеет установленного qemu-guest-agent. Но все же...почему virt-customize говорит, что он установлен, а на самом деле он не установлен?
Вся идея в конечном итоге состоит в том, чтобы автоматизировать этот процесс в моем само-хостинговом GitLab CE instance с GitLab CI/CD runner. У кого-нибудь есть другое решение, которое может сработать для автоматизации следующего?
1. Загрузить последнюю Debian qcow2 image.
2. Создать VM шаблон из него.
3. Использовать Packer's proxmox-clone для создания нового пользовательского VM шаблона из этого шаблона по умолчанию, но с моими собственными shell provisioners.
4. Продолжить автоматизацию развертывания новой VM из этого шаблона с помощью Terraform или что-нибудь еще (я очень знаком с Terraform/Packer, поскольку я использую их на работе в качестве SRE для создания AWS AMIs для launch templates EC2).
