(可选)在新的 Looker 客户托管实例启动时,您可以自动为该实例预配许可密钥、主机网址和初始用户账号。
使用电子邮件用户自动预配新实例
在首次启动时,Looker 会扫描 looker 目录(JAR 文件所在的目录),以查找名为 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 的文件,其权限为 0600,其中包含 API 用户信息。例如:
user:
first_name: "Ariel"
last_name: "Q"
client_id: "M9hZb8vRh9bSZzdPxw42"
client_secret: "NMnqBVbHqPsPzTvbZk6xZfV3"
我们建议您将这些凭据存储在此文件之外的 Secret Manager 中,因为一旦 Looker 实例处理并创建数据库中的用户,此文件就会在启动时被移除。
启动时,如果实例没有用户,Looker 会使用这些凭据创建 Looker 管理员 API 用户,并从磁盘中移除 api-provision.yml 文件。
以新用户身份登录后,您应至少创建一个额外的管理员用户,因为预配的 API 用户将被 Looker 自动删除。
自动删除预配的凭据
预配的 API 用户仅用于预配新实例;它不应无限期地保留在您的实例中。
满足以下任一条件后,Looker 会自动删除预配的 API 用户:
- 预配的 API 用户以外的管理员用户已登录到该实例。
- 自预配的 API 用户首次登录以来已过去 50 分钟。
因此,请务必在首次以预配的用户身份登录后立即至少创建一个额外的管理员用户。