【问题标题】:How to install yum repository key with ansible?如何使用 ansible 安装 yum 存储库密钥?
【发布时间】:2016-11-14 14:36:18
【问题描述】:

我试过two ways:

- name: Add repository
  yum_repository:
    # from https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
    name: passenger
    description: Passenger repository
    baseurl: https://oss-binaries.phusionpassenger.com/yum/passenger/el/$releasever/$basearch
    repo_gpgcheck: 1
    gpgcheck: 0
    enabled: 1
    gpgkey: https://packagecloud.io/gpg.key
    sslverify: 1
    sslcacert: /etc/pki/tls/certs/ca-bundle.crt

- name: Add repository key (option 1)
  rpm_key:
    key: https://packagecloud.io/gpg.key

- name: Add repository key (option 2)
  command: rpm --import https://packagecloud.io/gpg.key

- name: Install nginx with passenger
  yum: name={{ item }}
  with_items: [nginx, passenger]

但要让它工作,我需要 ssh 到机器,确认导入密钥(通过运行任何yum 命令,例如yum list installed),然后继续配置。有没有办法自动完成?

UPD这是ansible 所说的:

TASK [nginx : Add repository key] **********************************************
changed: [default]

TASK [nginx : Install nginx with passenger] ************************************
failed: [default] (item=[u'nginx', u'passenger']) => {"failed": true, "item": ["nginx", "passenger"], "msg": "Failure talking
 to yum: failure: repodata/repomd.xml from passenger: [Errno 256] No more mirrors to try.\nhttps://oss-binaries.phusionpassen
ger.com/yum/passenger/el/7/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml signature could not be verified for passenger"}

所以,这两种情况下确实都导入了密钥,但要使用它必须确认。

【问题讨论】:

  • 您应该能够使用expect 模块而不是命令之一来自动化用户交互
  • rpm_key 模块是否出错?或者您为什么尝试使用command 模块添加密钥?
  • @knowhy 我在我的问题中添加了更多细节。但是要回答你的问题,不,没有错误。只是安装包是不够的。请参阅上面的ansible 输出。

标签: centos ansible passenger yum gnupg


【解决方案1】:

添加存储库和存储库密钥后,只需更新该存储库的元数据:

- name: update repo cache for the new repo
  command: yum -q makecache -y --disablerepo=* --enablerepo=passenger

然后像以前一样继续使用yum: name=...

【讨论】:

  • 有趣的建议,但不幸的是 didn't 解决了。此外,让它不是每次都运行是一件好事。不要让它看起来像配置改变了一些东西,而实际上它并没有。由于command 任务默认标记为已更改。此外,这里不需要-q 开关。但这当然没什么大不了的。
  • 我遇到了yumrepo Ansible role,它看起来好像可以处理 repo 密钥,所以可能需要尝试一下。我还在Ansible's issue tracker 中打开了一份报告,因为它确实应该由rpm_key 模块正确处理。
  • 对不起,我的错,我忘了它也需要 EPEL 存储库。使用this playbook 成功。请考虑将其添加或链接到您的答案。
  • 再想一想,我认为yum makecache 没有表达意图,所以yum -y install 似乎是一个更好的选择。
【解决方案2】:

通过使用-y 开关直接运行yum 来修复它(并使用rpm_key 模块,如果有的话):

- name: Install nginx with passenger
  command: yum -y install {{ item }}
  with_items: [nginx, passenger]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多