![在 Puppet 的定义类型中使用哈希](https://linux22.com/image/799096/%E5%9C%A8%20Puppet%20%E7%9A%84%E5%AE%9A%E4%B9%89%E7%B1%BB%E5%9E%8B%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%93%88%E5%B8%8C.png)
我第一次尝试在 Puppet 中使用哈希,因此在我的 nodes.pp 中我将使用它:
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 中,我正在创建一个定义的类型:
定义 netset::int::vconf ($comment,$ipaddress){...做一些事情...}
我的问题是如何将哈希表的每个键传递给定义的类型?不知怎的,我想象着我必须在某处创建一个循环,任何帮助都会有很大的帮助。
谢谢丹
答案1
我认为,你的定义是错误的。
如果你有:
define netset::int::vconf( $comment='', $ipaddress='' ) {
.....
}
然后你应该定义多个实例
netset::int::vconf {
label1: comment=>"comment1", ipaddress=>"192.168.1.1";
label2: comment=>"comment2", ipaddress=>"192.168.2.2";
}
其中label1
和label2
是 namevar。请注意定义之间的尾随分号。