2015-05-10 20 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