我遇到了一个问题,我确信这是一个简单的修复,但我似乎找不到任何可以正确解释该行为的资源。我正在构建一个新的 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 具有删除和替换标准配置文件的能力。我在哪里错了?
根据 yoonix 的评论,我修改了我的模块以删除文件的重复并让它按我想要的方式工作。