iteration - 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"
提前致谢
解决方案
第一个块中的任何内容都不会被返回,例如文件只会返回/tmp/second.txt,它是一个散列并且你有重复的键,所以它只会被覆盖。为了更好地了解正在发生的事情,您可能想要运行类似的东西
class appname (
$app_config
){
notify { $app_config[file]: }
$app_config[config_text].each |$item| {
notify { $item: message => $item }
}
}
它是一个哈希,因此您可以使用它的密钥访问其中的任何内容。
推荐阅读
- macos - macOS - 本地通知在几秒钟内消失
- javascript - AsyncStorage react native 无法获取项目
- mysql - 服务器自动关闭并面临“ERR_STREAM_WRITE_AFTER_END”错误以及每次向客户端发送的数据
- jquery - Oracle APEX 20.1 模式对话框中的日期选择器
- python - Python:如何创建搜索特定 IP 地址的字典列表函数
- c# - 在嵌套的异步方法中使用 ConfigureAwait
- typescript - Typescript 4:原型方法的临时覆盖
- python - 为什么 CountVectorizer 在函数中使用时不起作用?
- javascript - 根据其最新日期过滤数组响应中的单个值
- amazon-web-services - 将消息推送到 AWS Simple Queue Service 时发送电子邮件