2015-05-10 18 views
5

我一直试图在ansible和failing中创建percona角色。我不会说失败,但它没有按计划运作。以下是角色如何处理percona keyserver with ansible


- 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命令模块本身。

在percona下载页面上也可以找到这个URL到repo key,它可以在apt_key模块而不是keyserver中使用。

什么我想知道是它是否可能使ansible运行实际apt_key命令与--recv密钥

回答

3

下面的命令应该为你工作:

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

链接我第一次尝试的选项,但该命令是我结束了使用,因为它更自然地使用 –

+1

@blacksensei你没有提到你在原始问题中使用了url参数。另外,当本地模块可用时,使用“命令”模块通常是反模式。最后,当你运行它的命令时,你的命令总是会显示“changed”状态,在apt_key模块将显示正确的更改/ ok结果的情况下,如果已经完成了。 – Mxx

+0

对错误沟通感到抱歉。在我的文章中,我试图用下面这样的话来说:“percona下载页面上也有这个URL,它可以在apt_key模块中使用,而不是在keyserver中使用。”现在,作为反模式的命令对我来说确实是新的,我会做更多的搜索,如果是的话,请接受你的回答。 –

2

source code为apt_key模块显示它使用--recv建设一个命令行,但没有提及--recv-keys,所以它看起来并不像你想要的那样使用这个模块。我建议filing a feature request与Ansible团队要求他们支持这个标志。

与此同时,您应该可以通过命令模块手动调用apt-key。该命令将几乎等同于什么调试输出显示:

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