首页 > 解决方案 > Puppet 5 迭代哈希

问题描述

如何使用迭代(未定义的资源)在 Puppet 5 中迭代以下层次

编辑了更多信息

我想创建一个带有配置文本的文件作为传递给模板的内容

这是我的工作。

希拉

appname::app_config:
  "/tmp/application.properties":
    config_text:
      - "# First Line"
      - "Second Line"
      - ""
      - "So forth"

  "/tmp/database.properties":
    config_text:
      - "Test Line"
      - "Another Test Line"

该层次的木偶迭代配置

  $appname_config.each | $config_file, Hash $config_text| {
    file { "$config_file" :
      ensure => present,
      content => template('modulename/generic_config.epp'),
      }
    }

模板

<% @config_text.each do |key, value| -%>
<% value.each do |key,value| -%>
<%= key %>
<% end %>
<% end -%>

但我有点需要使用以下格式

appname::app_config:
  file: "/tmp/dummy.config"
  config_text:
        - "Application Properties"
        - "TimePeriod = 1"
 
   file: "/tmp/second.txt"
   config_text:
        - "Application Properties"
        - "TimePeriod = 1"

提前致谢

标签: iterationpuppet

解决方案


第一个块中的任何内容都不会被返回,例如文件只会返回/tmp/second.txt,它是一个散列并且你有重复的键,所以它只会被覆盖。为了更好地了解正在发生的事情,您可能想要运行类似的东西

class appname  (
  $app_config
){
  notify { $app_config[file]: }
  $app_config[config_text].each |$item| {
    notify { $item: message => $item }
  }
}

它是一个哈希,因此您可以使用它的密钥访问其中的任何内容。


推荐阅读