【问题标题】:Puppet template with string instead of array带有字符串而不是数组的木偶模板
【发布时间】:2019-03-20 15:05:26
【问题描述】:
我在 Puppet 中使用 erb 模板来制作配置文件。
我正在使用以下代码:
databasename = <%= @db_name %>
db_name 变量以以下 yaml 格式定义:
databases::db_name:
- DB_PLACEHOLDER
问题是,当我从模板生成文件时,Puppet 在我的变量替换周围放置方括号,如下所示。我不想要方括号?
["DB_PLACEHOLDER"]
【问题讨论】:
标签:
yaml
puppet
erb
hiera
【解决方案1】:
["DB_PLACEHOLDER"] 在 Puppet 和 Ruby 中(因为您使用的是 ERB)在语法上是一个具有一个元素的数组:"DB_PLACEHOLDER"。如果您不希望 databases::db_name 成为数组,则需要将其指定为字符串,而不是 Hiera 正在查找的 yaml 中的数组。
您的示例将databases::db_name 指定为一个数组。
databases::db_name:
- DB_PLACEHOLDER
您可以使用适当的 yaml 语法将databases::db_name 的类型更改为字符串:
databases::db_name: DB_PLACEHOLDER
如果在从 yaml 查找 Hiera 期间的类型推断未强制转换为字符串,您始终可以在 yaml 中将值显式指定为字符串:
databases::db_name: 'DB_PLACEHOLDER'