2013-02-11 56 views
2

我試圖使用哈希在木偶的第一次,所以我nodes.pp我將使用:傳遞一個哈希在木偶/定義的類型ERB

node test1.example.com { 
    netset::int::vconf {"servers" : 
     label1 => { 'comment' => 'VIP Test1', 'ipaddress' => '192.168.1.10', 'netmask' => '255.255.255.0', 'int_label' => 'TEST1' }, 
     label2 => { 'comment' => 'VIP Test2', 'ipaddress' => '192.168.1.11', 'netmask' => '255.255.255.0', 'int_label' => 'TEST2' }, 
    } 
} 

在我寫我創建一個定義類型的文件/etc/puppet/modules/netset/int/vconf.pp:

define netset::int::vconf ($comment,$ipaddress){...do somethings...} 

我questionis我怎麼通過散列的每個鍵的定義類型?不知何故,我想象着我將不得不在某處創建一個循環,任何幫助都會有很大的幫助。

謝謝丹

回答

1

Puppet(還)不支持循環。所以你基本上想要的是創建一個散列並將它傳遞給puppet函數「create_resources()」。所以,在你的情況下,它看起來是這樣的:

$my_hash = { 
    'label1' => { 
    'comment' => 'VIP Test1', 
    'ipaddress' => '192.168.1.10', 
    'netmask' => '255.255.255.0', 
    'int_label' => 'TEST1' 
    }, 
    'label2' => { 
    'comment' => 'VIP Test2', 
    'ipaddress' => '192.168.1.11', 
    'netmask' => '255.255.255.0', 
    'int_label' => 'TEST2' 
    }, 
} 

而在這之後:

create_resources(::netset::int::vconf, $my_hash) 

因此,它基本上是一樣的,如果你寫了這樣的事情:

::netset::int::vconf { 'label1' : 
    'comment' => 'VIP Test1', 
    'ipaddress' => '192.168.1.10', 
    'netmask' => '255.255.255.0', 
    'int_label' => 'TEST1' 
}, 

::netset::int::vconf { 'label2' : 
    'comment' => 'VIP Test2', 
    'ipaddress' => '192.168.1.11', 
    'netmask' => '255.255.255.0', 
    'int_label' => 'TEST2' 
}