flaskapp
ansible-flaskapp
Роль Ansible дляProvisioning и развертывания приложений Flask.
Особенности
- Предоставляет задачи дляProvisioning и развертывания приложения Flask.
- Устанавливает сервер со всеми необходимыми приложениями и зависимостями.
- Легко развернуть ваше приложение Flask.
- Используйте git для загрузки приложения.
- Используйте Nginx в качестве реверс-прокси.
- Используйте Supervisor в качестве менеджера процессов.
- Используйте Gunicorn для запуска приложения Flask (можно переопределить, если предоставлен пользовательский скрипт запуска).
- Настройте PostgreSQL с требуемой базой данных и пользователем (необязательно).
- Запускайте пользовательские хуки до и после установки.
- Установите npm и bower при необходимости.
- Запустите
npm install
иbower install
во время развертывания (необязательно).
Установка
ansible-galaxy
ansible-flaskapp — это роль Ansible, распространяемая глобально с помощью Ansible Galaxy. Для установки роли ansible-flaskapp вы можете использовать следующую команду.
$ ansible-galaxy install hypebeast.flaskapp
Вручную
Или непосредственно клонируйте репозиторий в вашу папку roles:
$ git clone https://github.com/hypebeast/ansible-flaskapp-stack flaskapp
Примеры
Установка с ansible-galaxy
Сначала установите роль.
ansible-galaxy install hypebeast.flaskapp
Добавьте роль в ваш плейбук
Добавьте роль ansible-flaskapp в ваш плейбук:
- hosts: all
roles:
- {role: hypebeast.flaskapp,
tags: [flaskapp-setup,flaskapp-deploy]}
Это выполнит задачи настройки и развертывания.
Если вы хотите запустить только задачу развертывания:
- hosts: all
roles:
- {role: hypebeast.flaskapp,
tags: [flaskapp-deploy]}
Настройте переменные роли
Настройте переменные роли (см. переменные роли).
Переменные роли
См. defaults/main.yml для полного списка доступных переменных.
# Имя приложения, используется для создания директории приложения, например:
# должно быть коротким, строчными буквами и не содержать пробелов.
flaskapp_app_name: flaskapp
# Порт для приложения
flaskapp_port: 8000
# Пользователь, используемый для запуска приложения Flask
flaskapp_app_user: www-data
# Директория для хранения исходного кода приложения.
flaskapp_app_directory: "/opt/{{ flaskapp_app_name }}"
# Директория для хранения логов приложения.
flaskapp_app_log_directory: "/var/log/{{ flaskapp_app_name }}"
# Путь к требованиям приложения.
flaskapp_app_requirements: "{{ flaskapp_app_directory }}/requirements.txt"
# Удаленный репозиторий git для загрузки кода приложения, например:
# [email protected]:hypebeast/flaskapp.git
flaskapp_app_repository: [email protected]:hypebeast/ansible-flaskapp.git
# Версия репозитория для загрузки. Это может быть полный
# 40-символьный хэш SHA1, ветка или имя тега.
flaskapp_app_version: master
# Список переменных окружения, используемых для выполнения большинства команд.
flaskapp_app_environment:
PATH: "{{ flaskapp_app_directory }}/bin:{{ ansible_env.PATH }}"
# Список пользовательских команд, которые нужно выполнить перед и после развертывания. Эти команды
# используют ранее определенное окружение для выполнения.
flaskapp_app_pre_hooks: []
flaskapp_app_post_hooks: []
# Путь к конфигурации приложения для использования при запуске приложения.
flaskapp_app_config:
# Версия Python, которую следует установить
flaskapp_python_version: 2.7
# Список системных пакетов, необходимых для сборки/работы приложения.
flaskapp_app_packages:
- git
- python{{ flaskapp_python_version }}
- build-essential
- python-dev
- python-pip
- python-virtualenv
- libpq-dev
- build-essential
# Дополнительные системные пакеты, необходимые для вашего приложения
flaskapp_additional_app_packages:
# Установить `nodejs` и необходимые зависимости пакетов через `npm`?
flaskapp_app_requires_npm: false
# Установить зависимости пакетов фронтенда через `bower`?
flaskapp_app_requires_bower: false
# Установить и настроить PostgreSQL
flaskapp_use_postgresql: true
# Пользователь базы данных PostgreSQL
flaskapp_postgresql_user: "{{ flaskapp_app_name }}"
# Пароль базы данных PostgreSQL
flaskapp_postgresql_password: xxxxx
# Имя таблицы базы данных PostgreSQL
flaskapp_postgresql_table: "{{ flaskapp_app_name }}"
# Определяет, должны ли миграции выполняться во время развертывания
flaskapp_run_migrations: false
# Директория с миграционными скриптами
flaskapp_migrations_dir: ../migrations
# Команда миграции
flaskapp_migration_command: python manage.py migrate
# Имя сервера Nginx
flaskapp_nginx_server_name: "{{ flaskapp_app_name }}.domain.com"
# Директория со статическими файлами, которые обслуживаются непосредственно Nginx
flaskapp_nginx_static_dir: "{{ flaskapp_app_directory }}/static/"
# Установите true, если хотите использовать пользовательскую конфигурацию nginx (вы должны сами ее настроить)
flaskapp_use_custom_nginx_conf: false
# Установите true, если хотите использовать пользовательскую конфигурацию supervisor (вы должны сами ее настроить)
flaskapp_use_custom_supervisor_conf: false
# Установите true, если хотите использовать пользовательский скрипт запуска, используемый supervisor (вы должны сами его настроить)
flaskapp_use_custom_start_script: false
Тестирование
Проект включает Vagrantfile, который позволяет легко тестировать роль.
Используйте vagrant provision/vagrant up
или ansible-playbook tests/test.yml -i vagrant-inventory
.
Автор
Себастьян Румль, sebastian@sebastianruml.name
Лицензия
Смотрите файл LICENSE для получения подробной информации.
Благодарности
Благодарности авторам следующих проектов:
Provisioning and deploy Flask applications
ansible-galaxy install hypebeast/ansible-flask-stack