Puppet Augeas с /etc/hosts

Я довольно новичок в Augeas, но мне сказали, что это инструмент для изменения конфигурации с помощью Puppet.

Я пытаюсь создать простой класс, который добавляет строку в / 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'",
           }

Кто-нибудь может помочь подтолкнуть меня в правильном направлении на этом?

2 ответа

Решение

Для управления записями хоста вы должны использовать host тип ресурса.

Этот тип поставляется по умолчанию с Puppet, но вы также можете использовать его с Augeas (что я бы порекомендовал) с помощью модуля http://augeasproviders.com/ (и, в частности, модуля 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.

Другие вопросы по тегам