Назад | Перейти на главную страницу

Шеф-повар: загрузка атрибутов из зашифрованного тега данных в роли json

Я хочу использовать поваренную книгу постфикса для шеф-повара. Предполагается, что пароль sasl находится в атрибуте. Обычно вы делаете это:

"default_attributes": {
  "postfix": {
    "sasl": {
      "smtp_sasl_passwd": "somepassword"
    }
  }
}

Дело в том, что я не хочу, чтобы пароль в репозитории был в виде обычного текста. Я положил его в зашифрованный пакет данных. Теперь я хочу получить к нему доступ. Это можно сделать так:

Chef::EncryptedDataBagItem.load("passwords", "postfix")['password']

Проблема: это работает только с файлом .rb, но моя роль - в json; все мои роли в json! Я не хочу менять это только для этой цели. Кто-нибудь знает, что здесь делать? Помощь очень ценится.

Преобразование ваших ролей в Ruby DSL здесь не поможет - они конвертируются в JSON перед загрузкой на сервер Chef, и именно версия JSON загружается chef-client. То же самое и с окружающей средой.

Другими словами, невозможно загрузить тег данных (зашифрованный или иным образом) из роли или среды. Вам нужно будет заложить такую ​​логику в рецепт поваренной книги.