我正在尝试创建多个目录,然后将文件复制到每个目录。为此,我创建了以下资源
$dirs=myapp
$appdirs = [ "/data/tomcat/$dirs/conf", "/data/tomcat/$dirs/config" ]
file { $appdirs:
ensure => "directory",
owner => "root",
group => "root",
}
file { "Copy Directory":
path => "/data/tomcat/$dirs/conf",
ensure => "present",
recurse => "true",
source => "puppet:///modules/tomcat8/conf/"
}
}
但是我得到了已经定义的错误,如下所示
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error:
Evaluation Error: Error while evaluating a Resource Statement, Cannot alias File[Copy Directory] to
["/data/tomcat/jacplus8/conf"] at /etc/puppetlabs/code/environments/production/manifests/classes/app.pp:20;
resource ["File", "/data/tomcat/jacplus8/conf"] already declared at /etc/puppetlabs/code/environments/production
/manifests/classes/app.pp:14 at /etc/puppetlabs/code/environments/production/manifests/classes/app.pp:20:1
on node Node-003.example.com
在使用第一个资源文件 { $appdirs:} 创建文件后,我需要使用第二个资源文件 {"Copy Directory":} 将文件复制到目标目录,但是尽管资源名称不同,但它给了我已经定义的错误。我正在寻找解决方法,以便我可以创建目录,然后在其中复制文件。
我通过重写我的清单规则来解决它。为了创建目录,我删除了数组并使用单个文件资源创建了每个目录。还从文件名中删除了路径变量,并且要创建的目录作为资源名称提供。
}
我有这样的情况:
有一个错误,比如
资源 ["File", "/app/logs/archive"] 已声明
原来,
$instance_name
是空的,所以确实是,试图声明/app/logs/archive
两次。