配置文件

从配置文件加载仅在ProEnterprise计划中可用(仅限自托管计划)。

在自托管的ProEnterprise计划中,Metabase支持从名为config.yml的配置文件中初始化。

  • 当前目录(运行Metabase JAR所在的目录)。
  • MB_CONFIG_FILE_PATH环境变量指定的路径。

配置文件中的设置与在Metabase的管理设置中设置的设置效果相同。此配置文件中定义的设置将更新任何现有设置。例如,如果一个数据库已经存在(即,您已经通过初始设置或管理设置>数据库添加了它),Metabase将根据配置文件中的数据更新该数据库条目。这意味着:如果您在配置文件中定义了一个设置,然后又在Metabase应用程序中更改了该设置,请记住,Metabase重新启动时,配置文件将覆盖该更改。让我们在引用块中重申这一点

每次Metabase重新启动并加载您的配置文件时,配置文件中的设置将覆盖在Metabase UI中对这些设置所做的任何更改。

配置文件设置不被视为硬编码的真实来源(就像环境变量一样)。环境变量设置的设置在应用程序本身的管理设置中也无法更改。

示例配置模板

请参阅配置模板

配置设置

配置文件分为几个部分:versionconfig。在config下,您可以指定

如下

version: 1
config:
  settings:
    - ...
  users:
    - ...
  databases:
    - ...

配置文件还必须包含一个version键,这只是一个方便字段,用于帮助您跟踪配置文件版本。

用户

Metabase实例中创建的第一个用户是管理员。配置文件中列出的第一个用户可能被指定为管理员,但并非必然。如果有人已经启动并登录到该Metabase,Metabase将使第一个用户成为管理员。此外,您可以通过使用is_superuser: true键将用户帐户指定为管理员。

在以下示例中,假设Metabase尚未设置(这会创建第一个用户),那么first@example.comadmin@example.com都将是管理员:first@example.com因为它是列表中的第一个用户帐户,而admin@example.com因为该用户将is_superuser标志设置为true。

version: 1
config:
  users:
    - first_name: First
      last_name: Person
      password: metabot1
      email: first@example.com
    - first_name: Normal
      last_name: Person
      password: metabot1
      email: normal@example.com
    - first_name: Admin
      last_name: Person
      password: metabot1
      is_superuser: true
      email: admin@example.com

如果Metabase已设置,则first@example.com将作为普通用户加载。

数据库

在一个新的Metabase中,以下示例设置了一个管理员用户帐户和一个数据库连接。


version: 1
config:
  users:
    - first_name: Cam
      last_name: Era
      password: 2cans3cans4cans
      email: cam@example.com
  databases:
    - name: test-data (Postgres)
      engine: postgres
      details:
        host: localhost
        port: 5432
        user: dbuser
        password: "{{ env POSTGRES_TEST_DATA_PASSWORD }}"
        dbname: test-data

要确定可以为数据库指定哪些键,请查看Metabase本身中要添加的数据库的可用字段。

设置数据库的上传功能

您还可以使用以下设置在配置文件中配置上传

  • uploads_enabled:布尔值
  • uploads_schema_name:字符串
  • uploads_table_prefix:字符串

这是一个例子


version: 1
config:
  users:
    - first_name: Cam
      last_name: Era
      password: 2cans3cans4cans
      email: cam@example.com
  databases:
    - name: test-data (Postgres)
      engine: postgres
      details:
        host: localhost
        port: 5432
        user: dbuser
        password: "{{ env POSTGRES_TEST_DATA_PASSWORD }}"
        dbname: test-data
      uploads_enabled: true
      uploads_schema_name: uploads
      uploads_table_prefix: uploads_

参阅上传

API 密钥

您可以使用配置文件创建API密钥,这对于自动化部署和保持跨环境API密钥的稳定性非常有用。

您可以像这样添加API密钥


version: 1
config:
  users:
    - first_name: Cam
      last_name: Era
      password: 2cans3cans4cans
      email: cam@example.com
  api-keys:
    - name: "Admin API key"
      group: admin
      creator: cam@example.com
      key: mb_firsttestapikey
    - name: "All Users API key"
      group: all-users
      creator: cam@example.com
      key: mb_secondtestapikey

您还可以使用环境变量提供API密钥,如下所示


api-keys:
  - name: "ENV API Key"
    key: "{{env API_KEY_FROM_ENV}}"
    creator: "admin@example.com"
    group: "admin"

有关配置文件中环境变量的更多信息,请参阅下方。

您创建的API密钥(key的值)必须是mb_后跟一个Base64字符串(如果您穿着正式服装,可以说是一个tetrasexagesimal字符串)。因此,mb_后跟字母和数字,最短:12个字符,最长:254个字符。具体来说,您创建的API密钥必须满足以下正则表达式:mb_[A-Za-z0-9+/=]+

您可以使用openssl rand命令生成一个漂亮的API密钥

echo "mb_$(openssl rand -base64 32)"

这将生成类似

mb_aDqk1Tc4ZotWb2TyjHY71glALKlB+g75dLgmSufWGLc=

关于配置文件中API密钥的其他注意事项

  • creator(API密钥的创建者)必须是管理员。这意味着a)您的Metabase必须已经至少有一个管理员帐户,或者b)您需要在配置文件的users部分添加一个管理员帐户。
  • 密钥本身可以分配给以下两个组之一:adminall-users。配置文件将group的分配限制在这两个组中,因为它们是Metabase始终初始化的组。
  • 密钥的权限对应于其group(而不是其creator)授予的权限。
  • 如果Metabase找到一个与配置文件中的密钥名称相同的现有API密钥,它将保留现有密钥(即,它不会用配置文件中的密钥覆盖现有密钥)。例如,如果您最初设置了一个API密钥,然后又在Metabase用户界面中重新生成了该密钥,则使用配置文件加载Metabase不会覆盖重新生成的密钥(这意味着配置文件中的key将不再起作用)。
  • 如果您确实想用配置文件覆盖现有密钥,您需要先删除现有密钥。如果您想保留两个密钥,您需要重命名配置文件中的密钥。

配置文件还在config.yml文件的settings部分包含一个api-key键。此设置创建API密钥;它用于匹配/notify端点的身份验证请求的标头中的字符串。

config.yml中引用环境变量

如上例所示,可以使用模板标签来指定环境变量,如下所示


setting: "{{ env POSTGRES_TEST_DATA_PASSWORD }}"

注意模板"{{ env API_KEY_FROM_ENV }}"周围的引号;如果您不包含引号,YAML解析器将不知道它是Metabase要展开的字符串模板,Metabase也不知道将环境变量的值替换进去。

Metabase不支持递归扩展,因此如果您的某个环境变量引用了另一个环境变量,您将会遇到麻烦。

config.yml中的特殊字符值

如果值包含双大括号(}}{{),则必须使用三层大括号来告诉配置文件解析器使用字面值。例如,如果您的密码是MetaPa$$123{{>,则需要将值括在三层大括号中,如下所示


password: "{{{ MetaPa$$123{{> }}}"

注意"{{{ MetaPa$$123{{> }}}"中的引号。

禁用初始数据库同步

在从序列化导出加载数据模型时,您希望禁用调度程序,这样Metabase就不会尝试同步。

要禁用初始数据库同步,您可以将config-from-file-sync-database添加到settings列表中,并将值设置为false。设置config-from-file-sync-database必须位于数据库列表之前,如下所示

version: 1
config:
  settings:
    config-from-file-sync-databases: false
  databases:
    - name: my-database
      engine: postgres
      details: ...

设置

在此配置文件中,您可以指定任何管理员设置。

通常,您可以在此配置文件的settings部分设置的设置映射到环境变量,因此请查看它们以了解您可以在配置文件中使用哪些设置。包含在配置文件中的实际键与用于环境变量的格式略有不同。对于环境变量,格式是全大写字母的蛇形命名法,并以MB前缀

MB_NAME_OF_VARIABLE

而在配置文件中,您将其翻译为

name-of-variable

因此,例如,如果您想在config.yml文件中指定MB_EMAIL_FROM_NAME

version: 1
config:
  settings:
    config-from-file-sync-databases: false
    email-from-name: Stampy von Mails-a-lot
  databases:
    - name: my-database
      engine: h2
      details: ...

但是,您可以使用配置文件设置任何管理员设置(有关设置列表,请参阅配置文件模板)。您还可以浏览环境变量列表以查看可以配置的内容(但请注意,并非所有环境变量都可以通过配置文件进行设置)。

从配置文件加载新的Metabase

由于从配置文件加载是Pro/Enterprise功能:对于新安装,您需要使用MB_PREMIUM_EMBEDDING_TOKEN环境变量向Metabase提供一个令牌。

MB_PREMIUM_EMBEDDING_TOKEN="[your token]" java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar

延伸阅读

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档吗?提出更改。
© . This site is unofficial and not affiliated with Metabase, Inc.