
Encontrei um problema que tenho certeza de ser uma solução simples, mas não consigo encontrar nenhum recurso que explique o comportamento corretamente. Estou construindo um novo módulo fantoche nginx para automatizar a implantação do servidor git.
Estou usando uma configuração nginx padrão e tentando substituir o arquivo ngnix.conf.
Eu chamo a classe base e solicito que os arquivos fiquem ausentes antes de colocar o arquivo de configuração necessário para minha configuração.
class { 'nginx': }
$nginx_default_files_to_remove =
[
"/etc/nginx/conf.d/default.conf",
"/etc/nginx/default.d/php.conf",
"/etc/nginx/nginx.conf"
]
file { [ $nginx_default_files_to_remove ]:
ensure => 'absent',
require => Class["nginx"]
}
Isso faz com que o seguinte erro seja gerado quando executo o módulo fantoche em meu agente:
Error 400 on SERVER: Duplicate declaration: File[/etc/nginx/nginx.conf] is
already declared in file /etc/puppet/modules/nginx/manifests/config.pp:331;
cannot redeclare at /etc/puppet/modules/sf_nginx/manifests/git.pp:18
Entendo que o puppet tem a capacidade de remover e substituir arquivos de configuração padrão. Onde estou errando aqui?
Responder1
De acordo com o comentário de Yoonix, revisei meu módulo para remover a duplicação de arquivos e fazê-lo funcionar como desejo.