Puppet Augeas com / etc / hosts

1

Sou relativamente novo no Augeas, mas me disseram que é a ferramenta para modificar a configuração com o fantoche.

Estou tentando criar uma classe simples que adicione uma linha a / etc / hosts se ela ainda não existir.

    augeas { "test_config":
             context => "/files/etc/hosts/01/",
             changes => [
                         "set ipaddr 192.168.100.3",
                         "set canonical test.localdomain",
                         "set alias[1] test",
                        ],

Isso cria a linha que eu estou seguindo.

O arquivo hosts se parece com isso

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

Como não quero duplicatas, criei uma linha de correspondência no augtool para obter correspondência.

augtool > correspondência / arquivos / etc / hosts / 3 / alias / files / etc / hosts / 3 / alias = test

Minha configuração atual parece ser imprevisível na melhor das hipóteses

    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'",
           }

Alguém pode me ajudar na direção certa?

    
por Bovril 08.12.2014 / 16:30

2 respostas

2

Para gerenciar entradas de host, você deve usar o tipo de recurso host .

Esse tipo vem por padrão com o Puppet, mas você também pode usá-lo com o Augeas (que eu recomendaria) usando o módulo augeasproviders (e em particular, o módulo base do augeasproviders).

    
por 08.12.2014 / 16:56
0

Por que não usar o recurso exec ?

exec{'serverfault demo':
     command => 'echo 192.168.100.3       test.localdomain >> /etc/hosts',
     unless => 'grep test.localdomain /etc/hosts',
     path => ['/bin','/usr/bin'],
}

Isso executará o comando echo e adicionará essa linha somente se a linha 192.168.100.3 test.localdomain não existir em / etc / hosts.

    
por 08.12.2014 / 17:29

Tags