Não é possível instalar o mailman com o Puppet se o maillist também for especificado

2
package { 'mailman':
  ensure  => installed,
  require => Package['exim4'],
}
maillist { 'mailman':
  ensure      => 'present',
  admin       => $admin,
  description => 'Site list',
  password    => $master_password,
  require     => Package['mailman'],
}

Se o pacote "mailman" não foi instalado, então o fantoche reclama que "não foi possível encontrar um provedor padrão para o maillist". Parece que isso considera um erro no manifesto, porque ele aborta completamente e não aplica nenhuma configuração. Como resultado, ele não processa a diretiva "package {'mailman': ...}", o que significa que não instala o mailman. Preciso comentar a diretiva maillist, aplicar a configuração para que o mailman seja instalado, descomentar e reaplicar. Mas isso não é satisfatório.

Como posso fazer isso de uma maneira melhor?

    
por Antonis Christofides 07.03.2012 / 17:48

2 respostas

4

Houve uma correção no Puppet 2.7.8, para o problema # 6907 que permite que um provedor seja instalado ou sincronizado durante a execução em que está sendo usado (sujeito a dependências normais sendo especificadas). Veja os 2.7. 8 notas de lançamento também.

Você deve encontrá-lo corrige este caso, permitindo que você instale a dependência do Mailman para o provedor do maillist durante a mesma execução.

    
por 07.03.2012 / 21:59
2

Uma coisa simples que você pode fazer é criar um fato personalizado que informará se o mailman está instalado em seu sistema . Apenas faça com que o fato retorne verdadeiro ou falso, dependendo da presença do binário.

Em seguida, adicione um condicional ao seu manifesto.

if (true = $gotmailman)
{
    maillist { 'mailman':
      ensure      => 'present',
      admin       => $admin,
      description => 'Site list',
      password    => $master_password,
      require     => Package['mailman'],
    }
}
    
por 07.03.2012 / 18:11

Tags