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.

À propos du projet

Django web, task and/or geat app installation

Installer
ansible-galaxy install rm-software.django
Licence
apache-2.0
Téléchargements
119
Propriétaire