使用puppet重复声明错误

时间:2013-11-29 06:13:22

标签: puppet

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

init.pp

$tempfolder = "D:/TempFolder/" 


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

file { [ $tempfolder ]:

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

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

  

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

使用方法有什么问题?

3 个答案:

答案 0 :(得分: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也确保它存在,因此您不必再声明它。

答案 1 :(得分:0)

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

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

之类的顺序

答案 2 :(得分:0)

我遇到此消息时,但错误是:

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

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

的文件

验证Hiera是否正确传递值。