Марионетка Augeas с/etc/hosts

Я довольно плохо знаком с 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'",
           }

Может кто-либо помогать пошагово переместить меня в правильном направлении на этом?

1
задан 8 December 2014 в 18:32
2 ответа

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

Этот тип по умолчанию поставляется с Puppet, но вы также можете использовать его с Augeas (что я бы рекомендовал) с помощью модуля augeasproviders (и, в частности, модуля augeasproviders-base).

2
ответ дан 3 December 2019 в 21:09

Почему бы не использовать ресурс 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.

0
ответ дан 3 December 2019 в 21:09

Теги

Похожие вопросы