0
我正在使用無主配置中的Puppet 4.5,並試圖創建一個Puppet函數來讀取指派角色和環境的簡單配置文件。我沒有任何可以改變的hiera/facter的集成。函數讀取masterless puppet中的角色,環境文件
的文件格式是:
host1::java_app_node::qa
host2::nodejs_app_node::prod
木偶的功能,將讀取該文件是一個名爲homebase
模塊中。我想函數返回一個哈希或散列數組,分裂配置值。這將讓我在模板中使用它們。
在modules/homebase/manifests/init.pp
我定義:
$role_file = 'puppet://role.lst'
我然後創建modules/homebase/functions/get_roles.pp
如下:
function homebase::get_roles() {
$func_name = 'homebase::get_roles()'
if ! File.exists?($::homebase::role_file) {
fail("Could not find #{$::homebase::role_file}")
}
hosts = { }
File.open($::homebase::role_file).each |line| {
parts = line.split(/::/)
hosts[parts[0]] = { 'host' => parts[0], 'role' => parts[1], 'env' => parts[2] }
}
return hosts
}
在其他類,然後我想打電話:
class myapp {
$servers = homebase::get_roles().each | k, v | {
$v['host'] if $v['role'] =~ /myapp/ && $v['env'] == $environment
}
file { 'myapp.cfg':
ensure => file,
path => '/opt/myapp/myapp.cfg',
source => template("/myapp/myapp.cfg.erb"),
mode => '0644',
owner => myuser,
group => myuser,
}
}
好像有將是一個更好的方式來做到這一點。我完全脫離基地嗎?
無主,無法改變Facter或Hiera?鑑於這些苛刻的限制,這似乎是一個合理的選擇。 –
@MattSchuchard - 我對傀儡有點新鮮。有沒有什麼辦法可以在我的git倉庫中使用hiera/factor,並且獨立於默認的系統配置(/etc/puppet.conf)? – saarp
是的:您可以使用外部和自定義事實。另外,如果您使用的是非古老版本的Puppet(> = 4.3),則可以使用Hiera模塊數據。請注意,在Puppet 4.8之前,模塊數據不是「生產準備」。 –