
Я столкнулся с проблемой, которую, я уверен, легко исправить, но не могу найти никаких ресурсов, которые правильно объясняют поведение. Я создаю новый модуль nginx puppet для автоматизации развертывания сервера git.
Я использую стандартную настройку nginx и пытаюсь заменить файл ngnix.conf.
Я вызываю базовый класс, а затем прошу файлы отсутствовать перед размещением файла конфигурации, необходимого для моей настройки.
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"]
}
Это приводит к возникновению следующей ошибки при запуске модуля puppet на моем агенте:
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
Я понимаю, что puppet имеет возможность удалять и заменять стандартные файлы конфигурации. Где я ошибаюсь?
решение1
Согласно комментарию yoonix, я переработал свой модуль, чтобы удалить дублирование файлов и заставить его работать так, как мне нужно.