2016-11-18 52 views
0

我已經使用Vagrant在Oracle VirtualBox中設置了Puppet主/代理,並且根據the README中的說明在主代理和代理上安裝了netdev_stdlibPuppet netdev_stdlib:如何解決「無效的資源類型netdev_device」?

我已經設置了模塊路徑/etc/puppet/modules/netdev_stdlib,其中標準庫stdlib也存在。

主節點爲puppet.example.com,代理爲node01.example.com

我的清單文件如下:

node default { 
    file { "/tmp/example_ip": ensure => present } 

    include stdlib    # No error on this line 
    # include netdev_stdlib  # Uncomment this line will cause error 
    netdev_device { $hostname: } 
} 

然而,當我我得到了

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type netdev_device at /etc/puppet/manifests/site.pp:17 on node node01.example.com Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run

客戶端我試圖在清單文件site.pp使用include netdev_stdlib上運行puppet agent -t,但木偶couldn找不到類netdev_stdlib。但是,include stdlib是好的。

+0

對不起,清單文件site.pp格式被搞砸了,我的觀點是文件'/ tmp/example_ip'能夠在主服務器和代理之間同步,所以文件很好,但是在添加netdev_device {$ hostname:}之後代理(或主服務器?)無法識別netdev_stdlib應該附帶的資源「netdev_device」。 – luke

+0

你在使用舞臺嗎?否則'包括stdlib'是不必要的。 –

回答

1

I tried to use include netdev_stdlib in manifest file site.pp but Puppet couldn't find the class netdev_stdlib, but include stdlib is fine.

netdev_stdlib模塊不提供類,它可以簡單地包括在內。它更多的是編寫新的Puppet類型來管理Ruby中的網絡設備的編程框架。

您應該使用模塊編寫自己的新網絡設備模塊,以便通過自述文件接口到某種新類型的設備,或者刪除它並不包括該類。

如果您嘗試管理網絡設備,則應該查找支持該類型設備的現有模塊 - 然後可以將此模塊用作依賴項。如果您沒有管理網絡設備,我認爲您不應該嘗試使用該模塊。

請注意,大多數模塊自述文件將指出可以包含的類名;並非所有的模塊都會包含Puppet類。

0

小姐{在文件類型的端:

變化從:

file { "/tmp/example_ip": ensure => present, 

file { "/tmp/example_ip": ensure => present, } 
相關問題