我有一个用于创建和配置 Debian 10 VM 的 cloud-init 脚本,由于我想安装 nginx,因此我必须将其存储库添加到 APT。我尝试这样做:
apt:
preserve_sources_list: true
sources:
nginx:
source: "deb http://nginx.org/packages/debian $DEBIAN_RELEASE nginx"
key: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
mQENBE5OMmIBCAD+FPYKGriGGf7NqwKfWC83cBV01gabgVWQmZbMcFzeW+hMsgxH
QxnZZIbETgcSwFtDun0XiqPwPZgyuXVm9PAbLZRbfBzm8wR/3SWygqZBBLdQk5TE
...
=EWWI
-----END PGP PUBLIC KEY BLOCK-----
packages:
- nginx
它不起作用并且 cloud-init 的日志文件/run/cloud-init/result.json
显示以下内容:
{
"v1": {
"datasource": "DataSourceConfigDrive [net,ver=2][source=/dev/vdb]",
"errors": [
"('apt-configure', ProcessExecutionError(\"Unexpected error while running command.\\nCommand: ['apt-key', 'add', '-']\\nExit code: 255\\nReason: -\\nStdout: \\nStderr: E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation\"))"
]
}
}
为什么?它抱怨说无法使用,apt-key
因为gnupg
不存在,但是我如何确保它存在?根据/etc/cloud/cloud.cfg
cloud-init 在安装软件包之前运行 APT 模块,那么我该如何使用apt-key
呢gnupg
?
谢谢。
答案1
将其添加到您的配置中,这会导致 apt-get 在网络启动后但在官方 cloud-init 部分之前运行:
bootcmd:
- DEBIAN_FRONTEND=noninteractive apt-get -yq update
- DEBIAN_FRONTEND=noninteractive apt-get -yq install gnupg
还有另一种解决方案Debian 错误追踪系统它向您展示了如何指定新的源和密钥而不导致调用 gnupg,但是(对我来说)这会使您的 cloud-init 配置不太清晰。