odoo-role

Роль Ansible дляProvisioning Odoo

Это роль Ansible для развертывания Odoo. Она поддерживает:

  • Odoo 12
  • Odoo 11
  • Odoo 10

Пока что она не тестировалась с Odoo 13.

Требования

PostgreSQL (версия 9.5 и выше).

На данный момент эта роль поддерживает только пиринговую аутентификацию для доступа к базе данных PostgreSQL.

Поэтому вам нужно создать базу данных в PostgreSQL, одного пользователя с доступом к этой базе данных и одного системного пользователя с тем же именем.

Например, вы можете создать пользователя odoo в PostgreSQL с доступом к созданной базе данных и пользователя с именем odoo в вашей системе.

Переменные роли

Доступные переменные перечислены ниже с значениями по умолчанию:

  • Издание

Эта роль поддерживает установку Odoo по двум различным стратегиям: git (из git репозитория) и tar (пакет или сжатый файл релиза).

# Стратегия загрузки релизов Odoo: tar или git
odoo_role_download_strategy: tar

# Переменные для стратегии загрузки tar
odoo_role_odoo_version: 11.0 # не используется вне этого файла
odoo_role_odoo_release: 20190505 # не используется вне этого файла
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"

# Переменные для стратегии загрузки 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"
odoo_role_force_pyenv_version: false
  • Пользователи и группы
odoo_role_odoo_user: odoo
odoo_role_odoo_group: odoo
  • Структура каталогов
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
  • Базы данных
odoo_role_odoo_dbs: [ "odoo" ]
odoo_role_dbfilter_enabled: true
odoo_role_odoo_db_admin_password: 1234
odoo_role_demo_data: false
odoo_role_list_db: false
  • Настройки HTTP сервера Odoo
odoo_role_odoo_http_interface: 0.0.0.0
odoo_role_odoo_proxy_mode: false
odoo_role_workers: 2
  • Другие настройки сервера 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
  • Список основных модулей для установки/обновления
odoo_role_odoo_core_modules_dict:
  shared:
    - base
  db1:
    - account
  • Список модулей сообщества для установки/обновления
odoo_role_odoo_community_modules_dict:
  shared:
    - web_responsive
  db1:
    - mis_reports
  • Принудительное обновление модулей Odoo Чтобы принудительно обновить модуль Odoo или список модулей выполните развертывание с командой
-e "odoo_role_modules_force_update=['l10n_es']"
  • Режим разработки

Odoo имеет режим, который автоматически перезагружает сервер при изменении кода и читает представления из кода для ускорения процесса разработки. Используя параметр командной строки --dev мы можем запустить Odoo в режиме разработки.

odoo_role_dev_mode: true

Если этот режим активен, служебная единица systemd не создается, и вы должны запустить процесс Odoo вручную. Вы можете сделать это с помощью следующей команды:

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

Если вам нужно использовать Rest Framework и вы хотите запустить сервер в режиме разработки, используйте:

odoo_role_enable_rest_framework: true

Эта опция добавляет в файл конфигурации Odoo секцию и опцию для режима разработки: https://github.com/OCA/rest-framework/tree/12.0/base_rest#configuration

Если вам нужно использовать модуль queue_job, используйте:

odoo_role_enable_queue_job: true

Эта опция добавляет в файл конфигурации Odoo опцию для включения queue_job как нового потока/процесса: https://github.com/OCA/queue/blob/12.0/queue_job/README.rst#id12

  • Модули на уровне сервера

Если вам нужно установить какие-то модули на уровне сервера помимо db_filter и queue_job, используйте:

odoo_role_odoo_server_wide_modules: ['module1', 'module2']

По умолчанию на уровне сервера конфигурируются модули web и base, так как они обязательны с версии Odoo 12, а также db_filter и queue_job, если соответствующие переменные установлены в true.

  • Конфигурация рабочих процессов

Вы также можете определить, сколько рабочих процессов вы хотите использовать для выполнения задач:

odoo_role_channels: root:2

Если вы хотите использовать модуль sentry, используйте:

odoo_role_enable_sentry: true
odoo_role_sentry_dsn: https://your_sentry_url
  • Перезапись i18n

Мы можем принудительно перезаписать i18n, используя следующую переменную:

odoo_role_i18n_overwrite: true

Вы можете определить эту переменную в инвентаризации или использовать её при выполнении плейбука:

ansible-playbook playbooks/provision.yml -i ../my-inventory/inventory/hosts --ask-vault-pass --limit=host -e "{odoo_role_i18n_overwrite: true}"
  • Переменные окружения

Если вам нужно определить набор переменных окружения для вашего сервера, вы можете использовать переменную словаря environment_variables:

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

Эта опция добавляет файл в /etc/default/odoo с переменными и добавляет к службе Systemd атрибут EnvironmentFile, указывающий на /etc/default/odoo.

Теги роли

  • Использование тега only-modules

Этот тег помогает устанавливать или обновлять модули Odoo без полного развертывания. Запустите плейбук с параметром --tags:

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

Помощь для разработчиков

Вы можете пропустить это, установив переменную odoo_role_dev_helpers в false.

odoo_role_dev_helpers: true

Общинные роли

Развертывание

Чтобы использовать общинные роли, вам нужно развернуть эти модули на сервере. Эта роль управляет развертыванием модулей с помощью pip.

Вы можете определить файл requirements.txt, чтобы управлять модулями и гарантировать установленную версию:

# 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

Путь к файлу requirements.txt по умолчанию: "{{ inventory_dir }}/../files/requirements.txt".

Вы можете изменить его с помощью переменной odoo_role_community_modules_requirements_path.

Это позволяет вам иметь разные файлы requirements.txt и использовать их условно.

Например, вы можете установить его как {{ inventory_dir }}/../files/requirements-dev.txt и использовать его для сред разработки, переопределяя переменную на уровне host_vars.

Установка

После того как модули находятся на сервере, вам нужно установить их в базу данных.

Определите переменную odoo_role_odoo_community_modules со списком имен модулей, которые вы хотите установить.

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

Зависимости

Эта роль не зависит от других ролей (пока).

Пример Плейбука

- 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

Разработка и тестирование

Для разработки и тестирования роли мы используем devenv для управления локальными виртуальными машинами в Linux.

Вы можете использовать файл .devenv в папке tests, чтобы создать виртуальную машину.

devenv

Затем вы можете протестировать роль с помощью следующей команды:

ansible-playbook devenv.yml -i inventory

Это создаст виртуальную машину с postgresql, затем выполнит роль.

Выпуск

Чтобы опубликовать новый релиз:

  • Зайдите в releases и нажмите на Draft a new release.
  • Создайте новую метку в Choose a tag и обновите описание с журналом изменений, как в следующем примере:
## Что изменилось
* feat: изменить порядок путей аддонов от @oyale в https://github.com/coopdevs/odoo-role/pull/135
* Добавить пакеты pytest и coverage в среды разработки от @oyale в https://github.com/coopdevs/odoo-role/pull/136


**Полный журнал изменений**: https://github.com/coopdevs/odoo-role/compare/v0.3.4...v0.3.5
  • После публикации релиза перейдите на ansible galaxy, чтобы импортировать новый релиз. Вы должны найти репозиторий odoo-role в разделе My content.

Лицензия

GPLv3

Авторская информация

@ygneo http://coopdevs.org

Установить
ansible-galaxy install coopdevs/odoo-role
Лицензия
gpl-3.0
Загрузки
21852
Владелец
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.