Я пытаюсь реализовать марионетку /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