Кукольный шаблон со строкой вместо массива

#yaml #puppet #erb #hiera

#yaml #кукольный #ошибка #hiera

Вопрос:

Я использую шаблон erb в Puppet для создания конфигурационного файла. Я использую следующий код:

 databasename = <%= @db_name %>
  

db_name переменная определена в следующем формате yaml:

 databases::db_name:
- DB_PLACEHOLDER
  

Проблема в том, что когда я генерирую файл из шаблона, Puppet заключает в квадратные скобки мою замену переменной, как показано ниже. Мне не нужны квадратные скобки?

 ["DB_PLACEHOLDER"]
  

Ответ №1:

["DB_PLACEHOLDER"] в Puppet и Ruby (поскольку вы используете ERB) синтаксически представляет собой массив с одним элементом: "DB_PLACEHOLDER" . Если вы не хотите, чтобы databases::db_name это был массив, тогда вам нужно указать его как строку, а не массив в вашем yaml, из которого просматривает Hiera.

В приведенном ниже примере указано databases::db_name как массив.

 databases::db_name:
- DB_PLACEHOLDER
  

Вы можете изменить тип databases::db_name на строку, используя соответствующий синтаксис yaml:

 databases::db_name: DB_PLACEHOLDER
  

В случае, если вывод типа во время поиска Hiera из yaml не приводит к преобразованию в string, вы всегда можете явно указать значение в виде строки в yaml:

 databases::db_name: 'DB_PLACEHOLDER'