![Puppet 中模块之间的文件冲突](https://linux22.com/image/726164/Puppet%20%E4%B8%AD%E6%A8%A1%E5%9D%97%E4%B9%8B%E9%97%B4%E7%9A%84%E6%96%87%E4%BB%B6%E5%86%B2%E7%AA%81.png)
我遇到了一个问题,我确信这是一个简单的修复,但我似乎找不到任何可以正确解释该行为的资源。我正在构建一个新的 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 的评论,我修改了我的模块以删除重复的文件并使其按我想要的方式工作。