Cloud-init:添加 apt 源密钥 gnupg 未安装

Cloud-init:添加 apt 源密钥 gnupg 未安装

我有一个用于创建和配置 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.cfgcloud-init 在安装软件包之前运行 APT 模块,那么我该如何使用apt-keygnupg

谢谢。

答案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 配置不太清晰。

相关内容