hypebeast.flaskapp
ansible-flaskapp
Rol de Ansible para aprovisionar y desplegar aplicaciones Flask.
Características
- Proporciona tareas para aprovisionar y desplegar una aplicación Flask.
- Aprovisiona un servidor con todas las aplicaciones y requisitos necesarios.
- Despliega fácilmente tu aplicación Flask.
- Usa git para verificar el código de la aplicación.
- Usa Nginx como proxy inverso.
- Usa Supervisor como gestor de procesos.
- Usa Gunicorn para ejecutar la aplicación Flask (se puede anular si se proporciona un script de inicio personalizado).
- Configura PostgreSQL con la base de datos y el usuario requeridos (opcional).
- Ejecuta ganchos personalizados antes y después de la instalación.
- Instala npm y bower si es necesario.
- Ejecuta
npm install
ybower install
durante el despliegue (opcional).
Instalación
ansible-galaxy
ansible-flaskapp es un rol de Ansible distribuido globalmente usando Ansible Galaxy. Para instalar el rol ansible-flaskapp puedes usar el siguiente comando.
$ ansible-galaxy install hypebeast.flaskapp
Manualmente
O clona directamente el repositorio en tu carpeta de roles:
$ git clone https://github.com/hypebeast/ansible-flaskapp-stack flaskapp
Ejemplos
Instalar con ansible-galaxy
Primero, instala el rol.
ansible-galaxy install hypebeast.flaskapp
Agrega el rol a tu playbook
Agrega el rol ansible-flaskapp a tu playbook:
- hosts: all
roles:
- {role: hypebeast.flaskapp,
tags: [flaskapp-setup,flaskapp-deploy]}
Esto ejecutará las tareas de configuración y despliegue.
Si solo deseas ejecutar la tarea de despliegue:
- hosts: all
roles:
- {role: hypebeast.flaskapp,
tags: [flaskapp-deploy]}
Configurar variables del rol
Personaliza las variables del rol (ver variables del rol).
Variables del Rol
Consulta defaults/main.yml para obtener una lista completa de las variables disponibles.
# El nombre de la aplicación, utilizado para crear el directorio de la aplicación, por ejemplo.
# Debe ser una abreviatura, en minúsculas y no contener espacios en blanco.
flaskapp_app_name: flaskapp
# Puerto para la aplicación
flaskapp_port: 8000
# El usuario usado para ejecutar la aplicación Flask
flaskapp_app_user: www-data
# El directorio para mantener el código fuente de la aplicación.
flaskapp_app_directory: "/opt/{{ flaskapp_app_name }}"
# El directorio para mantener los registros de la aplicación.
flaskapp_app_log_directory: "/var/log/{{ flaskapp_app_name }}"
# La ruta a los requisitos de la aplicación.
flaskapp_app_requirements: "{{ flaskapp_app_directory }}/requirements.txt"
# El repositorio git remoto para obtener el código de la aplicación, por ejemplo:
# [email protected]:hypebeast/flaskapp.git
flaskapp_app_repository: [email protected]:hypebeast/ansible-flaskapp.git
# La versión del repositorio a verificar. Esto puede ser un hash SHA1 de 40 caracteres,
# una rama o el nombre de una etiqueta.
flaskapp_app_version: master
# La lista de variables de entorno utilizadas para ejecutar la mayoría de los comandos.
flaskapp_app_environment:
PATH: "{{ flaskapp_app_directory }}/bin:{{ ansible_env.PATH }}"
# La lista de comandos personalizados para ejecutar antes y después del despliegue. Estos comandos
# utilizan el entorno previamente definido para ejecutarse.
flaskapp_app_pre_hooks: []
flaskapp_app_post_hooks: []
# La ruta a la configuración de la aplicación que se utilizará al iniciar la aplicación.
flaskapp_app_config:
# La versión de Python que debe ser instalada
flaskapp_python_version: 2.7
# La lista de paquetes del sistema requeridos para construir/ejecutar la aplicación.
flaskapp_app_packages:
- git
- python{{ flaskapp_python_version }}
- build-essential
- python-dev
- python-pip
- python-virtualenv
- libpq-dev
- build-essential
# Paquetes adicionales del sistema requeridos por tu aplicación
flaskapp_additional_app_packages:
# ¿Instalar `nodejs` y las dependencias de paquetes requeridas a través de `npm`?
flaskapp_app_requires_npm: false
# ¿Instalar las dependencias de paquetes frontend a través de `bower`?
flaskapp_app_requires_bower: false
# Instalar y configurar PostgreSQL
flaskapp_use_postgresql: true
# Usuario de la base de datos de PostgreSQL
flaskapp_postgresql_user: "{{ flaskapp_app_name }}"
# Contraseña de la base de datos de PostgreSQL
flaskapp_postgresql_password: xxxxx
# Nombre de la tabla de la base de datos de PostgreSQL
flaskapp_postgresql_table: "{{ flaskapp_app_name }}"
# Define si las migraciones deben ejecutarse durante el despliegue
flaskapp_run_migrations: false
# Directorio con scripts de migraciones
flaskapp_migrations_dir: ../migrations
# Comando de migración
flaskapp_migration_command: python manage.py migrate
# Nombre del servidor Nginx
flaskapp_nginx_server_name: "{{ flaskapp_app_name }}.domain.com"
# Directorio con archivos estáticos servidos directamente por Nginx
flaskapp_nginx_static_dir: "{{ flaskapp_app_directory }}/static/"
# Establecer en verdadero si deseas usar una configuración personalizada de nginx (debes aprovisionarla tú mismo)
flaskapp_use_custom_nginx_conf: false
# Establecer en verdadero si deseas usar una configuración personalizada de supervisor (debes aprovisionarla tú mismo)
flaskapp_use_custom_supervisor_conf: false
# Establecer en verdadero si deseas usar un script de inicio personalizado utilizado por el supervisor (debes aprovisionarlo tú mismo)
flaskapp_use_custom_start_script: false
Pruebas
El proyecto incluye un Vagrantfile que permite probar fácilmente el rol.
Usa vagrant provision
/ vagrant up
o ansible-playbook tests/test.yml -i vagrant-inventory
.
Autor
Sebastian Ruml, sebastian@sebastianruml.name
Licencia
Consulta el archivo LICENSE para más detalles.
Créditos
Los créditos van a los autores de los siguientes proyectos:
Provisioning and deploy Flask applications
ansible-galaxy install hypebeast.flaskapp