infra_django_apache
Ansible Роль - Python3 Django
Роль Ansible для развертывания одного или нескольких приложений Django на сервере Linux с использованием Apache2 в качестве веб-сервера.
Логи Molecule: Краткий, Полный
Тестировано на:
- Debian 11
Установка
# последняя версия
ansible-galaxy role install git+https://github.com/ansibleguy/infra_django_apache
# из galaxy
ansible-galaxy install ansibleguy.infra_django_apache
# или в пользовательский путь для ролей
ansible-galaxy install ansibleguy.infra_django_apache --roles-path ./roles
# установка зависимостей
ansible-galaxy install -r requirements.yml
Использование
Хотите простой интерфейс Ansible? Посмотрите мой Ansible WebUI
Конфигурация
Вам нужно определить ваши инстансы, настроив словарь 'mariadb'!
django:
sites:
niceApp:
domain: 'django.ansibleguy.net'
project: 'super' # директория с 'settings.py' названа так
sync_code: # синхронизация локального кода на удаленный сервер
enabled: true
src: '/home/ansibleguy/code/niceApp'
static_src: '/home/ansibleguy/code/niceApp_static'
venv: '/var/lib/niceApp'
python_modules:
present: ['netaddr', 'pycryptodome']
env_pythonpath: ['/var/lib/myOtherApp'] # будет добавлено в переменную окружения PYTHONPATH
ssl:
mode: 'letsencrypt'
letsencrypt:
email: '[email protected]'
Вы можете использовать 'ansible-vault', чтобы зашифровать ваши пароли:
ansible-vault encrypt_string
Исполнение
Запустите плейбук/роль:
ansible-playbook -K -D -i inventory/hosts.yml django.yml --ask-vault-pass
Есть также несколько полезных тегов:
- base => только настройка основ; экземпляры не будут затронуты
- sites
- config
- db
- sync => только синхронизация локального кода с удаленным хостом (если разрешено пользователем)
- django => не запускать подроли для apache и/или mariadb
Чтобы отладить ошибки - вы можете установить переменную 'debug' во время выполнения:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Функциональность
Установка пакетов
- Зависимости Ansible (минимальные)
Конфигурация
Apache с использованием ЭТОЙ роли
Поддержка MySQL или PostgreSQL
По умолчанию включено:
- База данных MariaDB с использованием ЭТОЙ роли
По умолчанию выключено:
- Служба резервного копирования базы данных
- Специальная конфигурация для apache => может быть передана через словарь 'django'
- Запуск 'collectstatic'
Конфигурация по умолчанию:
- Будет использоваться самоподписанный сертификат
- Тип базы данных => MariaDB
- База данных будет установлена автоматически
- Использование виртуального окружения Python
- Скрипт миграции базы данных будет создан в директории venv
Информация
Примечание: эта роль в настоящее время поддерживает только системы на основе Debian
Примечание: Большинство функциональностей роли можно включать или выключать.
Для всех доступных опций - смотрите файл default-config, который находится в главном/сайтовом defaults-файле!
Внимание: Не каждая настройка/переменная, которую вы предоставляете, будет проверена на корректность. Плохая конфигурация может сломать роль!
Role to deploy one or multiple django sites using apache2 to host them
ansible-galaxy install ansibleguy/infra_django_apache