【问题标题】:Duplicate declaration error with puppet木偶重复声明错误
【发布时间】:2013-11-29 06:13:21
【问题描述】:

我尝试创建一个文件夹,然后尝试将一些文件复制到其中,如下所示。

init.pp

$tempfolder = "D:/TempFolder/" 


file { [ $tempfolder ]:
    ensure => "directory",
}

file { [ $tempfolder ]:

    ensure => present,
    recurse => true,
    source => "E:/TestFiules",
}

当我尝试运行它时,它给出了以下错误

错误:重复声明:文件 [ D:/TempFolder/ ] 已声明。

用法有什么问题?

【问题讨论】:

    标签: puppet


    【解决方案1】:

    供参考:http://docs.puppetlabs.com/guides/techniques.html#how-can-i-manage-whole-directories-of-files-without-explicitly-listing-the-files

    你可以这样做

    file { "$tempfolder":
        ensure => directory,
        recurse => true,
        source => "E:/TestFiules",
    }
    

    ensure => directory 还确保它会存在,因此您不必再次声明它。

    【讨论】:

      【解决方案2】:

      一个节点只能声明一个同名的资源,在本例中为$tempfolder$tempfolder 要么创建为空(您的第一个声明),要么创建并填充您的 E:/TestFiule 内容(第二个声明)。

      请注意,您可以删除通常用于一次创建多个目录的数组语法,或者确保像创建tree这样的顺序

      【讨论】:

      • 我的目的是先创建一个文件夹并尝试从不同位置复制文件。有没有办法将所有这些过程与一个命令结合起来?还是过程?
      • 我没有测试:但通常只保留它将在一个步骤中创建和复制的第二个声明
      【解决方案3】:

      我是在什么时候看到这条消息的,但错误是:

      Error: Duplicate declaration: File[] is already declared in file init.pp:40; cannot redeclare at init.pp:46 on node (redacted)

      它正在查找的文件未定义,因为我的 Hiera 配置不正确。结果它声明了两个名为“”的文件。

      验证 Hiera 是否正确传递值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-21
        • 2014-07-29
        • 1970-01-01
        相关资源
        最近更新 更多