2014-09-01 78 views
0

要安裝節點上的模塊運行somethig喜歡:puppet module install SomeModuleOnForge如何在木偶中「需要」外部模塊?

有沒有把這段代碼清單中,而不必每一個節點上安裝它的方法嗎?

我知道我可以寫一些自定義代碼來做到這一點,但它不存在像是需要外部模塊的東西嗎?或者我必須下載模塊的代碼並將其放入我自己的回購站中?

使其更具體。我正在windows上做這個以及使用Josh Cooper powershell模塊,但是我無法使其工作。我的文件夾結構如下所示:

  • 木偶
    • 體現
      • site.pp
    • 模塊
      • PowerShell的
        • LIB
          • 木偶
            • 提供商
              • EXEC
                • powershell.rb
我認爲這是最重要的文件。模塊中的其餘部分也存在,但如果我正確理解代碼,則不需要它們。

我簡單愚蠢site.pp看起來是這樣的:

include powershell 
node default { 
    notify {"Stuff from default":} 
} 

node 'MYCOMPUTER' { 
    notify {"MYCOMPUTER":} 
} 

node 'winpuppet' { 
    notify {"Notify from random":} 
} 

exec {'get_eventstore': 
    command => 'Invoke-WebRequest http://download.geteventstore.com/binaries/EventStore-OSS-Win-v3.0.0-rc9.zip -OutFile c:\\downloads\\EventStore-OSS-Win-v3.0.0-rc9.zip', 
    creates => "c:/downloads/EventStore-OSS-Win-v3.0.0-rc9.zip", 
    provider => powershell, 
} 

file {'c:/downloads/EventStore-OSS-Win-v3.0.0-rc9.zip': 
    mode => 0755, 
    require => Exec["get_eventstore"], 
} 

notify {"I'm notifying you.":} 

這應該只是一個複製文件,沒什麼大礙,因爲我還在學習。

+0

您是否正在使用沒有中央主人的「puppet apply」?如果沒有,爲什麼要在每個代理上安裝模塊? – 2014-09-01 12:45:03

+0

我的計劃是使用git而不是主設置進行分發。 – 2014-09-01 18:05:47

回答

2

是的,可以從Puppet內部管理模塊。

您需要將"puppet_module" module與您的清單捆綁在一起(最好通過源代碼管理)。然後,您可以編寫清單如

module { 
    'joshcooper/powershell': 
     ensure => 'present' 
} 

它甚至有可能在提取了模塊相同的運行同步exec資源。確保那些exec s需要module,以便powershell供應商可以及時獲得。

1

您已經擁有了模塊的git存儲庫,因此您可以在每個節點上籤出該存儲庫。

Puppet模塊不需要任何安裝,只需將其內容複製到模塊目錄中。

puppet module install foo會執行一些檢查以確定適當的版本以符合其他已安裝模塊的要求,以及正在安裝的模塊所需的安裝,但只是下載數據並將其複製到模塊目錄中。

+0

你是對的,但我也必須把我的木偶目錄放在正確的位置,或者在執行apply時指定模塊的路徑。 – 2014-09-02 06:36:23

+0

這種方法有利有弊。好的一面是,你可以將精確的模塊版本提交給你的'git'樹。但是,然後,你可以通過將模塊版本提交給你的歷史來管理模塊版本。說到這一點,你會在回購中獲得很多影響力,以防你關心這些事情。 – 2014-09-02 08:48:26