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