Я хочу использовать поваренную книгу постфикса для шеф-повара. Предполагается, что пароль 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. То же самое и с окружающей средой.
Другими словами, невозможно загрузить тег данных (зашифрованный или иным образом) из роли или среды. Вам нужно будет заложить такую логику в рецепт поваренной книги.