ansibleguy.infra_django_apache

Logo Django

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.

Offrez-moi un café

État du test Molecule État du test YamlLint État du test PyLint État du test Ansible-Lint Ansible Galaxy

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 !

À propos du projet

Role to deploy one or multiple django sites using apache2 to host them

Installer
ansible-galaxy install ansibleguy.infra_django_apache
Licence
other
Téléchargements
1.9k
Propriétaire
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg