2016-02-12 32 views
0

我需要使用puppet爲一堆Ubuntu主機添加apt存儲庫密鑰。使用puppet在Ubuntu下添加回購密鑰

會這樣的聲明工作嗎?

exec {"add apt key for elastic": 
     command => "/usr/bin/curl https://packages.elasticsearch.org/GPG-KEY-elasticsearch | /usr/bin/apt-key add -", 
    } 

感謝

回答

0

是的,這應該工作,但每當你重新運行木偶這也將應用相同的配置。

exec docs

在EXEC資源的任何命令必須能夠多次運行,不會造成危害 - 也就是說,它必須是冪等。執行者有三種主要方式是冪等的:

  • 該命令本身已經是冪等的。 (例如,apt-get update。)
  • exec有一個唯一標識符,除非或創建屬性,這會阻止Puppet運行該命令,除非滿足某些條件。
  • exec有refreshonly => true,它只允許Puppet在其他資源發生更改時運行該命令。 (見下面刷新記錄。)
+0

非常感謝!我怎樣才能讓exec命令每個主機只運行一次?謝謝 – bluethundr

+0

@bluethundr你應該實現一個表達式來驗證這個鍵是否已經被添加了。如果你的表達式返回'0'或者'true',如果一個鍵被添加了,你應該使用'unless',否則你應該使用'onlyif'。查看[doc]中的示例(http://docs.puppetlabs.com/puppet/latest/reference/type.html#exec)。 –

0

我嘗試只用高管,如果我真的不得不這樣做。其中一個原因是您必須對exec進行編碼,以便只在需要時才運行。相反,您可以使用apt模塊。這隻會將密鑰放置在主機上,如果它不存在。該資源是在傀儡控制下,因此不會在後續運行中添加:

include apt 

    apt::key { 'elasticsearch': 
    id  => '46095ACC8548582C1A2699A9D27D666CD88E42B4', 
    options => 'https://packages.elasticsearch.org/GPG-KEY-elasticsearch', 
    } 
+0

你是如何得到身份證的? – anudeep

+0

@anudeep從elasticsearch [文檔](https://www.elastic.co/guide/en/elasticsearch/reference/2.1/setup-repositories.html#setup-repositories) – jaxim