Назад | Перейти на главную страницу

использование ресурса хоста марионетки с источником данных hiera

Я пытаюсь реализовать марионетку /etc/hosts обработка с использованием Иера в качестве источника данных, но моя текущая реализация требует дублирования данных, потому что я мог передавать только массив строк как $name к хозяин ресурс.

Есть ли способ избежать такого дублирования данных? Или, может быть, можно использовать шаблоны, но сохранить возможность локальных изменений в /etc/hosts файл?

class hosts ($hosts = hiera("hosts"), $hostsdefs = hiera("hostsdefs"))  { 

  define hostentry( ) { 
    host{ $name: ip => $hostsdefs[$name][ipaddress], 
                 host_aliases => $hostsdefs[$name][host_aliases]  } 
  } 

  hostentry{ $hosts: } 
} 

Данные YAML для hiera:

---- 
hosts: 
  - host1.example.com 
  - host2.example.com 
hostsdefs: 
  host1.example.com: 
    ipaddress: 10.0.0.1 
    host_aliases: host1 
 host2.example.com: 
    ipaddress: 10.0.0.2 
    host_aliases: host2 

Мне удалось найти следующее решение, используя create_resource функция

class hosts ($hosts = hiera_hash("hosts"))  {
  create_resources( 'host', $hosts )
}

мне нужно немного изменить мои исходные данные (изменить хэш-ключ на ip для соответствия параметру ресурса):

---- 
hosts: 
  host1.example.com: 
    ip: 10.0.0.1 
    host_aliases: host1 
 host2.example.com: 
    ip: 10.0.0.2 
    host_aliases: host2