При создании каталога с использованием файлового ресурса появляется следующая ошибка
Error: Cannot create /data/tomcat/${dirsname}/conf; parent directory /data/tomcat/${dirsname} does not exist
Error: /Stage[main]/App/File[/data/tomcat/${dirsname}/conf]/ensure: change from absent to directory failed: Cannot create /data/tomcat/${dirsname}/conf; parent directory /data/tomcat/${dirsname} does not exist`
Error: Cannot create /data/tomcat/$dirsname/config; parent directory /data/tomcat/$dirsname does not exist
Error: /Stage[main]/App/File[/data/tomcat/$dirsname/config]/ensure: change from absent to directory failed: Cannot create /data/tomcat/$dirsname/config; parent directory /data/tomcat/$dirsname does not exist`
Но технически каталоги создаются, как видно из puppet
вывод команды
Notice: /Stage[main]/App/File[/data/tomcat/$dirsname/conf/]/ensure: created
Notice: /Stage[main]/App/File[/data/tomcat/jacplus8/conf/context.xml]/ensure: defined content as '{md5}ba798c2de6dd554035c05352891a0d07'
Notice: /Stage[main]/App/File[/data/tomcat/jacplus8/conf/server.xml]/ensure: defined content as '{md5}6298e53557ead6855cef9bcbb082a074'`
Notice: /Stage[main]/App/File[/data/tomcat/$dirsname/config/]/ensure: created
Notice: /Stage[main]/App/File[/data/tomcat/jacplus8/config/runtime.settings]/ensure: defined content as '{md5}2e2596f0f9107c8cfc783da3d5004dae'`
Я проверил структуру каталогов, каталоги доступны, но не знаю, почему отображаются сообщения об ошибках. Мои правила манифестов заключаются в следующем
class app {
$dirsname=myapp8
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/"
}
}
file { '/data/tomcat/$dirsname/conf':
Замените одинарные кавычки двойными, тогда переменная будет интерполирована. Сделайте это для всех строк в одинарных кавычках и переменных (их четыре).
Как видно из журнала, он создает каталоги с именем переменной в нем, а не каталог с замененной переменной:
Notice: /Stage[main]/App/File[/data/tomcat/$dirsname/conf/]/ensure: created