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
- Rest Framework Unterstützung
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
- Queue Job Unterstützung
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
- sentry Unterstützung
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
undodoo-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 vonhost_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 unterMein Inhalt
finden.
Lizenz
GPLv3
Autoreninformation
@ygneo http://coopdevs.org
Odoo 10+ provisioning role
ansible-galaxy install coopdevs.odoo-role