【问题标题】:Puppet: Multiple files based on templatesPuppet:基于模板的多个文件
【发布时间】:2013-12-09 16:07:41
【问题描述】:

我有几个文件需要由 Puppet 创建,全部基于模板。举个例子:

/etc/my-project/a.ini
/etc/my-project/b.ini
/etc/my-project/c.ini

我想做的是确保所有这些文件都使用 Puppet 中的一个语句。像这样的:

define myFile {
  file { "/ect/init.d/$name.ini":
    ensure  => file,
    content => template("myProject/myFiles/$name.erb"),
  }
}

myFile { ['a', 'b', 'c']: }

但是,这似乎不起作用(受How to iterate over an array in Puppet 启发)。我在那里想念什么?如果不是$name,如何访问文件名并使用它?

【问题讨论】:

    标签: puppet


    【解决方案1】:

    您的数组声明很好,但您实际上是在尝试创建多个模板,所有模板都具有不同的文件名$name.erb。您应该将其更改为固定的模板名称,例如 template.erb

    要确保的另一件事是您的模板文件位置正确。

    • 如果您的清单位于模块中,则模板应位于 module_name/templates/template.erb 并称为 template("module_name/file_under_template_directory")

    • 如果它是独立清单,则必须改为使用完整路径 template("fully_qualified_path_to_template_file")

    最后,如果您仍然遇到错误,您应该使用错误消息更新您的问题,以便我们缩小原因。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用${name} 而不是$name

      如果不起作用,请检查您的模板文件(a.erbb.erbc.erb)是否在 <module_name>/templates/myProject/myFiles 目录中。

      如果所有这些都不起作用,请发布您的错误消息。

      【讨论】:

        【解决方案3】:

        试试这个...它将以优雅的方式达到您的目的。

        define myFile($file_name) {
          file { "/ect/init.d/${file_name}.ini":
            ensure  => file,
            content => template("myProject/myFiles/${file_name}.erb"),
          }
        }
        
        $values = {
                    item_1 => {file_name => "a"},
                    item_2 => {file_name => "b"},
                    item_3 => {file_name => "c"}
                   }
        
        
        
        
        create_resources(myFile,$values)
        

        【讨论】:

          【解决方案4】:
          ['a', 'b', 'c'].each |String $name| {
              file { "/ect/init.d/$name.ini":
                  content => template("myProject/myFiles/$name.erb"),
              }
          }
          

          puppet docs on iteration

          【讨论】:

            猜你喜欢
            • 2014-09-27
            • 2016-10-04
            • 2015-08-05
            • 2014-10-03
            • 2018-04-05
            • 2014-06-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多