Я пытаюсь управлять своим /etc/hosts
файл с марионеткой, но мне не нравится внутренний тип host, я бы хотел по возможности использовать свой собственный шаблон.
Поэтому я определил ресурс «хост»:
# Basic hosts configuration
class hosts {
# Host resource
define host (
$address,
$names
) {
}
Network::Hosts::Host {
before => File['/etc/hosts']
}
# Configure hosts file
file {
"/etc/hosts":
ensure => present,
checksum => md5,
owner => root,
group => root,
mode => 0644,
content => template("network/hosts.erb"),
}
В других местах я определяю ресурсы хоста:
network::hosts::host { 'puppet.test.lan':
address => '192.168.56.101',
names => 'puppet',
}
Я хотел бы включить список определенных хостов в свой шаблон, но я не знаю, как перебирать ресурсы и их свойства. Я попытался использовать конкатенацию строк, но не смог заставить его работать и было не очень элегантно.
Как я могу перебрать все определенные мной хосты и включить их из шаблона?
Вы можете использовать R.I.Pienaar's марионетка модуль, в котором вы создаете один файл из множества небольших файлов или шаблонов.
Тогда определение будет выглядеть примерно так:
define host($address, $names) {
concat::fragment{"hosts-$address":
target => "/etc/hosts",
content => template("network/hosts_single.erb")
}
}
В hosts_single.erb
шаблон будет представлять одну строку в файле. Вы, вероятно, также добавите фрагмент для заголовка и установите order => "01"
чтобы убедиться, что он находится в верхней части сгенерированного файла (по умолчанию 10).
Я бы посмотрел на библиотека Авгия для управления записями в вашем /etc/hosts
файл. Это предварительное условие для Puppet, поэтому он уже установлен. Возможно, вам потребуется загрузить дополнительный пакет augeas, чтобы получить доступ к augtool
утилита командной строки. Это полезно для тестирования перед интеграцией Puppet.
Пример записи файла hosts, приведенный на главном сайте: http://augeas.net/tour.html
или
http://honglus.blogspot.com/2012/01/augeas-quick-start.html
Я полагаю, вы также можете распространить стандартный файл hosts и просто изменить строку, которая должна быть уникальной для каждого хоста ...