Как определить узлы из файла Hiera в Puppet?

Я использую 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 с их конфигурацией внутри?

1 ответ

Почему вы хотите описать все узлы в одном файле hiera? Что делает hiera превосходным, так это его иерархическая конфигурация. Используйте отдельные файлы конфигурации для отдельных иерархических слоев и, наконец, создайте отдельный файл hiera для отдельного узла. И все эти слои будут объединены.

Другие вопросы по тегам