木偶试图重命名sites-avaialbe文件夹

时间:2018-08-08 13:00:43

标签: puppet

我在登台服务器上运行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'],
      }
    }

1 个答案:

答案 0 :(得分:1)

正如@MattSchuchard在评论中指出的那样,错误消息表明Puppet认为您已要求它将目录转换为文件。此外,似乎该操作与清单中的第一个File资源相关联,该资源声明​​了

file { "/etc/nginx/sites-available/${name}":
  # ...
}

您会注意到,该资源似乎正在尝试管理目录中的文件,而不是目录本身,但是如果automagic $name变量恰好采用空字符串作为其内容,则该差异将得到解决。值。这就是我所想的。

您没有显示nginx::vhost资源的相关声明,但是我认为您会发现问题所在。这些错误消息的(略)广泛的上下文可能会证实这种诊断:它通常包含发生错误的资源的类似路径的规范,并且其中应包括相关的资源标题。