Я пытаюсь создать несколько каталогов, используя следующие манифесты
class app {
$dirs = app8
$appdirs = ['/data/tomcat/app8/conf', '/data/tomcat/app8/config', '/data/tomcat/app8/libs', '/data/tomcat/app8/deploy', '/data/tomcat /app8/webapps', '/data/tomcat/app8/temp', '/data/tomcat/app8/work']
file { "/data/tomcat/$dirs":
path => "/data/tomcat/$dirs",
ensure => directory,
owner => root,
group => root,
}
file { "$appdirs":
path => '$appdirs',
ensure => directory,
owner => root,
group => root,
mode => 0644,
}
}
Но когда я выполняю, он не работает с ошибкой ниже
# puppet agent --verbose --no-daemonize --onetime
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node-003.wiley.com
Error: Failed to apply catalog: Parameter path failed on File[[/data/tomcat/app8/conf, /data/tomcat/app8/config, /data/tomcat/app8/libs, /data/tomcat/app8/deploy, /data/tomcat/app8/webapps, /data/tomcat/app8/temp, /data/tomcat/app8/work]]: File paths must be fully qualified, not '$appdirs' at /etc/puppetlabs/code/environments/production/manifests/classes/app.pp:15
Подскажите, пожалуйста, как решить проблему
Удалите кавычки из названия ресурса и ненужные path
параметр:
file { $appdirs:
ensure => directory,
owner => root,
group => root,
mode => 0644,
}
С помощью "$appdirs"
создает одну строку с содержимым массива appdirs в ней, но вам нужно передать массив сам объявлять несколько ресурсов.
Похоже, вам нужно удалить кавычки вокруг переменной appdirs, и вам не нужно явно указывать путь.
Видеть этот ответ для примера.