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
Если вам нужно использовать Rest Framework и вы хотите запустить сервер в режиме разработки, используйте:
odoo_role_enable_rest_framework: true
Эта опция добавляет в файл конфигурации Odoo секцию и опцию для режима разработки: https://github.com/OCA/rest-framework/tree/12.0/base_rest#configuration
- Поддержка Queue Job
Если вам нужно использовать модуль 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
Если вы хотите использовать модуль 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"
Помощь для разработчиков
- Шаблон с
ct
создан для/etc/profile.d/
. - Добавлены сценарии
odoo-backup
иodoo-restore
.
Вы можете пропустить это, установив переменную 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
Odoo 10+ provisioning role
ansible-galaxy install coopdevs/odoo-role