Рубрики
Без рубрики

Из настроек импорта Dynaconf

Единственная строка кода, необходимая для управления конфигурациями Python 3. Теги с Python, Django, Flask, 12Factorapp.

Часто при запуске нового проекта Python нам нужно провести некоторое время, думая о том, как управлять настройками, решить, какой модуль будет записан менеджер конфигурации, решить, какое имя предоставить этому модулю, создать класс или функцию для хранения конфигурации Клавиши, создайте условия для нескольких сред и все еще нужно беспокоиться о том, где эти ключи будут храниться и в каком формате файлов?

Больше не надо! Теперь у вас есть Dynaconf Действительно

Rochacbruno/Dynaconf.

Управление конфигурацией для Python 🔧 ⚙

Dynaconf – Управление конфигурацией для Python.

Функции

  • Вдохновлен 12-факторное руководство по применению
  • Управление настройками (значения по умолчанию, проверка, анализ, шаблон)
  • Защита конфиденциальной информации (пароли/токены)
  • Несколько форматов файлов Toml | Ямл | JSON | INI | PY а также настраиваемый погрузчики.
  • Полная поддержка переменных среды для переопределения существующих настроек (включена поддержка DOTENV).
  • Дополнительная слоистая система для мультирежи [по умолчанию, разработка, тестирование, производство]
  • Встроенная поддержка Hashicorp Vault и Redis в виде хранения настроек и секретов.
  • Встроенные расширения для Джанго и Колбу Веб-каркасы.
  • CLI для общих операций, таких как init, список, запись, проверка, экспорт Отказ
  • Fuill Docs On https://dynaconf.com.

Быстро Начните

Установить

$ pip install dynaconf

Инициализировать Dynaconf на корневой каталог проекта

$ cd path/to/your/project/
$ dynaconf init -f toml
⚙️  Configuring your Dynaconf environment
------------------------------------------
🐍 The file `config.py` was generated
🎛️  settings.toml created to hold your settings.

🔑 .secrets.toml created to hold your secrets.

🙈 the .secrets.* is also included in `.gitignore`
  beware to not push

Проведите свое драгоценное время Разработка вашего приложения, запустить Пип Установить Dynaconf И пусть Dynaconf позаботится о ваших настройках.

Быстрый старт.

from dynaconf import settings

Вот и все!

Это единственная линия кода, необходимая вам, без сложной котельной, нет Hadouken-IfS. , не нужно поддерживать классы конфигурации.

Вы должны задаться вопросом – “Что это волшебство? Откуда приходят значения настройки?

Ну, нет магии, и ценности могут прийти от того, куда вы хотите, по умолчанию и после рекомендаций 12-факторных приложений Dynaconf имеет предпочтение для переменных среды.

# optionally you can save it in .env file
export DYNACONF_DEBUG=true
export DYNACONF_NAME=Bruno
# app.py
from dynaconf import settings
if settings.DEBUG is True:
    print(settings.NAME)
$ python3 app.py
Bruno

И переменные среды для Dynaconf набираются с помощью Toml формат Итак, правда был оценен до логика Правда И это позволяет экспортировать списки, словари, плавать, логические и так далее.

Узнайте больше о envvars

Больше, чем переменные окружающей среды

Ну, это круто, но ваш проект не будет иметь настроек, исходящих из переменных среды, я уверен, что вы хотите иметь файл настроек, где вы можете установить значения по умолчанию.

Dynaconf можно прочитать несколько форматов файлов, из коробки, которые он поддерживает .py , .toml , .ini.ini. и .json. . Если Pyyaml установлен, тогда он также поддержит .yaml И вам не нужно заботиться о нахождении и открытии файлов. Предпочтительный формат – .toml Поскольку в настоящее время он находится лучший формат конфигурации, широко принятый, и вы можете использовать любой формат файла, который вы хотите.

# settings.toml
[default]
name = "Bruno"

[development]
debug = true

[production]
debug = false
# app.py
from dynaconf import settings
if settings.DEBUG is True:
    print(settings.NAME)
$ python3 app.py
Bruno

И как вы можете увидеть сейчас, используя настройки. Файл мы можем иметь отдельные [Среда] По умолчанию Dynaconf всегда будет работать на [Развитие] что означает только [по умолчанию] и [Развитие] Переменные будут загружены. В любое время вы можете сделать Экспорт И тогда он начинает использовать значения из [Производство] среда.

Если вы не хотите иметь это разделение по окружающей среде, вы можете просто поставить все под [по умолчанию] раздел.

Узнайте больше о Срежи и файл настроек

Некоторые значения – секреты

Хорошая практика – не хранить ваш секреты нравиться пароли и токены Непосредственно на файлах настроек, потому что вы можете ошибиться и совершить что на публичное хранилище GIT, поэтому есть некоторые альтернативы для хранения секреты

Переменные среды

Не рекомендуется

Есть некоторые люди, которые не согласен И это действительно точка безопасности безопасности. Однако, если вы уверены, что ваша машина защищена, вы можете оставить секреты в переменных, на свой собственный риск, Dynaconf может прочитать его нормально.

Секретные файлы

Это простой уровень безопасности для хранения секретов, и это особенно полезно для хранения Развитие секреты. Что токен Вы используете для доступа к API разработки и т. Д.

Это очень просто вместе с вашим обычным settings.toml. Вы поместите новый файл под названием .secrets.toml и хранить свои чувствительные данные там. Dynaconf прочитает его после чтения settings.toml.

Подожди .. Как это решает мою проблему безопасности?

Ну, это не (все же) Но это делает вашу жизнь проще двумя способами.

  1. Поставить .Secrets. * В вашем ~/.gitignore. Таким образом, вы никогда не будете совершать ошибку отправки этих данных в хранилище Git Git.
  2. Dynaconf может выводить отладку информации, когда Debug_level_for_dynacon = Debug Экспортируется, все загруженные значения напечатаны, но если значения исходят из A .Secrets. * Файл, то только ключ печатается, и значение маскируется. Полезно использовать на публике CI.
  3. Вы можете настроить шаг на вашем Ansible Playbook развертывания, который будет безопасно скопировать или генерировать файл секретов для хранения туда в вашей производственной среде.

Вы также можете сказать Dynaconf загружать этот файл откуда-то еще Export Secrets_for_dynaconf =/путь/к/секреты/местоположение/.secrets.yaml (очень полезно для CI, как Дженкинс)

Проект хранилища от Hashicorp

Рекомендуемые!

Теперь мы действительно говорим о Истинная безопасность

Использование Хранилище Является ли лучшим способом защиты ваших секретов Dynaconf имеет встроенную поддержку:

export VAULT_ENABLED_FOR_DYNACONF=true
export VAULT_URL_FOR_DYNACONF=https://..../
export OTHER_VAULT_CONFIGS

А потом, если у нас есть Токен Магазины на вашем сервере хранилища вы можете просто сделать:

from dynaconf import settings
perform_your_authentication(settings.TOKEN)

Включает хранилище много особенностей, таких как аренды и герметичные хранилища.

Подробнее

Вы используете Django или Flask?

Dynaconf предоставляет расширения для этих 2 рамки, с двумя линиями кода, которые вы включаете, а затем ваша каркас начнет чтение настроек от Dynaconf.

Django

# settings.py
import dynaconf  # noqa
settings = dynaconf.DjangoDynaconf(__name__, **options)

Теперь вы, если вы делаете Экспорт Вы можете получить доступ к вашему приложению через django.conf.settings. Фюра

Подробнее

Колбы

# app.py
from dynaconf import FlaskDynaconf
FlaskDynaconf(app, **options)

Теперь вы, если вы делаете Экспорт Вы можете получить доступ к вашему приложению через app.config ['foo']

Подробнее

Что, если вы используете другой формат файла настроек? Разные рамки и другое внешнее хранение?

Вы можете продлить Dynaconf добавлять новые погрузчики!

Dynaconf уже предоставляет погрузчики для:

  • .py
  • .json.
  • .ыл
  • .toml
  • .ini.ini.
  • Redis server.
  • Сервер хранилища
  • .env файлы
  • Переменные среды

Но если это не подходит для вашего проекта, вы все еще можете Создайте свой собственный погрузчик

Заключение

Dynaconf – это единственное, что вам нужно управлять вашими настройками!

  • Хорошо проверено
  • Доверие компании, такие как Red Hat, Seek, Catho и другие
  • Хорошо проверено как на Linux, так и в среду Windows
  • Строгое разделение настроек от кода (следуя 12-факторные приложения Руководство).
  • Определите комплексные значения по умолчанию.
  • Магазин параметров в нескольких форматах файлов ( .toml , .json, .yaml, .ini и .py).
  • Чувствительный Секреты Как токены и пароли могут быть сохранены в безопасных местах, таких как .secrets файл или Сервер хранилища Отказ
  • Параметры могут быть необязательно сохранены во внешних службах, таких как сервер Redis.
  • Простое Флаг функции система.
  • Слоил [Окружающая среда] система.
  • Переменные среды могут быть использованы для переопределения параметров.
  • Поддержка для .env Файлы для автоматизации экспорта переменных среды.
  • Правильные типы данных (даже для переменных среды).
  • Есть Только один Модуль канонических настроек, чтобы управлять всеми вашими экземплярами.
  • Падение в расширение для Колбы app.config объект.
  • Падение в расширение для Джанго Cont.settings. объект.
  • Мощный $ Dynaconf CLI, чтобы помочь вам управлять настройками через консоль.
  • Настраиваемый Валидация Система для обеспечения правильных параметров конфигурации.
  • Разрешить изменение Дейна Параметры MIC на лету без необходимости перераспределить ваше приложение.

Прочитайте документы

Настройки просты, но Dynaconf предоставляет еще больше функций, таких как Функции Функции , Настройки Контекстные менеджеры , Настройки плагина так далее..

Документация : http://dynaconf.readtheDocs.io/

Дынаконф ждет вашего Обратная связь и Вклад

🙂

from dynaconf import settings
settings.THANKS_FOR_READING

Оригинал: “https://dev.to/rochacbruno/from-dynaconf-import-settings-2f8o”