2014-02-05 91 views
3

我發現的問題是我可以成功安裝Puppet模塊。例如:Puppet找不到我剛剛安裝的模塊

[[email protected] ~]$ puppet module install puppetlabs/mysql 
Notice: Preparing to install into /home/puppet/.puppet/modules ... 
Notice: Created target directory /home/puppet/.puppet/modules 
Notice: Downloading from https://forge.puppetlabs.com ... 
Notice: Installing -- do not interrupt ... 
/home/puppet/.puppet/modules 
└─┬ puppetlabs-mysql (v2.1.0) 
    └── puppetlabs-stdlib (v4.1.0) 

但是當我嘗試使用nodes.pp文件中像這樣調用模塊:

node 'example.com' { 
    include '::mysql::server' 
} 

然後我得到一個錯誤這樣的:

[[email protected] mysql]$ sudo puppet apply ~puppet/puppet/manifests/site.pp 
Error: Could not find class ::mysql::server for example.com on node example.com 
Error: Could not find class ::mysql::server for example.com on node example.com 

如何我可以修復它嗎?

回答

2

值得注意的是如下ModulePath進行,可以發現:

# puppet config print modulepath 
/etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules 

更多信息可以在這裏找到...

https://puppetlabs.com/learn/autoloading

4

木偶是在安裝模塊。傀儡目錄 我的主目錄樹,但沒有看那裏時,它來看看 模塊!相反,它只能在/ etc/puppet/modules中查找。它似乎 ,默認情況下,它只看起來那裏。如果你想看看〜myusername/.puppet, ,你必須在/etc/puppet/puppet.conf中配置一個路徑變量。

爲了解決這個問題,我沒有試圖弄清楚如何修改Puppet路徑。 相反,我安裝了模塊明確納入使用 以下命令在/ etc /傀儡/模塊:

sudo puppet module install -i /etc/puppet/modules puppetlabs/mysql 

一旦這樣做,木偶apply命令工作得很好。

進一步的實驗表明,如果執行木偶模塊安裝不帶-i參數和根權限 命令,將模塊安裝到 的/ etc /傀儡/模塊,但如果你沒有root權限,它會將它安裝到〜myusername/.puppet/modules /中。所以,如果我這樣把須藤在前面我原來 模塊安裝命令:

sudo puppet module install puppetlabs/mysql 

那麼不會有任何問題。您不必指定-i參數!

整個問題出現了,因爲我選擇創建一個用戶帳戶來保存所有 傀儡的東西,而不是在root帳戶中工作。如果我曾在 的根帳戶上工作過,Puppet會(假設)已經將模塊安裝到了 /etc/puppet/modules中,那就沒有問題了。這只是因爲 我創建了一個用戶帳戶,然後在沒有sudo的情況下調用puppet module install命令 ,模塊以〜myusername/.puppet結尾。作爲一個傀儡 新手,安裝在〜myusername/.puppet中的模塊似乎不是一個不好的 想法。這似乎是安裝模塊的明智之選, 特別是在創建用戶帳戶來管理Puppet的情況下。

所有這一切都不應該讓你創建一個用戶帳戶來容納你所有的 puppet配置文件。但是,如果你這樣做,記得在安裝模塊時,把sudo放在安裝命令的前面 。

發表於OP。

+0

我嘗試使用puppetlabs/postgresql模塊時遇到了同樣的問題,並且使用'sudo puppet module install -i/etc/puppet/modules puppetlabs/postgresql'完成了這個任務。 –

1

這取決於其傀儡的版本使用的是:

在舊版本(3.6或以上)

,您可以將modulepath變量添加到您的木偶配置(在/etc/puppet/puppet.conf) 在主人上應用更改後運行puppet module list以確認木偶認出更改。

在更新的版本中,假設您創建了一個puppet環境(在/ etc/puppet之前爲puppet 4.0或/ etc/puppetlabs/code爲puppet 4.0及更高版本),並將模塊路徑包含在environment.conf中。 您可以使用相同的命令(puppet module list)確保模塊安裝正確。

相關問題