我无法获得puppet 2.6.4(客户端和主服务器)中的参数化类,
######## from /etc/puppet/manifests/nodes.pp # defining one node to use certain version ####################################################### node 'dev-internal-000008.domain.com' { include software($version="dev-2011.02.11") }
#来自/etc/puppet/modules/software/manifests/init.pp
#
class software($version="dev-2011.02.04b") { File { links => follow } file { "/opt/software_AIR": ensure => directory } file { "/opt/software_AIR/share": source => "puppet://puppet/software/air/$version", recurse => "true", } }
#
来自傀儡大师的错误
#
err: Could not parse for environment production: Syntax error at '='; expected ')' at /etc/puppet/manifests/nodes.pp:10 on node dev-internal-domain.com
#
find了一个解决这个问题
尝试
node 'dev-internal-000008.domain.com' { class { customsoftware:version => "dev-2011.02.04b" } }
不幸的是,参数化的类不能和include工作。 您必须使用与参数化类同时引入的新的替代类声明语法 :
node 'dev-internal-000008.domain.com' { # include software($version="dev-2011.02.11") # (doesn't work) class {'software': version => "dev-2011.02.11", } # works }
物联网:
file , service等)声明。 include 。 这预计将在2.7中改变,并且可能会引入一些更友好的语法。 你也可以使用一个基于主机名的select器:
class {'software': version => $::hostname ? { /hostname1/ => 'dev-2011.02.11', default => 'dev-2011.02.04b', }, }