Puppet: Executa Augeas somente quando existe um pacote específico

4

Eu quero usar o Augeas para modificar o "/ etc / inittab", mas isso só deve acontecer quando o pacote "sysvinit" estiver instalado. Esse pacote não está sob controle Puppet (e não será).

O "onlyif" de Augeas não parece capaz de verificar nada além de Augeas, i.d. Augeas não pode verificar se o arquivo existe.

Existe uma maneira de conseguir isso sem criar um fato personalizado?

    
por Larsen 14.03.2014 / 17:00

2 respostas

2

Escreva um provedor Augeas e confinar a um fato que verifica a presença do pacote.

Para resumir:

  • Escreva um sysvinit_package fact, com o valor true ou false (ou até mesmo a versão do pacote)
  • Escreva um tipo e um provedor para inittab , que se limita ao fato.

Observação: a augeasproviders API está sendo refeita para criar facilmente provedores fora do módulo augeasproviders . Veja o provedor standalone do shellvar (PoC por enquanto, a API provavelmente funcionará dessa forma eventualmente) por exemplo.

Como alternativa, se você quiser usar o tipo augeas em vez de escrever um provedor (o que eu recomendaria), você pode simplesmente escrever um fato e usá-lo na DSL Puppet para evitar declarar o recurso augeas quando sysvinit não está instalado.

    
por 14.03.2014 / 18:54
1

Uma alternativa horrível seria descartar o tipo de recurso augeas para um recurso exec executando augtool e verificar o pacote em um comando onlyif .

Eu iria com o fato personalizado.

    
por 14.03.2014 / 18:29