我在Puppet中使用erb模板来制作配置文件。我使用以下代码:
databasename = <%= @db_name %>
db_name
变量以以下yaml格式定义:
databases::db_name:
- DB_PLACEHOLDER
问题是,当我从模板生成一个文件时,Puppet在我的变量替换中加上方括号,如下所示。我不想要方括号?
["DB_PLACEHOLDER"]
Puppet和Ruby中的["DB_PLACEHOLDER"]
(因为你使用的是ERB)在语法上是一个带有一个元素的数组:"DB_PLACEHOLDER"
。如果你不希望databases::db_name
成为一个数组,那么你需要将它指定为一个字符串而不是你的yaml中的数组,而Hiera正在查找它。
您的示例将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'