Mistral 客户端高级用法¶
配置 Keystone 认证¶
如果 Mistral 使用 Keystone 进行认证,则环境应包含认证变量
$ export OS_AUTH_URL=http://<Keystone_host>:5000/v3
$ export OS_TENANT_NAME=tenant
$ export OS_USERNAME=user
$ export OS_PASSWORD=secret
$ export OS_MISTRAL_URL=http://<Mistral host>:8989/v2
( optional, by default URL=https://:8989/v2)
并且在通过 https 对 Keystone 进行认证的情况下
$ export OS_CACERT=<path_to_ca_cert>
注意
在客户端,我们可以使用 Keystone 的两个认证版本 - v2.0 和 v3。但服务器仅支持 v3。
您可以通过输入以下命令查看可用命令列表
$ mistral --help
为了确保 Mistral 客户端正常工作,请输入
$ mistral workbook-list
配置 Keycloak 认证¶
Mistral 还支持通过 OpenID Connect 协议对 Keycloak 服务器进行认证。为了在客户端使用它,环境应如下所示
$ export MISTRAL_AUTH_TYPE=keycloak-oidc
$ export OS_AUTH_URL=https://<Keycloak-server-host>:<Keycloak-server-port>/auth
$ export OS_TENANT_NAME=my_keycloak_realm
$ export OS_USERNAME=admin
$ export OS_PASSWORD=secret
$ export OPENID_CLIENT_ID=my_keycloak_client
$ export OPENID_CLIENT_SECRET=my_keycloak_client_secret
$ export OS_MISTRAL_URL=http://<Mistral host>:8989/v2
(optional, by default URL=https://:8989/v2)
注意
变量 OS_TENANT_NAME、OS_USERNAME 和 OS_PASSWORD 用于 Keystone 和 Keycloak 认证。在 Keycloak 的情况下,OS_TENANT_NAME 需要对应 Keycloak realm。与 Keystone 不同,Keycloak 需要提前注册一个访问受 Keycloak 保护的资源(在我们的例子中是 Mistral 服务器)的客户端。因此,OPENID_CLIENT_ID 和 OPENID_CLIENT_SECRET 变量应分配为在 Keycloak 中注册的正确值。
与 Keystone 类似,OS_CACERT 变量也可以添加以提供 SSL/TLS 验证的证书
$ export OS_CACERT=<path_to_ca_cert>
为了禁用 SSL/TLS 证书验证,需要将 MISTRALCLIENT_INSECURE 变量设置为 True
$ export MISTRALCLIENT_INSECURE=True
定位未预配置的云¶
Mistral 能够在外围 OpenStack 云上执行工作流,这些云与 mistral.conf 文件中 keystone_authtoken 部分中定义的云不同。(更多详细信息请参见 配置和策略指南)。
例如,如果 Mistral 服务器配置为使用 http://keystone1.example.com 云进行认证,而用户希望在 http://keystone2.example.com 云上执行工作流。
mistral.conf 的配置如下
[keystone_authtoken]
www_authenticate_uri = http://keystone1.example.com:5000/v3
...
客户端参数如下
$ export OS_AUTH_URL=http://keystone1.example.com:5000/v3
$ export OS_USERNAME=mistral_user
...
$ export OS_TARGET_AUTH_URL=http://keystone2.example.com:5000/v3
$ export OS_TARGET_USERNAME=cloud_user
...
注意
每个 OS_* 参数都有一个 OS_TARGET_* 对应的参数。有关更多详细信息,请查看 mistral –help
OS_* 参数用于使用 Mistral 对用户进行认证和授权,即检查用户是否允许使用 Mistral 服务。而 OS_TARGET_* 参数用于定义在外部云 keystone2.example.com 上执行工作流的用户。
用例¶
在 Mistral 中进行认证并使用不同的用户执行 OpenStack 操作
作为 Mistral 的用户,我希望使用云上的不同用户执行工作流。
在任何 OpenStack 云上执行工作流
作为 Mistral 的用户,我希望在自己选择的云上执行工作流。
特殊情况¶
在没有 OpenStack 配置的情况下使用 Mistral:
借助定位功能,可以在 Mistral 服务器端没有额外配置的情况下,在任何任意云上执行工作流。如果 Mistral 服务器中的认证已关闭(mistral.conf 中的 Pecan 的 auth_enable = False 选项),则无需设置 keystone_authtoken 部分。即使 Mistral 未部署在 OpenStack 环境中(即没有 Keystone 集成),也可以使用外部 OpenStack 云。
使用此设置,以下调用将返回 heat stack 列表
$ mistral \
--os-target-auth-url=http://keystone2.example.com:5000/v3 \
--os-target-username=testuser \
--os-target-tenant=testtenant \
--os-target-password="MistralRuleZ" \
run-action heat.stacks_list
此设置特别适用于 Mistral 以独立模式使用时,即 Mistral 服务不是 OpenStack 云的一部分,而是单独运行。
请注意,只有 OS-TARGET-* 参数才能启用此操作。