cdriehuys.django-app

cdriehuys.django-app

Travis

Rôle Ansible pour servir une application Django avec gunicorn.

Remarque : Si ce rôle ne dispose pas d'une fonctionnalité que vous souhaitez, n'hésitez pas à ouvrir un problème afin que nous puissions en discuter davantage.

Table des Matières

Exigences

Pour utiliser les paramètres téléchargés par le rôle, vous devez importer le fichier de paramètres local dans votre fichier de paramètres de production. Par exemple :

# production_settings.py

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


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

Nous faisons également certaines hypothèses sur la structure de votre projet. Bien que ces hypothèses puissent être remplacées par des variables appropriées, il serait plus facile que votre projet soit structuré de la manière suivante :

nom-de-l'application
├── app_package
│   ├── app_package
│   │   └── settings.py
│   ├── autres_apps
│   └── sont_ici
├── LICENSE
└── requirements.txt

Variables du Rôle

Voici une liste des variables utilisées par le rôle. Chaque variable, sauf celles dans les Variables Obligatoires, a sa valeur par défaut indiquée.

Obligatoires

Les variables suivantes doivent être définies pour que le rôle fonctionne.

# Chemin vers le dépôt git où votre code est stocké
app_repo: https://votre-hôte-de-repo/utilisateur/nom-du-repo

# Clé secrète à utiliser pour Django
django_secret_key: votre clé secrète ici

Communément Utilisées

Ces paramètres sont utilisés pour contrôler les informations d'importation de votre projet. Ce sont également les variables qui sont le plus souvent remplacées car elles varient d'un projet à l'autre.

# Le nom humainement lisible de votre application. Votre projet sera
# cloné dans un répertoire avec ce nom.
app_name: app

# Le nom du package est le nom de votre module Python. C'est le
# nom que vous avez fourni à 'django-admin startproject <app_package>'.
app_package: app

# La version de votre application à déployer. Cela peut être un
# hash de commit spécifique, un nom de branche, ou un nom de tag.
app_repo_version: master

# C'est une liste de packages système qui doivent être installés pour
# que votre projet fonctionne.
app_required_packages: []

# Le fichier de paramètres Django à utiliser.
django_settings_module: "{{ app_package }}.settings"

Partagées

Ces variables sont utilisées par plusieurs rôles pour contrôler un comportement commun.

# La durée pendant laquelle le cache apt est valide en secondes
apt_cache_time: 3600

Django

Ces variables sont utilisées pour configurer le comportement de Django.

# Configuration de la base de données. Cela doit être un dictionnaire
# contenant les mêmes attributs que Django attend (ENGINE, HOST, USER, etc.).
django_databases: {}

# Une liste des commandes de gestion Django à exécuter pendant le déploiement. Cela
# devrait être une commande complète telle que 'collectstatic --noinput'
django_manage_commands: []

# Tout paramètre Django supplémentaire que vous souhaitez configurer peut être
# fourni sous forme de dictionnaire. Assurez-vous de doubler les guillemets de vos
# valeurs pour qu'elles soient correctement modélisées.
django_project_settings: {}

# Chemin vers la racine du projet Django
django_project: /opt/{{ app_name }}

# Chemin vers l'application Django (le dossier avec 'manage.py')
django_app_dir: "{{ django_project }}/{{ app_package }}"

# Chemin où le fichier de paramètres local sera téléchargé
django_local_settings: "{{ django_app_dir }}/{{ app_package }}/local_settings.py"

# Chemin vers le fichier requirements.txt
django_requirements: "{{ django_project }}/requirements.txt"

# Chemin vers le fichier log de Django. Rien ne sera écrit ici à moins que vous
# ne remplaciez le paramètre 'django_logging'.
django_log_file: /var/log/{{ app_name }}/django.log

# Configuration des logs Django. Cela devrait être un dictionnaire YAML avec
# les mêmes attributs que le module de logging de Python attend.
django_logging: {}

# Chemins où les fichiers statiques sont téléchargés
django_media_root: /var/www/{{ inventory_hostname }}/media
django_static_root: /var/www/{{ inventory_hostname }}/static

Gunicorn

Les variables suivantes contrôlent la configuration du serveur Gunicorn qui est responsable du service de l'application Django.

# Spécifiez quelle version de gunicorn installer. Cela peut être tout spécificateur de
# version que pip accepte.
gunicorn_version: gunicorn

# L'utilisateur créé pour exécuter gunicorn.
gunicorn_user: gunicorn

# Le chemin où l'unité de service systemd de gunicorn est téléchargée.
gunicorn_service_conf: /etc/systemd/system/gunicorn.service

# Le chemin où la configuration de socket de gunicorn est téléchargée.
gunicorn_socket_conf: /etc/systemd/system/gunicorn.socket

# Le chemin où la configuration de fichier temporaire de gunicorn est téléchargée.
gunicorn_tempfile_conf: /etc/tmpfiles.d/gunicorn.conf

# Répertoire relatif à '/run' pour stocker les informations d'exécution
gunicorn_runtime_directory: gunicorn

# Chemin pour stocker le fichier PID de Gunicorn
gunicorn_pid: /run/{{ gunicorn_runtime_directory }}/pid

# Chemin vers le socket utilisé pour communiquer avec gunicorn
gunicorn_socket: /run/{{ gunicorn_runtime_directory }}/socket

# Chemin Unix vers le socket gunicorn
gunicorn_socket_unix: "unix:{{ gunicorn_socket }}"

# Chemin vers le binaire gunicorn
gunicorn_bin: "{{ venv }}/bin/gunicorn"

# Répertoire depuis lequel gunicorn est exécuté
gunicorn_working_directory: "{{ django_app_dir }}"

# Chemin vers l'application WSGI à exécuter, relatif à
# 'gunicorn_working_directory'.
gunicorn_wsgi_app: "{{ app_package }}.wsgi:application"

# Variables d'environnement supplémentaires avec lesquelles le service gunicorn est exécuté.
# Ces variables sont également définies lors de l'exécution des tâches 'manage.py'.
gunicorn_environment: {}

Dépendances

Dépend de les rôles suivants :

- cdriehuys.virtualenv

Exemple de Playbook

Pour exécuter le rôle, incluez-le comme suit.

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

Licence

MIT

Informations sur l'Auteur

Chathan Driehuys (cdriehuys@gmail.com)

À propos du projet

Deploy a Django app using Gunicorn.

Installer
ansible-galaxy install cdriehuys.django-app
Licence
mit
Téléchargements
115
Propriétaire
Software developer from North Carolina.