我正在使用文件资源创build目录时出现以下错误
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`
但从技术上来说,目录正在被创build,从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':
用双引号replace单引号,然后该variables将被内插。 在所有使用单引号和variables的行上执行此操作(有四个)。
从日志中可以看到,它创build的目录中包含variables名称,而不是replacevariables的目录:
Notice: /Stage[main]/App/File[/data/tomcat/$dirsname/conf/]/ensure: created