267 lines
9.7 KiB
ReStructuredText
267 lines
9.7 KiB
ReStructuredText
|
======================================
|
||
|
server configuration environment files
|
||
|
======================================
|
||
|
|
||
|
..
|
||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
!! This file is generated by oca-gen-addon-readme !!
|
||
|
!! changes will be overwritten. !!
|
||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
!! source digest: sha256:ce6d750c2ce8a1f6c35c5d53c1de670199e85e3a18012e567974c89427c2b5ed
|
||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
|
||
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
|
||
|
:target: https://odoo-community.org/page/development-status
|
||
|
:alt: Production/Stable
|
||
|
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
|
||
|
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
|
||
|
:alt: License: LGPL-3
|
||
|
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--env-lightgray.png?logo=github
|
||
|
:target: https://github.com/OCA/server-env/tree/14.0/server_environment
|
||
|
:alt: OCA/server-env
|
||
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||
|
:target: https://translation.odoo-community.org/projects/server-env-14-0/server-env-14-0-server_environment
|
||
|
:alt: Translate me on Weblate
|
||
|
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
||
|
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-env&target_branch=14.0
|
||
|
:alt: Try me on Runboat
|
||
|
|
||
|
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||
|
|
||
|
This module provides a way to define an environment in the main Odoo
|
||
|
configuration file and to read some configurations from files
|
||
|
depending on the configured environment: you define the environment in
|
||
|
the main configuration file, and the values for the various possible
|
||
|
environments are stored in the ``server_environment_files`` companion
|
||
|
module.
|
||
|
|
||
|
The ``server_environment_files`` module is optional, the values can be set using
|
||
|
an environment variable with a fallback on default values in the database. you
|
||
|
will be able to overwrite some odoo options.
|
||
|
|
||
|
The configuration read from the files are visible under the Configuration
|
||
|
menu. If you are not in the 'dev' environment you will not be able to
|
||
|
see the values contained in the defined secret keys
|
||
|
(by default : '*passw*', '*key*', '*secret*' and '*token*').
|
||
|
|
||
|
**Table of contents**
|
||
|
|
||
|
.. contents::
|
||
|
:local:
|
||
|
|
||
|
Installation
|
||
|
============
|
||
|
|
||
|
By itself, this module does little. See for instance the
|
||
|
``mail_environment`` addon which depends on this one to allow configuring
|
||
|
the incoming and outgoing mail servers depending on the environment.
|
||
|
|
||
|
You can store your configuration values in a companion module called
|
||
|
``server_environment_files``. You can copy and customize the provided
|
||
|
``server_environment_files_sample`` module for this purpose. Alternatively, you
|
||
|
can provide them in environment variables ``SERVER_ENV_CONFIG`` and
|
||
|
``SERVER_ENV_CONFIG_SECRET``.
|
||
|
|
||
|
Configuration
|
||
|
=============
|
||
|
|
||
|
To configure this module, you need to edit the main configuration file
|
||
|
of your instance, and add a directive called ``running_env``. Commonly
|
||
|
used values are 'dev', 'test', 'production'::
|
||
|
|
||
|
[options]
|
||
|
running_env=dev
|
||
|
|
||
|
Or set the `RUNNING_ENV` or `ODOO_STAGE` environment variable. If both all are set config file
|
||
|
will take the precedence on environment and `RUNNING_ENV` over `ODOO_STAGE`.
|
||
|
|
||
|
`ODOO_STAGE` is used for odoo.sh platform where we can't set `RUNNING_ENV`, possible
|
||
|
observed values are `production`, `staging` and `dev`
|
||
|
|
||
|
Values associated to keys containing 'passw' are only displayed in the 'dev'
|
||
|
environment.
|
||
|
|
||
|
If you don't provide any value, `test` is used as a safe default.
|
||
|
|
||
|
You have several possibilities to set configuration values:
|
||
|
|
||
|
server_environment_files
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
You can edit the settings you need in the ``server_environment_files`` addon. The
|
||
|
``server_environment_files_sample`` can be used as an example:
|
||
|
|
||
|
* values common to all / most environments can be stored in the
|
||
|
``default/`` directory using the .ini file syntax;
|
||
|
* each environment you need to define is stored in its own directory
|
||
|
and can override or extend default values;
|
||
|
* you can override or extend values in the main configuration
|
||
|
file of your instance;
|
||
|
* In some platforms (like odoo.sh where production config file is copied to staging)
|
||
|
it can be usefull to overwrite options write in the `[options]` section. You must
|
||
|
allow the overwrite by adding `server_environment_allow_overwrite_options_section = True``
|
||
|
to the former `odoo.cfg` config file or through the environment variable:
|
||
|
`export SERVER_ENVIRONMENT_ALLOW_OVERWRITE_OPTIONS_SECTION=True` (if both are set
|
||
|
config file take precedent).
|
||
|
|
||
|
Environment variable
|
||
|
~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
You can define configuration in the environment variable ``SERVER_ENV_CONFIG``
|
||
|
and/or ``SERVER_ENV_CONFIG_SECRET``. The 2 variables are handled the exact same
|
||
|
way, this is only a convenience for the deployment where you can isolate the
|
||
|
secrets in a different, encrypted, file. They are multi-line environment variables
|
||
|
in the same configparser format than the files.
|
||
|
If you used options in ``server_environment_files``, the options set in the
|
||
|
environment variable override them.
|
||
|
|
||
|
The options in the environment variable are not dependent of ``running_env``,
|
||
|
the content of the variable must be set accordingly to the running environment.
|
||
|
|
||
|
Example of setup:
|
||
|
|
||
|
A public file, containing that will contain public variables::
|
||
|
|
||
|
# These variables are not odoo standard variables,
|
||
|
# they are there to represent what your file could look like
|
||
|
export WORKERS='8'
|
||
|
export MAX_CRON_THREADS='1'
|
||
|
export LOG_LEVEL=info
|
||
|
export LOG_HANDLER=":INFO"
|
||
|
export DB_MAXCONN=5
|
||
|
|
||
|
# server environment options
|
||
|
export SERVER_ENV_CONFIG="
|
||
|
[storage_backend.my_sftp]
|
||
|
sftp_server=10.10.10.10
|
||
|
sftp_login=foo
|
||
|
sftp_port=22200
|
||
|
directory_path=Odoo
|
||
|
"
|
||
|
|
||
|
A second file which is encrypted and contains secrets::
|
||
|
|
||
|
# This variable is not an odoo standard variable,
|
||
|
# it is there to represent what your file could look like
|
||
|
export DB_PASSWORD='xxxxxxxxx'
|
||
|
# server environment options
|
||
|
export SERVER_ENV_CONFIG_SECRET="
|
||
|
[storage_backend.my_sftp]
|
||
|
sftp_password=xxxxxxxxx
|
||
|
"
|
||
|
|
||
|
**WARNING**
|
||
|
|
||
|
`my_sftp` must match the name of the record.
|
||
|
If you want something more reliable use `server.env.techname.mixin`
|
||
|
and use `tech_name` field to reference records.
|
||
|
See "USAGE".
|
||
|
|
||
|
|
||
|
Default values
|
||
|
~~~~~~~~~~~~~~
|
||
|
|
||
|
When using the ``server.env.mixin`` mixin, for each env-computed field, a
|
||
|
companion field ``<field>_env_default`` is created. This field is not
|
||
|
environment-dependent. It's a fallback value used when no key is set in
|
||
|
configuration files / environment variable.
|
||
|
|
||
|
When the default field is used, the field is made editable on Odoo.
|
||
|
|
||
|
Note: empty environment keys always take precedence over default fields
|
||
|
|
||
|
|
||
|
Server environment integration
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
Read the documentation of the class `models/server_env_mixin.py
|
||
|
<models/server_env_mixin.py>`_.
|
||
|
|
||
|
Usage
|
||
|
=====
|
||
|
|
||
|
You can include a mixin in your model and configure the env-computed fields
|
||
|
by an override of ``_server_env_fields``.
|
||
|
|
||
|
::
|
||
|
|
||
|
class StorageBackend(models.Model):
|
||
|
_name = "storage.backend"
|
||
|
_inherit = ["storage.backend", "server.env.mixin"]
|
||
|
|
||
|
@property
|
||
|
def _server_env_fields(self):
|
||
|
return {"directory_path": {}}
|
||
|
|
||
|
Read the documentation of the class and methods in `models/server_env_mixin.py
|
||
|
<models/server_env_mixin.py>`__.
|
||
|
|
||
|
|
||
|
If you want to have a technical name to reference::
|
||
|
|
||
|
class StorageBackend(models.Model):
|
||
|
_name = "storage.backend"
|
||
|
_inherit = ["storage.backend", "server.env.techname.mixin", "server.env.mixin"]
|
||
|
|
||
|
[...]
|
||
|
|
||
|
Known issues / Roadmap
|
||
|
======================
|
||
|
|
||
|
* it is not possible to set the environment from the command line. A
|
||
|
configuration file must be used.
|
||
|
* the module does not allow to set low level attributes such as database server, etc.
|
||
|
* `server.env.techname.mixin`'s `tech_name` field could leverage the new option
|
||
|
for computable / writable fields and get rid of some onchange / read / write code.
|
||
|
|
||
|
Bug Tracker
|
||
|
===========
|
||
|
|
||
|
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-env/issues>`_.
|
||
|
In case of trouble, please check there if your issue has already been reported.
|
||
|
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||
|
`feedback <https://github.com/OCA/server-env/issues/new?body=module:%20server_environment%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||
|
|
||
|
Do not contact contributors directly about support or help with technical issues.
|
||
|
|
||
|
Credits
|
||
|
=======
|
||
|
|
||
|
Authors
|
||
|
~~~~~~~
|
||
|
|
||
|
* Camptocamp
|
||
|
|
||
|
Contributors
|
||
|
~~~~~~~~~~~~
|
||
|
|
||
|
* Florent Xicluna (Wingo) <florent.xicluna@gmail.com>
|
||
|
* Nicolas Bessi <nicolas.bessi@camptocamp.com>
|
||
|
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
|
||
|
* Daniel Reis <dgreis@sapo.pt>
|
||
|
* Holger Brunn <hbrunn@therp.nl>
|
||
|
* Leonardo Pistone <leonardo.pistone@camptocamp.com>
|
||
|
* Adrien Peiffer <adrien.peiffer@acsone.com>
|
||
|
* Thierry Ducrest <thierry.ducrest@camptocamp.com>
|
||
|
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
|
||
|
* Thomas Binfeld <thomas.binsfeld@acsone.eu>
|
||
|
* Stéphane Bidoul <stefane.bidoul@acsone.com>
|
||
|
* Simone Orsi <simahawk@gmail.com>
|
||
|
|
||
|
Maintainers
|
||
|
~~~~~~~~~~~
|
||
|
|
||
|
This module is maintained by the OCA.
|
||
|
|
||
|
.. image:: https://odoo-community.org/logo.png
|
||
|
:alt: Odoo Community Association
|
||
|
:target: https://odoo-community.org
|
||
|
|
||
|
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||
|
mission is to support the collaborative development of Odoo features and
|
||
|
promote its widespread use.
|
||
|
|
||
|
This module is part of the `OCA/server-env <https://github.com/OCA/server-env/tree/14.0/server_environment>`_ project on GitHub.
|
||
|
|
||
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|