Я новичок в Авгия, но мне сказали, что это то инструмент для изменения конфигурации с помощью марионетки.
Я пытаюсь создать простой класс, который добавляет строку в / 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> match / files / etc / hosts / 3 / alias / files / etc / hosts / 3 / alias = test
Моя текущая конфигурация кажется в лучшем случае непредсказуемой
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.