我正在使用Salt(SaltStack)在Ubuntu 18.04中安装软件包。我想安装一个formula for docker,例如。当我应用docker
状态时,我收到一个无法安装包的错误,因为公式中使用的包存储库未签名。
ID: docker package
Function: pkg.installed
Name: docker-engine
Result: False
Comment: An error was encountered while installing package(s): E: Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-bionic/InRelease 403 Forbidden [IP: 13.33.98.216 443]
E: The repository 'https://apt.dockerproject.org/repo ubuntu-bionic InRelease' is not signed.
当我使用另一个公式时也是如此。
我发现如果我通过命令行手动安装包,我会使用--allow-unauthenticated
选项。
但是在使用Salt和salt-formula时解决这个问题的方法是什么?如何从未签名的存储库安装软件包?
在任何情况下,禁用包验证都是一个非常糟糕的主意。 Docker存储库完全符合Ubuntu软件包签名标准,并发布GPG密钥以验证它们。它可以手动添加到系统中:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
但这不是主要的问题 - 这就是你所指的Salt规则已经过时并设置了一个不正确的Docker repo URL - 在最近的安装脚本中,他们已经将它从https://apt.dockerproject.org/repo更改为https://download.docker.com/linux/ubuntu/而旧镜像似乎是工作时,新版本的签名文件似乎不可用,这会让人感到困惑。
所以使用Ansible(抱歉,我不知道Salt):
- apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
- apt_repository:
repo: 'deb https://download.docker.com/linux/ubuntu/ bionic stable'
- apt: name=docker-ce
您可以使用skip_verify
来避免GPG验证检查(例如,--allow-unauthenticated
或--force-bad-verify
),
httpd:
pkg.installed:
- fromrepo: mycustomrepo
- skip_verify: True