Я использую puppet и модуль управления сетевыми устройствами puppet и пытаюсь создать свой собственный тип.
Во встроенном типе конфигурации маршрутизаторов вы можете указать список узлов, а затем конфигурацию внутри этого узла:
node "c2950.domain.com" {
Interface { duplex => auto, speed => auto }
interface { "FastEthernet 0/1":
description => "--> to end-user workstation",
mode => access, native_vlan => 1000
# [...] More configuration
}
Я пытаюсь переместить декларацию манифеста узлов и конфигурацию моего пользовательского типа в файл Hiera, подобный этому:
nodes:
- node1
- node2
config_device:
node1:
custom_parameter: "whatever1"
node2:
custom_parameter: "whatever2"
А затем в манифесте итерируйте файл hiera, создавая узлы с конфигурацией каждого узла с чем-то вроде (я принимаю в качестве ссылки этот вопрос в serverfault ):
class my_class {
$nodes = hiera_array('nodes')
define hash_extract() {
$conf_hash = hiera_hash("config_device")
$custom_paramter = $conf_hash[$name] ## TRICK lies in $name variable
node $name {
my_custom_device { $name:
custom_parameter => $device_conf['custom_parameter']
}
}
}
hash_extract{$pdu_names: }
}
}
Но для этого решения у меня есть две проблемы, я не могу определить node
внутри, define
и я не могу параметризовать имя узла. Итак, есть ли способ объявить узлы из файла Hiera с их конфигурацией внутри?