2013-02-11 2 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 как передать каждые ключи хэш в определенном тип? Каким-то образом я представляю себе, что мне нужно будет создать петлю где-нибудь, любая помощь будет очень полезной.

Благодаря Dan

ответ

1

кукол (пока) не поддерживает петли. Так что вы в основном хотите создать хэш и передать его марионеточной функции «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' 
} 
Смежные вопросы