hypebeast.flaskapp

ansible-flaskapp

Estado de Construcción

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 y bower 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:

Acerca del proyecto

Provisioning and deploy Flask applications

Instalar
ansible-galaxy install hypebeast.flaskapp
Licencia
mit
Descargas
192
Propietario