cdriehuys.django-app

cdriehuys.django-app

Travis

Rol de Ansible para servir una aplicación Django con gunicorn.

Nota: Si esta rol no tiene una capacidad que te gustaría, no dudes en abrir un issue para que podamos discutirlo más.

Tabla de Contenidos

Requisitos

Para poder utilizar la configuración subida por el rol, debes importar el archivo de configuraciones locales en tu archivo de configuraciones de producción. Por ejemplo:

# production_settings.py

DEBUG = False
ALLOWED_HOSTS = ['...']

try:
    from app_package.local_settings import *
except ImportError:
    pass

También hacemos algunas suposiciones sobre la estructura de tu proyecto. Aunque estas suposiciones se pueden sobrescribir estableciendo las variables apropiadas, sería más fácil si tu proyecto está estructurado de la siguiente manera:

nombre-app
├── app_package
│   ├── app_package
│   │   └── settings.py
│   ├── otras_apps
│   └── están_aquí
├── LICENSE
└── requirements.txt

Variables de Rol

Aquí hay una lista de las variables usadas por el rol. Cada variable, excepto las que están en las Variables Requeridas, tiene su valor por defecto listado.

Requeridas

Las siguientes variables deben ser configuradas para que el rol se ejecute.

# Ruta al repositorio git donde está tu código
app_repo: https://tu-repo-host/user/nombre-repo

# Llave secreta para usar en Django
django_secret_key: tu llave secreta aquí

Comúnmente Usadas

Estas configuraciones se usan para controlar información sobre tu proyecto. También son las variables que más comúnmente se sobrescriben, ya que varían de proyecto a proyecto.

# El nombre legible por humanos de tu aplicación. Tu proyecto será
# clonado en un directorio con este nombre.
app_name: app

# El nombre del paquete es el nombre de tu módulo de python real. Este es el
# nombre que proporcionaste a 'django-admin startproject <app_package>'.
app_package: app

# La versión de tu aplicación a desplegar. Esto puede ser un hash de commit
# específico, un nombre de rama o un nombre de etiqueta.
app_repo_version: master

# Esta es una lista de paquetes del sistema que deben estar instalados para
# que tu proyecto funcione.
app_required_packages: []

# El archivo de configuraciones de Django a usar.
django_settings_module: "{{ app_package }}.settings"

Compartidas

Estas variables son usadas por múltiples roles para controlar un comportamiento común.

# La duración que la caché de apt es válida en segundos
apt_cache_time: 3600

Django

Estas variables se usan para configurar el comportamiento de Django.

# Configuración de la base de datos. Esto debe ser un diccionario que contenga los
# mismos atributos que espera Django (ENGINE, HOST, USER, etc.).
django_databases: {}

# Una lista de comandos de gestión de Django para ejecutar durante la implementación. Esto
# debe ser un comando completo como 'collectstatic --noinput'
django_manage_commands: []

# Cualquier configuración adicional de Django que quieras configurar puede ser
# proporcionada como un diccionario. Asegúrate de poner entre comillas dobles tus valores
# para que se template correctamente.
django_project_settings: {}

# Ruta a la raíz del proyecto Django
django_project: /opt/{{ app_name }}

# Ruta a la aplicación Django (la carpeta con 'manage.py')
django_app_dir: "{{ django_project }}/{{ app_package }}"

# Ruta donde se subirá el archivo de configuraciones locales
django_local_settings: "{{ django_app_dir }}/{{ app_package }}/local_settings.py"

# Ruta al archivo requirements.txt
django_requirements: "{{ django_project }}/requirements.txt"

# Ruta al archivo de log de Django. Nada se escribirá aquí a menos que
# sobrescribas la configuración 'django_logging'.
django_log_file: /var/log/{{ app_name }}/django.log

# Configuración de logging de Django. Esto debe ser un diccionario YAML con
# los mismos atributos que espera el módulo de logging de Python.
django_logging: {}

# Rutas donde se subirán archivos estáticos
django_media_root: /var/www/{{ inventory_hostname }}/media
django_static_root: /var/www/{{ inventory_hostname }}/static

Gunicorn

Las siguientes variables controlan la configuración del servidor Gunicorn, que es responsable de servir la aplicación Django.

# Especifica qué versión de gunicorn instalar. Esto puede ser cualquier versión
# que pip acepte.
gunicorn_version: gunicorn

# El usuario creado para ejecutar gunicorn.
gunicorn_user: gunicorn

# La ruta a la que se sube la unidad del servicio systemd de gunicorn.
gunicorn_service_conf: /etc/systemd/system/gunicorn.service

# La ruta a la que se sube la configuración del socket de gunicorn.
gunicorn_socket_conf: /etc/systemd/system/gunicorn.socket

# La ruta a la que se sube la configuración de archivos temporales de gunicorn.
gunicorn_tempfile_conf: /etc/tmpfiles.d/gunicorn.conf

# Directorio relativo a '/run' para almacenar información de ejecución
gunicorn_runtime_directory: gunicorn

# Ruta para almacenar el archivo PID de Gunicorn
gunicorn_pid: /run/{{ gunicorn_runtime_directory }}/pid

# Ruta al socket utilizado para comunicarse con gunicorn
gunicorn_socket: /run/{{ gunicorn_runtime_directory }}/socket

# Ruta Unix al socket de gunicorn
gunicorn_socket_unix: "unix:{{ gunicorn_socket }}"

# Ruta al binario de gunicorn
gunicorn_bin: "{{ venv }}/bin/gunicorn"

# Directorio desde el que se ejecuta gunicorn
gunicorn_working_directory: "{{ django_app_dir }}"

# Ruta a la aplicación WSGI que se ejecutará, relativa a
# 'gunicorn_working_directory'.
gunicorn_wsgi_app: "{{ app_package }}.wsgi:application"

# Variables de entorno adicionales con las que se ejecuta el servicio gunicorn.
# Estas variables también se establecen al ejecutar tareas de 'manage.py'.
gunicorn_environment: {}

Dependencias

Depende de los siguientes roles:

- cdriehuys.virtualenv

Ejemplo de Playbook

Para ejecutar el rol, inclúyelo de la siguiente manera.

- hosts: all
  roles:
     - cdriehuys.django-app

Licencia

MIT

Información del Autor

Chathan Driehuys (cdriehuys@gmail.com)

Acerca del proyecto

Deploy a Django app using Gunicorn.

Instalar
ansible-galaxy install cdriehuys.django-app
Licencia
mit
Descargas
115
Propietario
Software developer from North Carolina.