我在puppet中創建一個小freeradius模塊。我有一些問題創造client.conf文件,它應該是這個樣子:在傀儡中迭代yaml散列
client switch01 {
ipaddr = 10.10.10.50
secret = secret
shortname = switch01
}
client switch02 {
ipaddr = 10.10.10.51
secret = secret
shortname = switch02
}
所以我想用一個模板文件clients.erb創建此。這些都是文件:
YAML文件:
test_freeradius::clients:
'switch01':
ip: '10.10.10.50'
secret: 'secret'
shortname: 'switch01'
'switch02::
ip: '10.10.10.51'
secret: 'secret'
shortname: 'switch02'
定義:
define test_freeradius::clients (
$ip,
$secret,
$shortname,
) {
include test_freeradius::service
if ! defined(File['/etc/freeradius/clients.conf']){
file { '/etc/freeradius/clients.conf' :
ensure => 'file',
owner => 'root',
group => 'freerad',
mode => '0640',
content => template('test_freeradius/clients.erb'),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
}
$data = hiera_hash('test_freeradius::clients')
}
init.pp:
class test_freeradius {
create_resources(test_freeradius::clients, $data)
}
我可以CREA一個這樣的客戶端:
client <%= @shortname %> {
ipaddr = <%= @ip %>
secret = <%= @secret %>
shortname = <%= @shortname %>
}
但我無法實現創建多個客戶端!最後我需要創建10個客戶端。
這不起作用:
<% test_freeradius::clients.each do |key,value| -%>
client <%= key %> {
ipadd = <%= value['ip'] %>
asecret = <%= value['secret'] %>
shortname = <%= value['shortname'] %>
}
<% end -%>
我的問題是我怎麼能遍歷哈希創建client.conf文件?
非常感謝!
感謝您的支持,它工作正常。我調整我的'init.pp': 類test_freeradius { $數據= hiera_hash('test_freeradius ::客戶) create_resources(test_freeradius ::客戶,$數據) } 我不完全明白你的意思是: 另外,你應該考慮只爲 你定義的資源類型創建該散列的參數,然後將其作爲屬性 參數傳遞。然後,您可以在您定義的資源類型中使用散列。 對不起!我對傀儡還是全新的!我要通過你發佈的鏈接。 再次。非常感謝! – Max
@Max很高興爲您效力。請接受我的答案,然後點擊旁邊的複選標記。 –
完成!你可以讓我朝着正確的方向如何在定義的資源中爲散列創建一個參數並將其作爲屬性參數傳遞給它?然後在定義的資源類型中使用哈希?謝謝! – Max