Я довольно плохо знаком с Augeas, но мне сказали, что это - инструмент для изменения конфигурации с марионеткой.
Я пытаюсь создать простой класс, который добавляет строку к/etc/hosts, если он уже не существует.
augeas { "test_config":
context => "/files/etc/hosts/01/",
changes => [
"set ipaddr 192.168.100.3",
"set canonical test.localdomain",
"set alias[1] test",
],
Это создает строку, которая я после.
Файл hosts похож на это
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.3 test.localhost test
192.168.0.4 badger.oam.eeint.co.uk badger
Поскольку я не хочу дубликаты, я создал строку соответствия в augtool для получения соответствия.
augtool> соответствуют/files/etc/hosts/3/alias/files/etc/hosts/3/alias = тест
Моя текущая конфигурация, кажется, непредсказуема в лучшем случае
augeas { "test_config":
context => "/files/etc/hosts/*/",
changes => [
"set ipaddr 192.168.100.3",
"set canonical test.localdomain",
"set alias[1] test",
],
onlyif => "match alias 'test'",
}
Может кто-либо помогать пошагово переместить меня в правильном направлении на этом?
Для управления записями хоста вы должны использовать тип ресурса host
.
Этот тип по умолчанию поставляется с Puppet, но вы также можете использовать его с Augeas (что я бы рекомендовал) с помощью модуля augeasproviders (и, в частности, модуля augeasproviders-base).
Почему бы не использовать ресурс exec
?
exec{'serverfault demo':
command => 'echo 192.168.100.3 test.localdomain >> /etc/hosts',
unless => 'grep test.localdomain /etc/hosts',
path => ['/bin','/usr/bin'],
}
Это запустит команду echo
и добавит эту строку, только если строка 192.168 .100.3 test.localdomain
не существует в /etc/hosts.