2013-05-03 53 views
0

木偶的TST-01正常工作:木偶與多個節點繼承打破使用時

node "tst-01" inherits basenode { 

但是當我嘗試整理服務器到組,這種配置它打破:

node "tst-01" inherits redhat6server { 

的「繼承redhat6server」的錯誤是:

err: Could not retrieve catalog; skipping run 
[[email protected] ~]# puppet agent --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template ldap/access.conf: Could not find value for 'netgroup' at 124:/etc/puppet/modules/ldap/templates/access.conf at /etc/puppet/modules/ldap/manifests/init.pp:82 on node tst-01.tst.it.test.com 
warning: Not using cache on failed catalog 
err: Could not retrieve catalog; skipping run 

這是access.conf文件,如果繼承它被設置爲「繼承basenode」。

[[email protected]]# grep -v "#" /etc/puppet/modules/ldap/templates/access.conf 
+ : root : LOCAL 
+ : @<%= netgroup %> : ALL 
- : ALL : ALL 
[[email protected]]# 

這是/etc/puppet/manifests/nodes.pp中的配置。

# Basenode configuration 
node "basenode" { 
     include resolv_conf 
     include sshd 
     include ntpd 
     include motd 
} 

# Groups 
node "redhat6server" inherits basenode { 
     include ldap_auth 
} 

# Testservers 
node "tst-01" inherits redhat6server { 
     $netgroup = tst-01 
} 

我打算通過分組機器來爲節點.pp帶來更多的組織(閱讀:避免配置重複)。 RH5和RH6機器,而不是爲所有RH5和RH6服務器添加多行包含。

+0

當您將值分配給$ netgroup時,您是否錯過了「tst-01」中的雙引號 – iamauser 2013-05-07 02:29:11

回答

1

您遇到一個變量範圍問題。官方documentation討論這個問題。

總之,redhat6server無法訪問網絡組變量。

我用來解決此問題的方法是使用hiera。有了這個,ldap_auth模塊可以這樣定義,並且它將從hiera配置文件(通常是/ etc/puppet/hiera中的yaml文件)中提取值。

你會定義了ldap_auth這樣的:

了ldap_auth /艙單/ init.pp:

class ldap_auth($netgroup=hiera('netgroup')) { 
... 
} 

或者,如果你對傀儡3.x中,你可以使用自動參數查找:

class ldap_auth($netgroup) { 
... 
} 

,並與YAML文件:

ldap_auth::netgroup = 'netgroup'