ansibleguy.infra_django_apache
Rôle Ansible - Python3 Django
Rôle Ansible pour déployer une ou plusieurs applications Django sur un serveur Linux en utilisant Apache2 comme serveur web.
Logs de Molecule : Court, Complet
Testé :
- Debian 11
Installation
# dernière version
ansible-galaxy role install git+https://github.com/ansibleguy/infra_django_apache
# depuis galaxy
ansible-galaxy install ansibleguy.infra_django_apache
# ou vers un chemin de rôle personnalisé
ansible-galaxy install ansibleguy.infra_django_apache --roles-path ./roles
# installer les dépendances
ansible-galaxy install -r requirements.yml
Utilisation
Vous voulez une interface graphique Ansible simple ? Découvrez mon Ansible WebUI
Configuration
Vous devez définir vos instances en configurant le dictionnaire 'mariadb' !
django:
sites:
niceApp:
domain: 'django.ansibleguy.net'
project: 'super' # le répertoire contenant le 'settings.py' a ce nom
sync_code: # synchronise le code local sur le serveur distant
enabled: true
src: '/home/ansibleguy/code/niceApp'
static_src: '/home/ansibleguy/code/niceApp_static'
venv: '/var/lib/niceApp'
python_modules:
present: ['netaddr', 'pycryptodome']
env_pythonpath: ['/var/lib/myOtherApp'] # sera ajouté à la variable d'environnement PYTHONPATH de django
ssl:
mode: 'letsencrypt'
letsencrypt:
email: '[email protected]'
Vous pourriez vouloir utiliser 'ansible-vault' pour chiffrer vos mots de passe :
ansible-vault encrypt_string
Exécution
Exécutez le playbook/rôle :
ansible-playbook -K -D -i inventory/hosts.yml django.yml --ask-vault-pass
Il y a aussi quelques tags utiles disponibles :
- base => uniquement configurer les bases ; les instances ne seront pas touchées
- sites
- config
- db
- sync => synchroniser uniquement le code local avec l'hôte distant (si activé par l'utilisateur)
- django => ne pas démarrer les sous-rôles pour apache et/ou mariadb
Pour déboguer les erreurs, vous pouvez définir la variable 'debug' à l'exécution :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Fonctionnalités
Installation de paquet
- Dépendances Ansible (minimales)
Configuration
Apache utilisant le rôle CELUI-CI
Support pour MySQL ou PostgreSQL
Options par défaut :
- Base de données MariaDB utilisant le rôle CELUI-CI
Options par défaut à ne pas inclure :
- Service de sauvegarde de base de données
- Configuration apache spéciale => peut être passée via le dictionnaire 'django'
- Exécution de 'collectstatic'
Configuration par défaut :
- Un certificat auto-signé sera utilisé
- Type de base de données => MariaDB
- La base de données sera installée automatiquement
- Utilisation d'un environnement virtuel Python
- Un script de migration de base de données sera créé dans le répertoire venv
Informations
Remarque : ce rôle prend actuellement uniquement en charge les systèmes basés sur Debian
Remarque : La plupart des fonctionnalités du rôle peuvent être incluses ou exclues.
Pour toutes les options disponibles - consultez la configuration par défaut située dans le fichier de défauts principal/site !
Avertissement : Tous les paramètres/variables que vous fournissez ne seront pas vérifiés pour leur validité. Une mauvaise configuration pourrait casser le rôle !
Role to deploy one or multiple django sites using apache2 to host them
ansible-galaxy install ansibleguy.infra_django_apache