rm-software.django
Nom du rôle
Construire et déployer une application web Django (Uwsgi), une tâche (Celery) ou une beat (Celerybeat).
Exigences
Un serveur Ubuntu configuré. Uwsgi attend un proxy wsgi via le rôle nginx.
Variables du rôle
Par défaut, construire Django, mais seulement déployer une application web uwsgi.
django_webapp: oui
django_taskapp: non
django_beatapp: non
django_monitorapp: non
django_flowerapp: non
Utilisé comme valeur par défaut pour virtualenv, clone local, utilisateur/n8m/pass de base de données, ... Doit être alphanumérique et _, rien d'illégal pour les noms de base de données, répertoires, ...
django_project_name: django
le projet sera cloné dans {{ django_project_home }}/{{ django_project_name }}
django_project_home: '{{ ansible_env.HOME }}'
Source du code, branche et répertoires
django_repo_url: ssh://[email protected]/myawesomeproject
django_repo_version: default
django_repo_type: git
django_local_repo: '{{ django_project_name }}'
Domaine et nom (pour le site par défaut Django, nginx, etc.)
django_hostname: '{{ hostname }}'
django_project_description: '{{ description }}'
Clé secrète du site
django_secret_key: 'changezlaclesecrètepourchaquecible'
Doit correspondre à un fichier de configuration Django .py, par exemple, 'dev'
django_settings_module: 'config.settings.production'
Exigences d'installation de Pip
django_pip_requirements: production.txt
Paramètres de base de données.
django_db_host: localhost
django_db_user: '{{ django_project_name }}'
django_db_name: '{{ django_project_name }}'
django_db_password: '{{ django_project_name }}'
django_db_superuser: postgres
django_db_superpassword: postgres
django_db_locale: en_US.UTF-8
Paramètres rarement modifiés
django_upstream_hostkey: bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
django_wsgi_addr: '{{ ansible_lo.ipv4.address }}'
django_wsgi_port: 10000
django_uwsgi_processes: '{{ ansible_processor_cores }}'
django_uwsgi_harakiri: 60
Chemins
django_project_path: '{{ django_project_home }}/{{ django_project_name }}' # généralement cdvirtualenv
django_log_path: '{{ django_project_path }}/log'
django_run_path: '{{ django_project_path }}/run'
django_media_root: '{{ django_project_path }}/media'
django_static_root: '{{ django_project_path }}/static'
django_repo_path: '{{ django_project_path }}/{{ django_project_name }}' # clone à ici
django_project_subdir: . # changer si le projet django est sous django_project_path
django_path: '{{ django_repo_path }}/{{ django_project_subdir }}'
django_collectstatic_once: non # avec whitenoise, doit exécuter collectstatic sur toutes les instances de l'application web
Variables d'environnement standard de Django
django_base_settings:
DJANGO_SETTINGS_MODULE: '{{ django_settings_module }}'
DJANGO_SECRET_KEY: '{{ django_secret_key }}'
DATABASE_URL: 'postgres://{{ django_db_user }}:{{ django_db_password }}@{{ django_db_host }}/{{ django_db_name }}'
Variables d'environnement supplémentaires de Django
django_extra_settings:
Laissez normalement les packages de base tels quels, ajoutez avec django_extra_apt_packages
:
django_base_apt_packages:
# Supposer déjà installé pour le paramètre django_python
- gettext
# base de données
- python-psycopg2
# dépendances partagées de :
- zlib1g-dev
- libpq-dev
- libmysqlclient-dev
- libtiff5-dev
- libjpeg8-dev
- libfreetype6-dev
- liblcms2-dev
- libwebp-dev
- graphviz-dev
- supervisor
- emacs24-nox
- redis-server
django_extra_apt_packages:
Paramètres Celery
celery_concurrency: '{{ ansible_processor_cores }}'
celery_numprocs: '{{ ansible_processor_cores }}'
celery_pool_implementation: prefork # prefork (par défaut), eventlet, gevent ou solo
celery_beat_schedulers: django_celery_beat.schedulers:DatabaseScheduler
Dépendances
- rm-software.nginx
- rm-software.python
- rm-software.rabbitmq
- rm-software.redis
- rm-software.virtualenv
plus un serveur de base de données, configuré séparément ou via
- rm-software.postgresql
Exemple de Playbook
- hosts: appservers
tasks:
- import_role:
name: postgresql
vars:
postgresql_install_client: oui
- import_role:
name: python
- import_role:
name: virtualenv
- import_role:
name: django
vars:
django_webapp: oui
django_taskapp: non
django_beatapp: non
Avec la majorité des variables django_ définies dans group_vars.
ansible-galaxy install rm-software.django