跳转到主要内容

将一些配置移出数据库

项目描述

Production/Stable License: LGPL-3 OCA/server-env Translate me on Weblate Try me on Runboat

此模块提供了一种在主Odoo配置文件中定义环境并从基于配置的环境的文件中读取一些配置的方法:您在主配置文件中定义环境,各种可能环境的值存储在 server_environment_files 伴随模块中。

server_environment_files 模块是可选的,值可以使用环境变量设置,并在数据库中使用默认值作为后备。您将能够覆盖一些Odoo选项。

从文件中读取的配置在“配置”菜单下可见。如果您不在“dev”环境中,您将无法看到包含在定义的密钥(默认为:‘passw’,‘key’,‘secret’和‘token’)中的值。

目录

安装

该模块本身作用有限。例如,mail_environment 扩展依赖于该模块,以便根据环境配置传入和传出邮件服务器。

您可以将配置值存储在一个名为 server_environment_files 的辅助模块中。您可以为此目的复制并自定义提供的 server_environment_files_sample 模块。或者,您可以通过环境变量 SERVER_ENV_CONFIGSERVER_ENV_CONFIG_SECRET 来提供它们。

配置

要配置此模块,您需要编辑您实例的主配置文件,并添加一个名为 running_env 的指令。常用值包括 'dev'、'test'、'production'。

[options]
running_env=dev

或设置环境变量 RUNNING_ENVODOO_STAGE。如果都设置了,则配置文件将优于环境变量,而 RUNNING_ENV 将优于 ODOO_STAGE

ODOO_STAGE 用于 odoo.sh 平台,在该平台上我们无法设置 RUNNING_ENV,可能的观察值有 productionstagingdev

与包含 'passw' 键的键相关联的值仅在 'dev' 环境中显示。

如果您不提供任何值,则默认使用 'test' 作为安全默认值。

您有多种方法可以设置配置值。

server_environment_files

您可以在 server_environment_files 插件中编辑您需要的设置。可以将 server_environment_files_sample 用作示例。

  • 可以将适用于所有/大多数环境的值存储在 default/ 目录中,使用 .ini 文件语法;

  • 需要定义的每个环境都存储在其自己的目录中,可以覆盖或扩展默认值;

  • 您可以在您实例的主配置文件中覆盖或扩展值;

  • 在某些平台(如 odoo.sh,其中生产配置文件被复制到测试环境中)中,覆盖 [options] 部分中的选项可能很有用。您必须通过向之前的 odoo.cfg 配置文件中添加 server_environment_allow_overwrite_options_section = True 或通过环境变量: export SERVER_ENVIRONMENT_ALLOW_OVERWRITE_OPTIONS_SECTION=True(如果两者都设置,则配置文件优先)来允许覆盖。

环境变量

您可以在环境变量 SERVER_ENV_CONFIG 和/或 SERVER_ENV_CONFIG_SECRET 中定义配置。这两个变量以完全相同的方式处理,这只是为了部署的便利,可以在不同的加密文件中隔离机密。它们是多行环境变量,格式与文件相同。如果您在 server_environment_files 中使用了选项,则环境变量中设置的选项将覆盖它们。

环境变量中的选项不依赖于 running_env,变量的内容必须根据运行环境相应设置。

设置示例

一个公开文件,其中将包含公开变量

# 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
"

第二个加密文件,其中包含机密

# 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
"

警告

my_sftp 必须与记录的名称匹配。如果您需要更可靠的方法,请使用 server.env.techname.mixin 并使用 tech_name 字段来引用记录。请参阅“用法”。

默认值

当使用 server.env.mixin 混合时,对于每个 env-computed 字段,创建一个相应的辅助字段 <field>_env_default。该字段不依赖于环境。它是在配置文件/环境变量中没有设置密钥时的回退值。

当使用默认字段时,字段在 Odoo 上可编辑。

注意:空环境密钥始终优先于默认字段

服务器环境集成

请参阅类 models/server_env_mixin.py 的文档。

使用方法

您可以在模型中包含一个混合,并通过重写 _server_env_fields 来配置 env-computed 字段。

class StorageBackend(models.Model):
    _name = "storage.backend"
    _inherit = ["storage.backend", "server.env.mixin"]

    @property
    def _server_env_fields(self):
        return {"directory_path": {}}

请参阅类和 models/server_env_mixin.py 中的方法文档。

如果您需要一个技术名称来引用

class StorageBackend(models.Model):
    _name = "storage.backend"
    _inherit = ["storage.backend", "server.env.techname.mixin", "server.env.mixin"]

    [...]

已知问题/路线图

  • 无法从命令行设置环境。必须使用配置文件。

  • 该模块不允许设置数据库服务器等低级属性。

  • server.env.techname.mixintech_name字段可以利用可计算/可写字段的新选项,并消除一些onchange/读/写代码。

错误跟踪器

在GitHub Issues(https://github.com/OCA/server-env/issues)上跟踪错误。如果遇到问题,请先检查是否已报告该问题。如果是您首先发现的,请通过提供详细且受欢迎的反馈来帮助我们解决问题。

请不要直接联系贡献者以获取支持或帮助解决技术问题。

鸣谢

作者

  • Camptocamp

贡献者

维护者

此模块由OCA维护。

Odoo Community Association

OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。

此模块是GitHub上OCA/server-env项目的一部分(https://github.com/OCA/server-env/tree/14.0/server_environment)。

欢迎您贡献力量。有关如何贡献的信息,请访问https://odoo-community.org/page/Contribute

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分布

此版本没有可用的源代码分布文件。请参阅有关生成分布存档的教程。

构建分布

由支持