coopdevs.odoo-role

Eine Odoo Ansible Provisioning Rolle

Dies ist eine Ansible-Rolle für die Bereitstellung von Odoo. Sie unterstützt:

  • Odoo 12
  • Odoo 11
  • Odoo 10

Sie wurde bisher nicht mit Odoo 13 getestet.

Voraussetzungen

Ein PostgreSQL (9.5+).

Aktuell unterstützt diese Rolle nur die Peer-Authentifizierung für den Zugriff auf die PostgreSQL-Datenbank.

Sie müssen also eine Datenbank in PostgreSQL erstellen, einen Benutzer mit Zugriff auf diese Datenbank und einen Systembenutzer mit demselben Benutzernamen.

Zum Beispiel können Sie einen odoo-Benutzer in PostgreSQL mit Zugriff auf die erstellte Datenbank erstellen und einen Benutzer namens odoo in Ihrem System.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten:

  • Edition

Diese Rolle unterstützt die Installation von Odoo auf zwei verschiedene Arten: git (aus einem Git-Repository) und tar (ein Paket oder eine komprimierte Datei).

# Download-Strategie für Odoo-Versionen: tar oder git
odoo_role_download_strategy: tar

# Variablen für die tar-Downloadstrategie
odoo_role_odoo_version: 11.0 # wird außerhalb dieser Datei nicht verwendet
odoo_role_odoo_release: 20190505 # wird außerhalb dieser Datei nicht verwendet
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"

# Variablen für die git-Downloadstrategie
odoo_role_odoo_git_url: "https://github.com/OCA/OCB.git"
odoo_role_odoo_git_ref: "11.0"
# Variable zur Definition der pip-Version
odoo_role_pip_version: "23.1.2"

# Variable zur erzwungenen Neuinstallation der vorhandenen Python-Version in pyenv
odoo_role_force_pyenv_version: false
  • Benutzer und Gruppen
odoo_role_odoo_user: odoo
odoo_role_odoo_group: odoo
  • Verzeichnisstruktur
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
  • Datenbanken
# Reihe von DBs, die die Rolle erstellen wird.
odoo_role_odoo_dbs: [ "odoo" ]
# In einer Multidatenbank-Umgebung, wo mehr als eine Gruppe die gleiche Instanz mit isolierten Ansichten nutzt,
# muss jeder DB-Name dem DNS-Namen entsprechen, unter dem zugegriffen wird.
odoo_role_odoo_dbs: [ "odoo.some.coop", "erp.another.org" ]
# Nur in einer Multidatenbank-Umgebung, wählt DB basierend auf dem HTTP Host-Header.
odoo_role_dbfilter_enabled: true
# Dies ist das Passwort, das Odoo vom Benutzer verlangt, um das Erstellen, Löschen usw. von DBs zu erlauben.
odoo_role_odoo_db_admin_password: 1234
# Ob die Datenbank mit Beispieldaten gefüllt werden soll oder nicht.
odoo_role_demo_data: false
# Die Möglichkeit geben, eine Datenbank vor dem Login auszuwählen (wenn dbfilter deaktiviert), und das Webinterface für den DB-Manager aktivieren.
odoo_role_list_db: false
  • Odoo HTTP-Servereinstellungen
# Setzen Sie dies auf 127.0.0.1, wenn Odoo hinter einem Reverse-Proxy läuft
odoo_role_odoo_http_interface: 0.0.0.0
# Setzen Sie dies auf true, wenn Odoo hinter einem Reverse-Proxy läuft
odoo_role_odoo_proxy_mode: false
# Geben Sie an, wie viele HTTP-Arbeiter Sie benötigen (Standard ist 1)
odoo_role_workers: 2
  • Weitere Odoo-Servereinstellungen
# Anpassen der Odoo-Timeouts
odoo_role_limit_time_cpu: 60
odoo_role_limit_time_real: 120

# Anpassen der Odoo-Speicherlimits
odoo_role_limit_memory_hard: 2684354560
odoo_role_limit_memory_soft: 2147483648
  • Kernmodule zur Installation/Aktualisierung
# Liste von Modulen, die vor dem Start des Servers installiert werden sollen.
odoo_role_odoo_core_modules_dict:
  shared:
    - base
  db1:
    - account
  • Community-Module zur Installation/Aktualisierung
# Liste von Modulen, die vor dem Start des Servers installiert werden sollen.
odoo_role_odoo_community_modules_dict:
  shared:
    - web_responsive
  db1:
    - mis_reports
  • Odoo-Module forcieren

Um ein Odoo-Modul oder eine Liste von Modulen zu forcieren, führen Sie die Bereitstellung mit dem Befehl aus:

-e "odoo_role_modules_force_update=['l10n_es']"
  • Entwicklungsmodus

Odoo hat einen Modus, um den Server beim Ändern des Codes automatisch neu zu laden. Verwenden Sie den Befehlszeilenparameter --dev, um Odoo im Entwicklungsmodus zu starten.

odoo_role_dev_mode: true

Wenn dieser Modus aktiv ist, wird die systemd-Einheit nicht erstellt und Sie müssen den Odoo-Prozess manuell starten. Sie können ihn mit folgendem Befehl starten:

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

Wenn Sie das Rest Framework nutzen und den Server im Entwicklungsmodus starten möchten, verwenden Sie:

odoo_role_enable_rest_framework: true

Diese Option fügt der Odoo-Konfigurationsdatei die erforderlichen Abschnitte für den Entwicklungsmodus hinzu: https://github.com/OCA/rest-framework/tree/12.0/base_rest#configuration

Wenn Sie das Modul queue_job nutzen möchten, verwenden Sie:

odoo_role_enable_queue_job: true

Diese Option fügt der Odoo-Konfigurationsdatei die Option hinzu, queue_job als neuen Thread/Prozess zu aktivieren: https://github.com/OCA/queue/blob/12.0/queue_job/README.rst#id12

  • Serverweite Module

Wenn Sie neben db_filter und queue_job einige serverweite Module installieren möchten, verwenden Sie:

odoo_role_odoo_server_wide_modules: ['module1', 'module2']

Standardmäßig werden als serverweite Module web und base - sofern sie ab Odoo v12 Pflicht sind - in jedem Fall konfiguriert sowie db_filter und queue_job, wenn die entsprechenden Variablen auf true gesetzt sind.

  • Worker-Konfiguration

Sie können auch definieren, wie viele Worker Sie für die Ausführung der Jobs nutzen möchten:

odoo_role_channels: root:2

Wenn Sie das Modul sentry verwenden möchten, nutzen Sie:

odoo_role_enable_sentry: true
odoo_role_sentry_dsn: https://your_sentry_url
  • i18n Überschreibung

Wir können die i18n Überschreibung mit der nächsten Variable erzwingen:

odoo_role_i18n_overwrite: true

Sie können diese Variable im Inventar definieren oder sie beim Ausführen eines Playbooks verwenden:

ansible-playbook playbooks/provision.yml -i ../my-inventory/inventory/hosts --ask-vault-pass --limit=host -e "{odoo_role_i18n_overwrite: true}"
  • Umgebungsvariablen

Wenn Sie eine Reihe von Umgebungsvariablen für Ihren Server festlegen müssen, können Sie das environment_variables-Diktat verwenden:

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

Diese Option fügt eine Datei in /etc/default/odoo mit den Variablen hinzu und fügt dem Systemd-Dienst das Attribut EnvironmentFile hinzu, das auf /etc/default/odoo verweist.

Rollen-Tags

  • Verwendung des only-modules Tags

Dieser Tag hilft Ihnen, Odoo-Module zu installieren oder zu aktualisieren, ohne eine vollständige Einrichtung durchzuführen. Führen Sie das Playbook mit der Option --tags aus:

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

Entwicklerhilfen

  • Eine Vorlage mit ct Alias wird in /etc/profile.d/ erstellt.
  • Es werden Skripte odoo-backup und odoo-restore hinzugefügt.

Sie können dies überspringen, indem Sie die Variable odoo_role_dev_helpers auf false setzen.

odoo_role_dev_helpers: true

Gemeinschaftsrollen

Bereitstellung

Um Gemeinschaftsrollen zu verwenden, müssen Sie diese Module auf dem Server bereitstellen. Diese Rolle verwaltet die Modulbereitstellung mit pip.

Sie können eine requirements.txt-Datei erstellen, um die Module zu verwalten und sicherzustellen, welche Version installiert ist:

# 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

Der Standardpfad der requirements.txt-Datei ist "{{ inventory_dir }}/../files/requirements.txt".

Sie können ihn mit der Variable odoo_role_community_modules_requirements_path ändern.

Dies ermöglicht es Ihnen, verschiedene requirements.txt-Dateien zu haben und diese unter bestimmten Bedingungen zu verwenden.

Zum Beispiel könnten Sie ihn auf {{ inventory_dir }}/../files/requirements-dev.txt setzen und ihn für Entwicklungsumgebungen verwenden, indem Sie die Variable auf der Ebene von host_vars neu definieren.

Installation

Sobald die Module auf dem Server sind, müssen Sie sie in der Datenbank installieren.

Definieren Sie eine Variable odoo_role_odoo_community_modules mit der Liste der Modulnamen, die Sie installieren möchten.

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

Abhängigkeiten

Diese Rolle hängt (noch) nicht von anderen Rollen ab.

Beispiel-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

Entwicklung & Test

Für die Entwicklung und das Testen der Rolle verwenden wir devenv, um lokale virtuelle Maschinen in Linux-Umgebungen zu verwalten.

Sie können die Datei .devenv im tests-Ordner verwenden, um eine virtuelle Maschine zu erstellen.

devenv

Dann können Sie die Rolle mit folgendem Befehl testen:

ansible-playbook devenv.yml -i inventory

Es wird eine virtuelle Maschine mit PostgreSQL bereitgestellt und dann die Rolle ausgeführt.

Veröffentlichung

Um eine neue Version zu veröffentlichen:

  • Gehen Sie zu Releases und klicken Sie auf Draft a new release.
  • Erstellen Sie ein neues Tag in Choose a tag und aktualisieren Sie die Beschreibung mit dem Änderungsprotokoll, wie im folgenden Beispiel:
## Was hat sich geändert
* feat: Invertiere die Reihenfolge der Add-on-Pfade von @oyale in https://github.com/coopdevs/odoo-role/pull/135
* Füge pytest und coverage-Pakete zu Entwicklungsumgebungen von @oyale in https://github.com/coopdevs/odoo-role/pull/136 hinzu


**Volles Änderungsprotokoll**: https://github.com/coopdevs/odoo-role/compare/v0.3.4...v0.3.5
  • Nach der Veröffentlichung der Version gehen Sie zu ansible galaxy, um die neue Version zu importieren. Sie sollten das odoo-role-Repository unter Mein Inhalt finden.

Lizenz

GPLv3

Autoreninformation

@ygneo http://coopdevs.org

Installieren
ansible-galaxy install coopdevs.odoo-role
Lizenz
gpl-3.0
Downloads
22.4k
Besitzer
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.