(可选)在新 Looker 客户托管实例启动时,您可以自动为该实例配置许可密钥、主机网址和初始用户账号。
自动预配具有电子邮件用户的新实例
在初始启动时,Looker 会扫描 JAR 文件所在的 looker
目录,以查找名为 provision.yml
的文件。此文件的格式如下:
license_key: "1234-5678-ABCD-EFGH-IJKL"
host_url: "https://looker.mycompany.com"
user:
first_name: "Ariel"
last_name: "Q"
email: "arielq@altostrat.com"
password: "password123"
如果 Looker 实例是全新的且尚未设置,系统将使用给定的许可密钥和包含所提供信息的用户账号来配置该实例。
如果 Looker 已完成配置,许可密钥和主机网址值将替换实例中设置的任何许可密钥和主机网址。系统将忽略用户信息。此方法有助于使用生产实例的内部数据库的最新副本更新 Looker 的暂存实例,同时仍为暂存服务器保留单独的许可密钥和网址。
使用 API 用户自动预配新实例
在启动新的 Looker 实例时,您可以以编程方式预配初始 API 用户。您可以预配 API 用户或电子邮件用户,但 Looker 不支持同时预配 API 用户和电子邮件用户。
生成 API 凭据
如需预配 API 用户,请生成 Looker 将读取并保存到数据库中的客户端 ID 和客户端密钥。这些凭据的要求如下:
- 客户端 ID 的长度必须为 20 个字符。
- 客户端密钥的长度必须为 24 个字符。
- 这两个字符串都必须能够包含在
POST
请求的正文中;因此,我们建议您仅使用字母数字字符作为客户端 ID 和客户端密钥。
例如,Looker 使用以下代码以编程方式生成这些凭据:
require 'securerandom'
TOKEN_SYMBOLS = "bcdfghjkmnpqrstvwxyzBCDFGHJKMNPQRSTVWXYZ23456789".freeze
def generate_token(size)
Array.new(size).map { TOKEN_SYMBOLS[SecureRandom.random_number(TOKEN_SYMBOLS.size)] }.join
end
此代码会避开容易混淆的字符,以减少字符串出错的可能性。
您还可以使用 openssl
命令生成合适的字符串:
openssl rand -hex 10
openssl
命令末尾的数字是字符串中的字节数,因此请为客户端 ID 使用 10
,为客户端密钥使用 12
。
预配 API 用户
如需在启动时预配 API 用户,请确保您在 looker
目录中有一个包含许可密钥和主机网址的 provision.yml
文件。例如:
license_key: "1234-5678-ABCD-EFGH-IJKL"
host_url: "https://looker.mycompany.com"
在 looker
目录中创建一个名为 api-provision.yml
的文件,其中包含 API 用户信息,并具有 0600
权限。例如:
user:
first_name: "Ariel"
last_name: "Q"
client_id: "M9hZb8vRh9bSZzdPxw42"
client_secret: "NMnqBVbHqPsPzTvbZk6xZfV3"
我们建议您将这些凭据存储在文件之外的 Secret 管理器中,因为一旦 Looker 实例处理并创建数据库中的用户,此文件就会在启动时被移除。
在启动时,如果实例没有用户,Looker 会使用这些凭据创建 Looker 管理员 API 用户,并从磁盘中移除 api-provision.yml
文件。
以新用户身份登录后,您应至少再创建一个管理员用户,因为配置的 API 用户将被 Looker 自动删除。
自动删除已配置的凭据
预配的 API 用户仅用于预配新实例,不应无限期地保留在您的实例中。
在满足以下任一条件后,Looker 会自动删除已配置的 API 用户:
- 除了已配置的 API 用户之外,其他管理员用户已登录到该实例。
- 自已配置的 API 用户首次登录以来,已过去 50 分钟。
因此,您首次以已配置的用户身份登录后,应立即创建至少一个额外的管理员用户。