我在登台服务器上运行Puppet,出于某些原因,puppet开始尝试删除可用站点的文件夹,但我不知道为什么。任何提示都会有所帮助。
Error: Could not set 'file' on ensure: Is a directory @ rb_file_s_rename - (/etc/nginx/sites-available20180808-12536-11p54v, /etc/nginx/sites-available) at 12:/etc/puppet/modules/nginx/manifests/vhost.pp
Error: Could not set 'file' on ensure: Is a directory @ rb_file_s_rename - (/etc/nginx/sites-available20180808-12536-11p54v, /etc/nginx/sites-available) at 12:/etc/puppet/modules/nginx/manifests/vhost.pp
代码:
define nginx::vhost($docroot, $port = 80, $template = 'nginx/vhost_php.erb', $allow = [], $deny = [], $aliases = [])
{
include nginx
file { "/etc/nginx/sites-available/${name}":
owner => 'root',
group => 'root',
mode => 644,
content => template($template),
require => Package['nginx'],
notify => Service['nginx'],
}
file { "/etc/nginx/sites-enabled/${name}":
ensure => 'link',
target => "/etc/nginx/sites-available/${name}",
require => File["/etc/nginx/sites-available/${name}"],
notify => Service['nginx'],
}
}
答案 0 :(得分:1)
正如@MattSchuchard在评论中指出的那样,错误消息表明Puppet认为您已要求它将目录转换为文件。此外,似乎该操作与清单中的第一个File
资源相关联,该资源声明了
file { "/etc/nginx/sites-available/${name}":
# ...
}
您会注意到,该资源似乎正在尝试管理目录中的文件,而不是目录本身,但是如果automagic $name
变量恰好采用空字符串作为其内容,则该差异将得到解决。值。这就是我所想的。
您没有显示nginx::vhost
资源的相关声明,但是我认为您会发现问题所在。这些错误消息的(略)广泛的上下文可能会证实这种诊断:它通常包含发生错误的资源的类似路径的规范,并且其中应包括相关的资源标题。