这是我在这里的第一篇帖子所以请耐心等待:)
我正在尝试使用 Packer(1.8.4) 在 Proxmox(7.2-11) 上构建 Ubuntu 20.04.5 映像。一切似乎都运行良好(获取 IP、通过 HTTP 读取 cloud-init 配置、启动安装、安装内核),直到使用 subiquity 安装 qemu-guest-agent。它无法运行安装命令,生成崩溃报告并要求按 Enter 键以获取终端。对于 20.04.4 ISO 映像,使用 Packer 中完全相同的配置,一切运行正常。
云初始化配置:
#cloud-config
autoinstall:
version: 1
locale: en_US
keyboard:
layout: en
network:
version: 2
ethernets:
ens18:
dhcp4: true
ssh:
install-server: true
allow-pw: false
disable_root: true
ssh_quiet_keygen: true
allow_public_ssh_keys: true
packages:
- qemu-guest-agent
- sudo
storage:
swap:
size: 0
config:
- {ptable: gpt, path: /dev/vda, preserve: false, name: '', grub_device: true, type: disk, id: disk-vda}
- {type: partition, number: 1, device: disk-vda, flag: bios_grub, size: 1M, id: vda-grub}
- {type: partition, number: 2, device: disk-vda, flag: boot, size: 1G, id: vda-boot}
- {type: partition, number: 3, device: disk-vda, size: -1, id: vda-lvm}
- {type: lvm_volgroup, name: vg-ubuntu, devices: [vda-lvm], id: vg-ubuntu}
- {type: lvm_partition, volgroup: vg-ubuntu, id: lv-root, name: lv-root, size: -1}
- {type: format, fstype: ext4, volume: vda-boot, id: vda-boot-fs}
- {type: format, fstype: xfs, volume: lv-root, id: lv-root-fs}
- {type: mount, path: /, id: m-root, device: lv-root-fs}
- {type: mount, path: /boot, id: m-boot, device: vda-boot-fs}
user-data:
package_upgrade: true
timezone: Europe/Bucharest
users:
- name: devops
groups: [adm, sudo]
lock-passwd: false
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
# passwd: your-password
ssh_authorized_keys:
- MyPublicKey
我不知道这是来自 Ubuntu 新 iso 还是 Packer,但由于相同的配置适用于 20.04.4,我认为它来自上一个版本中包含的新内容。
有人有想法或经历过同样的事情吗?
提前感谢您的回答!
答案1
显然,我已经找到了解决您问题的权宜之计......
我不确定它是否适合您,或者我们在qemu-guest-agent
返回时是否会遇到同样的问题Error 100
。
这是我的解决方法:
我刚刚late-commands
在我的文件中添加了一条指令user-data
,它会在事后运行apt-get update
并安装。qemu-guest-agent
以下是其中的一段user-data
:
#cloud-config
autoinstall:
...
late-commands:
- curtin in-target -- apt-get update
- curtin in-target -- apt-get install qemu-guest-agent
...
我深入研究了失败的原因。显然,从qemu-guest-agent
软件包列表中删除后一切都会正常工作。当我尝试在错误 shell 中运行假定的命令时,它会qemu-guest-agent
在尝试安装该软件包时提到“未找到”。这就是为什么我在重新阅读 ubuntu 中自动服务器安装的文档时想到了这个解决方案。根据文档关于在目标机器上运行命令,上面写着你应该curtin in-target --target=/target --
在任何命令之前添加它,以便它在目标系统内运行。在这种情况下,我想更新源并安装qemu-guest-agent
,它按预期工作。我确实觉得可能有更好的解决方案,比如配置指令apt
等。希望这个解决方法对你的情况有用……
答案2
我在我的环境中看到了与您非常相似的问题,并意识到我的问题是我需要设置我的公司代理以允许 apt/snapd 访问互联网。
根据自动安装参考我需要将以下内容添加到我的用户数据文件中:
autoinstall:
...
proxy: http://<proxy.url>:<port-number>
...