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é' />

[![Estado de Prueba de Molecule](https://badges.ansibleguy.net/infra_django_apache.molecule.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/molecule.sh.j2)
[![Estado de Prueba de YamlLint](https://badges.ansibleguy.net/infra_django_apache.yamllint.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/yamllint.sh.j2)
[![Estado de Prueba de PyLint](https://badges.ansibleguy.net/infra_django_apache.pylint.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/pylint.sh.j2)
[![Estado de Prueba de Ansible-Lint](https://badges.ansibleguy.net/infra_django_apache.ansiblelint.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/ansiblelint.sh.j2)
[![Ansible Galaxy](https://badges.ansibleguy.net/galaxy.badge.svg)](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!

```

Acerca del proyecto

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

Instalar
ansible-galaxy install ansibleguy.infra_django_apache
Licencia
other
Descargas
1.9k
Propietario
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg