如何使用ansible处理percona keyserver

how to deal with percona keyserver with ansible

我一直在尝试在 ansible 中创建一个 percona 角色,但失败了。我不会真的说失败,但它没有按计划工作。以下是角色的片段


- name: Setting up percona server apt-key
  apt_key: 
    id=1C4CBDCDCD2EFD2A
    keyserver=keys.gnupg.net
    state=present

在 运行 之后,我遇到了以下错误:

failed: [192.168.56.107] => {"cmd": "apt-key adv --keyserver keys.gnupg.net --recv 1C4CBDCDCD2EFD2A", "failed": true, "rc": 2}
stderr: gpg: requesting key CD2EFD2A from hkp server keys.gnupg.net
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

正如你所见,ansible 执行了以下命令:apt-key adv --keyserver keys.gnupg.net --recv 1C4CBDCDCD2EFD2A,同时实际有效的命令是 percona repository page 测试和推荐的 是 apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A。命令有所不同,前者只是--recv,后者是--recv-keys。我不知道如何使 ansible 运行 这个命令可以使用 ansible 命令模块本身。

还有这个 url 在 repo key 的 percona 下载页面上找到,可以在 apt_key 模块中使用而不是密钥服务器。

我想知道的是是否可以使用 --recv-keys

使 运行 实际的 apt_key 命令成为可能

Ansible 团队 source code for the apt_key module shows it building a command line using --recv but no mention of --recv-keys, so it doesn't look like you can use this module the way you want. I would suggest filing a feature request 要求他们支持这个标志。

同时您应该可以通过命令模块手动调用apt-key。该命令实际上与调试输出显示的内容相同:

 - name: call apt_key manually
   command: apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

以下命令应该适合您:

- apt_key: url=http://www.percona.com/redir/downloads/RPM-GPG-KEY-percona
           state=present