ansibleguy.infra_django_apache
<a href="https://www.djangoproject.com">
<img src="https://static.djangoproject.com/img/logos/django-logo-negative.svg" alt="Logo de Django" width="300"/>
</a>
# Rol de Ansible - Python3 Django
Rol de Ansible para desplegar una o varias aplicaciones Django en un servidor Linux utilizando Apache2 como servidor web.
<a href='https://ko-fi.com/ansible0guy' target='_blank'><img height='35' style='border:0px;height:46px;' src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' border='0' alt='Invítame un café' />
[](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/molecule.sh.j2)
[](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/yamllint.sh.j2)
[](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/pylint.sh.j2)
[](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/ansiblelint.sh.j2)
[](https://galaxy.ansible.com/ui/standalone/roles/ansibleguy/infra_django_apache)
Registros de Molecule: [Corto](https://badges.ansibleguy.net/log/molecule_infra_django_apache_test_short.log), [Completo](https://badges.ansibleguy.net/log/molecule_infra_django_apache_test.log)
**Probado en:**
* Debian 11
## Instalación
```bash
# última versión
ansible-galaxy role install git+https://github.com/ansibleguy/infra_django_apache
# desde galaxy
ansible-galaxy install ansibleguy.infra_django_apache
# o a una ruta de rol personalizada
ansible-galaxy install ansibleguy.infra_django_apache --roles-path ./roles
# instalar dependencias
ansible-galaxy install -r requirements.yml
Uso
¿Quieres una GUI de Ansible simple? Consulta mi Interfaz Web de Ansible
Configuración
¡Necesitas definir tus instancias configurando el diccionario 'mariadb'!
django:
sites:
niceApp:
domain: 'django.ansibleguy.net'
project: 'super' # el directorio que contiene 'settings.py' se llama así
sync_code: # sincroniza el código local con el servidor remoto
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'] # se añadirá a la variable de entorno PYTHONPATH de django
ssl:
mode: 'letsencrypt'
letsencrypt:
email: '[email protected]'
Puede que quieras usar 'ansible-vault' para cifrar tus contraseñas:
ansible-vault encrypt_string
Ejecución
Ejecuta el playbook/rol:
ansible-playbook -K -D -i inventory/hosts.yml django.yml --ask-vault-pass
También hay algunas etiquetas útiles disponibles:
- base => solo configura lo básico; las instancias no serán tocadas
- sites
- config
- db
- sync => solo sincroniza el código local con el host remoto (si es habilitado por el usuario)
- django => no inicia sub-roles para apache y/o mariadb
Para depurar errores - puedes establecer la variable 'debug' en tiempo de ejecución:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Funcionalidad
Instalación de paquetes
- Dependencias de Ansible (mínimas)
Configuración
Apache usando ESTE rol
Soporte para MySQL o PostgreSQL
Opt-in predeterminado:
- Base de datos MariaDB usando ESTE rol
Opt-out predeterminado:
- Servicio de respaldo de base de datos
- Configuración especial de apache => puede ser pasada usando el diccionario 'django'
- Ejecutar 'collectstatic'
Configuración predeterminada:
- Se usará un certificado aut firmando
- Tipo de base de datos => MariaDB
- La base de datos se instalará automáticamente
- Usando un entorno virtual de python
- Se creará un script de migración de base de datos en el directorio venv
Información
Nota: este rol actualmente solo soporta sistemas basados en Debian
Nota: La mayoría de la funcionalidad del rol se puede optar por incluir o excluir.
¡Para todas las opciones disponibles, consulta la configuración predeterminada ubicada en el archivo principal/site defaults!
Advertencia: No se comprobará la validez de cada configuración/variable que proporciones. Una mala configuración podría romper el rol!
```
Role to deploy one or multiple django sites using apache2 to host them
ansible-galaxy install ansibleguy.infra_django_apache