我认为某些地方发生了变化(不确定是否在客户端服务器上,因为它们是较新版本),但突然我使用包模块的任务失败了,因为 Oracle linux 和 Rhel 服务器上的 gpg 签名检查。
我知道这是 ansible 的问题,因为我看到 verbose gpg 检查是从 ansible play 中强制执行的。
我们使用带有包模块的通用剧本(对于每个特定于发行版的包管理器,及时调用 zypper yum apt 等),我知道我们可以在 yum 模块中使用 disable_gpg_check:是
但是,如果我在包模块中使用该选项,它在 rhel 服务器上运行时可以工作,但在 debian/sles 或不使用 yum 模块的任何东西上运行时会失败,因为只有 yum 模块有该选项,而其他包模块有不是。
我很想找到一个解决方案,以避免使用 yum 检查 gpg,并仍然使用通用包模块。
服务器上的手动命令 yum install 运行完美。另外,当我使用详细(-vvv ...)运行 anisble 时,我看到 gpgcheck yes 被推送
最佳答案
问题的真正解决方案是重新激活给定目标上的 gpg 检查并修复配置,使其成功,因为不应禁用它。
话虽如此,这里有一个可能的解决方法:
- 在 list 中创建一个组(例如,基于操作系统名称的静态或动态),其中包含您想要通过
package
模块禁用 yum 的 gpg 检查的所有相关目标。我将在下面将此组称为bad_hosts
- 仅为该组添加变量,例如在
group_vars/bad_hosts.yml
disable_yum_gpg_check: true
- 修改您的任务(您的话理所当然地认为您可以使用
package
任务中的选项):- name: install package package: name: some_software state: present disable_gpg_check: "{{ disable_yum_gpg_check | d(omit) }}"
关于由于 gpg 检查,ansible 包模块失败(需要与其他管理器模块兼容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73764526/