2014-06-10 72 views
1

我们使用puppet模块来创建我们的主机条目,并且它变得相当大。目前我们有这个

host { hiera('server1-hostname'): 
ip   => hiera('server1-ip-host'), 
host_aliases => 'server1', 
} 

而且我们有每个服务器一次。我们还得到了一个开发和生产环境,它们的服务器数量略有不同,它们都变得有点混乱。

为了简化它,我在班上然后尝试这种

define hosts::addhost() { 
host { hiera("${title}-hostname"): 
ip   => hiera("${title}-ip-host"), 
host_aliases => $title, 
} 
} 

$hostlist = server1, server2 

addhost {$hostlist: } 

但给我的各种错误,如

在“

语法错误: “;预计'}'

这可能吗?这只是标点问题还是需要完全不同的方法?

+0

理论上可以使用'$ hostlist = [server1,server2,...]'(介意'[]'s),但是,有更好的方法。答案即将出现。 –

回答

1

使用exported resources来解决这个问题不会那么麻烦。

每个服务器出口自己的主项,依靠事实如$::hostname

@@host { "$::fqdn": ip => $::ipaddress_eth0, host_aliases => $::hostname, tag => "server-list" } 

而且还从所有imorts所有这些资源(其他)的机器

Host<<| tag == "server-list" |>> 

当然你也可以使用Hiera使覆盖这些值成为可能,例如如果facter选择了错误的地址,则导出特定的IP地址。

@@host { "$::fqdn": 
    ip => hiera('hosts-ip-address', $::ipaddress_eth0), 
    host_aliases => $::hostname, 
    tag => "server-list" 
} 

如果坚持有在Hiera您完整的内容,您不妨考虑以下结构

hosts: 
    "server1-hostname": 
    ip: "a.b.c.d" 
    host_aliases: server1 
    "server2-hostname": 
    ... 

,并在清单中根本

create_resources('host', hiera('hosts')) 

但这是多余的信息,看作是因素可以收集所有这些对你来说(见上)。

相关问题