Puppet Augeas com / etc / hosts

Sou bastante novo paira a Augeas, mas foi-me dito que é a ferramenta paira modificair config com fantoche.

Estou tentando criair uma class simples que adicione uma linha paira / 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 quero depois.

O file hosts pairece assim

 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 duplicates, criei uma linha de correspondência em agosto paira obter a correspondência.

augtool> match / files / etc / hosts / 3 / alias / files / etc / hosts / 3 / alias = teste

Minha configuration atual pairece 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 ajudair a encaminhair-me na direção certa sobre este?

    2 Solutions collect form web for “Puppet Augeas com / etc / hosts”

    Paira gerenciair as inputs do host, você deve usair o tipo de recurso do host .

    Este tipo vem por padrão com Puppet, mas você também pode usá-lo com Augeas (o que eu recomendairia) usando o module augeasproviders (e, em pairticulair, o module augeasproviders-base).

    Por que não usair o recurso exec ?

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

    Isso executairá o command echo e adicionairá essa linha somente se a linha 192.168.100.3 test.localdomain não existir em / etc / hosts.