[英]Puppet can't find the module that I just installed
我發現的問題是我可以成功安裝Puppet模塊。 例如:
[puppet@swarmcritic ~]$ 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'
}
然后我得到這樣的錯誤:
[puppet@example 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
我該如何解決?
Puppet正在我的主目錄的.puppet目錄樹中安裝該模塊,但是當找到該模塊時,它沒有找到那里! 相反,它只是在/ etc / puppet / modules中查找。 它似乎默認情況下只在那里看。 如果你想讓它查看~myusername / .puppet,你必須在/etc/puppet/puppet.conf中配置一個路徑變量。
為了解決這個問題,我沒有試圖弄清楚如何修改Puppet路徑。 相反,我使用以下命令將模塊顯式安裝到/ etc / puppet / modules中:
sudo puppet module install -i /etc/puppet/modules puppetlabs/mysql
完成后,puppet apply命令工作正常。
進一步的實驗表明,如果執行沒有-i參數和root訪問權限的Puppet模塊安裝命令,它會將模塊安裝到/ etc / puppet / modules中,但是如果你沒有root訪問權限,它會將它安裝到〜名為myUsername / .puppet /模塊/。 所以,如果我在我的原始模塊安裝命令前面放了一個sudo,如下所示:
sudo puppet module install puppetlabs/mysql
然后就不會有任何問題。 您不必指定-i參數!
整個問題的出現是因為我選擇創建一個用戶帳戶來保存所有木偶內容,而不是在root帳戶中工作。 如果我在root帳戶中工作過,Puppet會(可能)已經將模塊安裝到/ etc / puppet / modules中,並且沒有問題。 這只是因為我創建了一個用戶帳戶,然后調用了沒有sudo的puppet模塊安裝命令,模塊最終在~myusername / .puppet中。 作為一個木偶新手,在~myusername / .puppet中安裝模塊似乎不是一個壞主意。 這似乎是安裝模塊的一個明智的地方,特別是如果一個人創建了一個用戶帳戶來管理Puppet。
所有這一切都不應該讓你創建一個用戶帳戶來保存所有的木偶配置文件。 但是,如果這樣做,請記住在安裝模塊時將sudo放在安裝命令的前面。
代表OP發表。
值得注意的是,模塊路徑可以如下找到:
# puppet config print modulepath
/etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules
更多信息可以在這里找到 ...
這取決於您使用的木偶版本:
在舊版本(3.6或更早版本)中,您可以在master上應用更改運行puppet module list
后,將puppet module list
modulepath
變量添加到puppet conf(在/etc/puppet/puppet.conf),以確認puppet識別出更改。
在較新的版本中,您可以創建一個木偶環境(在/ etc / puppet下為puppet 4.0或/ etc / puppetlabs / code for puppet 4.0及更高版本)並在environment.conf中包含模塊路徑。 您可以使用相同的命令( puppet module list
)來確保模塊安裝正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.