Я пытаюсь создать несколько каталогов, а затем скопировать файлы в каждый из каталогов. Для этого я создал следующий ресурс
$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
Мне нужно скопировать файлы, используя второй файл ресурсов {"Copy Directory":}, в целевой каталог после того, как он будет создан с использованием первого файла ресурсов {$ appdirs:}, но он выдает уже определенную ошибку, хотя имена ресурсов разные. Я ищу обходные пути, чтобы я мог создавать каталоги, а затем копировать в них файлы.
Я решил это вот так, переписав свои правила манифестов. Для создания каталогов я удаляю массивы и создаю каждый каталог, используя единственный файловый ресурс. Также удалил переменную пути из имени файла, и каталог, который должен быть создан, был указан как имя ресурса.
class app {
$dirsname=myapp
file { 'directory':
path => "/data/tomcat/${dirsname}/",
ensure => "directory",
owner => "root",
group => "root",
}
file { '/data/tomcat/${dirsname}/conf':
ensure => "directory",
owner => "root",
group => "root",
require => File['directory'],
}
file { '/data/tomcat/$dirsname/config':
ensure => "directory",
owner => "root",
group => "root",
require => File['directory'],
}
file { '/data/tomcat/$dirsname/conf/':
path => "/data/tomcat/$dirsname/conf/",
ensure => "present",
recurse => "true",
source => "puppet:///modules/conf/"
}
file { '/data/tomcat/$dirsname/config/':
path => "/data/tomcat/$dirsname/config/",
ensure => "present",
recurse => "true",
source => "puppet:///modules/config/"
}
}