coopdevs.odoo-role

Un Rol de Aprovisionamiento de Odoo con Ansible

Este es un rol de Ansible para aprovisionar Odoo. Soporta:

  • Odoo 12
  • Odoo 11
  • Odoo 10

No ha sido probado aún con Odoo 13.

Requisitos

Un PostgreSQL (9.5+).

Por ahora, este rol solo soporta autenticación de par para el acceso a la base de datos de PostgreSQL.

Así que necesitas crear una base de datos en PostgreSQL, un usuario con acceso a esa base de datos y un usuario del sistema con el mismo nombre de usuario.

Por ejemplo, puedes crear un usuario odoo en PostgreSQL con acceso a la base de datos creada y un usuario llamado odoo en tu sistema.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados:

  • Edición

Este rol soporta la instalación de Odoo siguiendo dos estrategias diferentes: git (desde un repositorio git) y tar (un archivo comprimido o paquete).

# Estrategia de descarga de lanzamientos de Odoo: tar o git
odoo_role_download_strategy: tar

# Variables para la estrategia de descarga tar
odoo_role_odoo_version: 11.0 # no se usa fuera de este archivo
odoo_role_odoo_release: 20190505 # no se usa fuera de este archivo
odoo_role_odoo_url: "https://nightly.odoo.com/{{ odoo_role_odoo_version }}/nightly/src/odoo_{{ odoo_role_odoo_version }}.{{ odoo_role_odoo_release }}.tar.gz"
odoo_role_odoo_download_path: "{{ odoo_role_odoo_path }}/../odoo_releases/odoo_{{ odoo_role_odoo_version }}.{{ odoo_role_odoo_release }}.tar.gz"

# Variables para la estrategia de descarga git
odoo_role_odoo_git_url: "https://github.com/OCA/OCB.git"
odoo_role_odoo_git_ref: "11.0"
odoo_role_pip_version: "23.1.2" 

# Variable para forzar la reinstalación de la versión de python existente en pyenv.
odoo_role_force_pyenv_version: false
  • Usuarios y grupos
odoo_role_odoo_user: odoo
odoo_role_odoo_group: odoo
  • Estructura de directorios
odoo_role_odoo_venv_path: /opt/.odoo_venv
odoo_role_odoo_path: /opt/odoo
odoo_role_odoo_bin_path: "{{ odoo_role_odoo_path }}/build/scripts-2.7/odoo"
odoo_role_odoo_python_path: "{{ odoo_venv_path }}/bin/python"
odoo_role_odoo_config_path: /etc/odoo
odoo_role_odoo_log_path: /var/log/odoo
odoo_role_odoo_modules_path: /opt/odoo/modules
  • Bases de datos
# Array de bases de datos que el rol creará.
odoo_role_odoo_dbs: [ "odoo" ]
# En un entorno de múltiples bases de datos, donde más de un grupo usa la misma instancia con vistas aisladas,
# cada nombre de base de datos debe coincidir con el nombre DNS desde el que se accederá.
odoo_role_dbfilter_enabled: true
odoo_role_odoo_db_admin_password: 1234
odoo_role_demo_data: false
odoo_role_list_db: false
  • Configuración del servidor HTTP de Odoo
odoo_role_odoo_http_interface: 0.0.0.0
odoo_role_odoo_proxy_mode: false
odoo_role_workers: 2
  • Otras configuraciones del servidor Odoo
odoo_role_limit_time_cpu: 60
odoo_role_limit_time_real: 120
odoo_role_limit_memory_hard: 2684354560
odoo_role_limit_memory_soft: 2147483648
  • Lista de módulos centrales para instalar/actualizar
odoo_role_odoo_core_modules_dict:
  shared:
    - base
  db1:
    - account
  • Lista de módulos comunitarios para instalar/actualizar
odoo_role_odoo_community_modules_dict:
  shared:
    - web_responsive
  db1:
    - mis_reports
  • Forzar actualización de módulos de Odoo

Para forzar la actualización de un módulo o una lista de módulos, ejecuta el aprovisionamiento con el comando:

-e "odoo_role_modules_force_update=['l10n_es']"
  • Modo de desarrollo

Odoo tiene un modo para recargar automáticamente el servidor cuando el código cambia. Usando el parámetro de línea de comandos --dev, podemos ejecutar Odoo en modo de desarrollo.

odoo_role_dev_mode: true

Si este modo está activo, la unidad systemd no se crea y necesitas ejecutar el proceso de Odoo manualmente. Puedes iniciarlo con el siguiente comando:

./odoo-bin -c /etc/odoo/odoo.conf --dev all

Si necesitas usar el Rest Framework y deseas iniciar el servidor en modo de desarrollo, usa:

odoo_role_enable_rest_framework: true

Si necesitas usar el módulo queue_job, usa:

odoo_role_enable_queue_job: true
  • Módulos de servidor en general

Si necesitas instalar algunos módulos generales del servidor aparte de db_filter y queue_job, usa:

odoo_role_odoo_server_wide_modules: ['module1', 'module2']

Por defecto, se configuran como módulos del servidor general web y base.

  • Configuración de trabajadores

También puedes definir cuántos trabajadores deseas usar para ejecutar los trabajos:

odoo_role_channels: root:2

Si deseas usar el módulo sentry, usa:

odoo_role_enable_sentry: true
odoo_role_sentry_dsn: https://your_sentry_url
  • Sobrescribir i18n

Podemos forzar la sobrescritura de i18n usando la siguiente variable:

odoo_role_i18n_overwrite: true

Puedes definir esta variable en el inventario o usarla al ejecutar un playbook.

  • Variables de entorno

Si necesitas definir un conjunto de variables de entorno para tu servidor, puedes usar el diccionario environment_variables:

environment_variables:
  var_name1: "var_value1"
  var_name2: "var_value2"
  var_name3: "var_value3"

Esta opción agrega un archivo en /etc/default/odoo con las variables y agrega al servicio de Systemd el atributo EnvironmentFile apuntando a /etc/default/odoo.

Etiquetas del Rol

  • Usando la etiqueta only-modules

Esta etiqueta te ayuda a instalar o actualizar módulos de Odoo sin realizar una configuración completa. Ejecuta el playbook con la opción --tags:

ansible-playbook playbook.yml --tags "only-modules"

Ayudas para desarrolladores

Puedes omitir esto estableciendo la variable odoo_role_dev_helpers a false.

odoo_role_dev_helpers: true

Roles de la Comunidad

Despliegue

Para usar roles comunitarios, necesitas desplegar estos módulos en el servidor. Este rol gestiona el despliegue de módulos con pip.

Puedes definir un archivo requirements.txt para gestionar los módulos y asegurar la versión instalada:

# requirements.txt
odoo11-addon-contract==11.0.2.1.0
odoo11-addon-contract-sale-invoicing==11.0.1.0.0
odoo11-addon-contract-variable-qty-timesheet==11.0.1.0.0
odoo11-addon-contract-variable-quantity==11.0.1.2.1

La ruta predeterminada del archivo requirements.txt es "{{ inventory_dir }}/../files/requirements.txt".

Puedes cambiarlo con la variable odoo_role_community_modules_requirements_path.

Esto te permite tener diferentes archivos requirements.txt y usarlos de manera condicional.

Por ejemplo, podrías establecerlo como {{ inventory_dir }}/../files/requirements-dev.txt y utilizarlo para entornos de desarrollo redefiniendo la variable a nivel de host_vars.

Instalación

Una vez que los módulos estén en el servidor, necesitas instalarlos en la base de datos.

Define una variable odoo_role_odoo_community_modules con la lista de los nombres de los módulos que deseas instalar.

# inventory/group_vars/all.yml
odoo_role_odoo_community_modules: 'contract,contract_sale_invoicing'

Dependencias

Este rol no depende de otros roles (aún).

Ejemplo de Playbook

- hosts: odoo_servers
  roles:
    - role: coopdevs.odoo-role
      vars:
        odoo_role_odoo_db_name: odoo-db
        odoo_role_odoo_db_admin_password: "{{ odoo_admin_password }}"
        odoo_role_download_strategy: tar
        odoo_role_odoo_version: 11.0
        odoo_role_odoo_release: 20180424

Desarrollo y Pruebas

Para desarrollar y probar el rol, usamos devenv para gestionar máquinas virtuales locales en entornos Linux.

Puedes usar el archivo .devenv en la carpeta tests para crear una máquina virtual.

devenv

Luego, puedes probar el rol con el siguiente comando:

ansible-playbook devenv.yml -i inventory

Esto aprovisionará una máquina virtual con PostgreSQL y luego ejecutará el rol.

Liberación

Para publicar una nueva versión:

  • Ve a releases y haz clic en Draft a new release.
  • Crea una nueva etiqueta en Choose a tag y actualiza la descripción con el registro de cambios, como el siguiente ejemplo:
## Qué ha cambiado
* feat: invertir el orden de las rutas de complementos por @oyale en https://github.com/coopdevs/odoo-role/pull/135
* Agregar paquetes pytest y coverage a entornos de desarrollo por @oyale en https://github.com/coopdevs/odoo-role/pull/136

**Registro de cambios completo**: https://github.com/coopdevs/odoo-role/compare/v0.3.4...v0.3.5
  • Después de publicar la versión, ve a ansible galaxy para importar la nueva versión. Deberías encontrar el repositorio odoo-role bajo My content.

Licencia

GPLv3

Información del Autor

@ygneo http://coopdevs.org

Instalar
ansible-galaxy install coopdevs.odoo-role
Licencia
gpl-3.0
Descargas
22.4k
Propietario
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.