openstack

OpenStack 命令行

概要

openstack [<全局选项>] <命令> [<命令参数>]

openstack help <命令>

openstack --help

描述

openstack 提供了一个通用的命令行界面来访问 OpenStack APIs。它通常等同于 OpenStack 项目客户端库提供的 CLI,但具有独特的、一致的命令结构。

认证方法

openstack 使用与 OpenStack 项目 CLI 类似的认证方案,凭据信息通过环境变量或命令行选项提供。主要区别在于选项名称中使用“project”(项目)代替旧的租户(tenant)名称,例如 OS_PROJECT_NAME/OS_PROJECT_ID

export OS_AUTH_URL=<url-to-openstack-identity>
export OS_PROJECT_NAME=<project-name>
export OS_USERNAME=<user-name>
export OS_PASSWORD=<password>  # (optional)

openstack 可以使用 keystoneclient 库提供的不同类型的认证插件。默认情况下,可用的插件如下:

  • token:使用 token 进行认证

  • password:使用用户名和密码进行认证

  • openid:使用 OpenID Connect 协议进行认证

有关这些插件及其选项的更多详细信息,以及有关可用插件的完整列表,请参阅 keystoneclient 库文档。请注意,某些插件可能不支持 openstack 的所有功能;例如,v3unscopedsaml 插件只能提供未限定范围的 token,某些命令可能无法通过此认证方法使用。

此外,可以通过设置选项 --os-token--os-endpoint(或环境变量 OS_TOKENOS_ENDPOINT 分别)使用 Keystone 的服务 token 进行认证。这种方法优先于认证插件。

注意

要使用 v3unscopedsaml 方法,需要安装 lxml 包。

使用联合身份验证

要使用联合身份验证,您的配置文件需要以下内容:

export OS_PROJECT_NAME=<project-name>
export OS_PROJECT_DOMAIN_NAME=<project-domain-name>
export OS_AUTH_URL=<url-to-openstack-identity>
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_PLUGIN=openid
export OS_AUTH_TYPE=v3oidcpassword
export OS_USERNAME=<username-in-idp>
export OS_PASSWORD=<password-in-idp>
export OS_IDENTITY_PROVIDER=<the-desired-idp>
export OS_CLIENT_ID=<the-client-id-configured-in-the-idp>
export OS_CLIENT_SECRET=<the-client-secred-configured-in-the-idp>
export OS_OPENID_SCOPE=<the-scopes-of-desired-attributes-to-claim-from-idp>
export OS_PROTOCOL=<the-protocol-used-in-the-apache2-oidc-proxy>
export OS_ACCESS_TOKEN_TYPE=<the-access-token-type-used-by-your-idp>
export OS_DISCOVERY_ENDPOINT=<the-well-known-endpoint-of-the-idp>
export OS_ACCESS_TOKEN_ENDPOINT=<the-idp-access-token-url>

选项

openstack 接受全局选项,用于控制整体行为,以及特定于命令的选项,用于控制命令操作。大多数全局选项都有一个相应的环境变量,也可以用来设置该值。如果两者都存在,则命令行选项优先。环境变量名称是通过删除前导破折号(‘–’),将每个嵌入的破折号(‘-’)转换为下划线(‘_’),并转换为大写来从选项名称派生的。

openstack 识别以下全局选项:

--os-cloud <云名称>

openstack 将查找一个名为 clouds.yaml 的文件,其中包含用于认证的云配置。有关更多信息,请参阅下面的云配置。

--os-auth-type <认证类型>

连接到身份服务时要使用的认证插件类型。

如果未设置此选项,openstack 将尝试根据其他选项推断要使用的认证方法。

如果设置了此选项,其版本必须与 --os-identity-api-version 匹配

--os-auth-url <认证URL>

认证 URL

--os-endpoint <服务URL>

使用服务 token 进行认证时的服务端点

--os-domain-name <认证域名称>

域级别授权范围(按名称)

--os-domain-id <认证域ID>

域级别授权范围(按 ID)

--os-project-name <认证项目名称>

项目级别认证范围(按名称)

--os-project-id <认证项目ID>

项目级别认证范围(按 ID)

--os-project-domain-name <认证项目域名称>

包含项目的域名称

--os-project-domain-id <认证项目域ID>

包含项目的域 ID

--os-username <认证用户名>

认证用户名

--os-password <认证密码>

认证密码

--os-token <token>

已认证的 token 或服务 token

--os-user-domain-name <用户域名称>

包含用户的域名称

--os-user-domain-id <用户域ID>

包含用户的域 ID

--os-trust-id <信任ID>

用作受托用户的信任 ID

--os-default-domain <认证域>

默认域 ID(默认值:‘default’)

--os-region-name <认证区域名称>

认证区域名称

--os-cacert <CA 证书文件>

CA 证书捆绑文件

--verify` | :option:`--insecure

验证或忽略服务器证书(默认值:验证)

--os-cert <证书文件>

客户端证书捆绑文件

--os-key <密钥文件>

客户端证书密钥文件

--os-identity-api-version <身份 API 版本>

身份 API 版本(默认值:2.0)

--os-XXXX-api-version <XXXX-api-version>

根据安装的 API 库,将提供其他 API 版本选项。

--os-interface <接口>

接口类型。有效选项包括 publicadmininternal

注意

如果您从项目指定的客户端(例如:novaclient、neutronclient 等)切换到 openstackclient,请使用 –os-interface 代替 –os-endpoint-type

--os-profile <hmac-key>

用于加密上下文数据的性能分析 HMAC 密钥

此密钥应为在 OpenStack 服务的配置文件中定义的 HMAC 密钥之一,以跟踪要跟踪的服务。

--os-beta-command

启用可能发生变化的 beta 命令

--log-file <LOGFILE>

指定一个用于记录输出的文件。默认禁用。

-v, --verbose

增加输出的详细程度。可以重复使用。

-q, --quiet

抑制除警告和错误之外的输出

--debug

在发生错误时显示跟踪信息并将详细程度设置为调试

--help

显示帮助消息并退出

--timing

打印 API 调用计时信息

命令

要获取可用命令的列表:

openstack --help

要获取特定命令的描述:

openstack help <command>

请注意,显示的命令集会因当时生效的 API 版本而异。例如,要强制显示 Identity v3 命令:

openstack --os-identity-api-version 3 --help
complete

打印当前命令集的 bash 完成函数。

help <命令>

打印单个命令的帮助信息

有关 OpenStackClient 命令结构和参数的更多信息,请参阅 OpenStackClient 命令 wiki 页面。

命令对象

随着 OpenStack 项目支持的增加,命令对象列表也在不断增长。对象名称可能由多个单词组成以构成唯一的名称。有时,当多个 API 具有共同名称和共同重叠目的时,将有选项来选择要使用哪个对象,或者 API 资源将被合并,如 quota 对象,该对象具有引用 Compute 和 Block Storage 配额的选项。

命令操作

OpenStackClient 使用的操作是使用特定含义定义的,以为每个对象提供一致的行为。某些操作具有逻辑相反的操作,并且这些对将始终匹配使用它们的任何对象。

云配置

通过将这些云的配置信息保存在本地文件中,可以简化使用多个云的操作。openstack 支持使用 clouds.yaml 配置文件。

配置文件

openstack 将在以下位置查找名为 clouds.yaml 的文件:

  • 当前目录

  • ~/.config/openstack

  • /etc/openstack

找到的第一个文件获胜。

键与 openstack 全局选项匹配,但没有 --os- 前缀

clouds:
  devstack:
    auth:
      auth_url: http://192.168.122.10:5000/
      project_name: demo
      username: demo
      password: 0penstack
    region_name: RegionOne
  ds-admin:
    auth:
      auth_url: http://192.168.122.10:5000/
      project_name: admin
      username: admin
      password: 0penstack
    region_name: RegionOne
  infra:
    cloud: rackspace
    auth:
      project_id: 275610
      username: openstack
      password: xyzpdq!lazydog
    region_name: DFW,ORD,IAD

在上面的示例中,auth_url 用于 rackspace 云是从 clouds-public.yaml 获取的

public-clouds:
  rackspace:
    auth:
      auth_url: 'https://identity.api.rackspacecloud.com/v2.0/'

认证设置

OpenStackClient 使用 Keystone 认证插件,因此所需的认证设置并不总是直到选择认证类型后才能确定。 openstack 会尝试检测一些常见的认证类型,基于传入的参数或在配置文件中找到的参数,但如果这些参数不完整,可能无法知道预期的认证类型。 可以始终使用 --os-auth-type 选项来强制指定特定的类型。

--os-token--os-endpoint 同时存在时,将自动选择 token_endpoint 认证类型。 如果 --os-auth-url--os-username 存在,则选择 password 认证类型。

日志设置

openstack 可以在配置文件中通过日志设置记录操作历史。 记录用户操作,可以识别资源的更改,并成为故障排除的有用信息。

有关日志设置的更多详细信息,请参阅 配置

说明

帮助输出中显示的命令列表反映了所选的 API 版本。 例如,要查看 Identity v3 命令,必须将 OS_IDENTITY_API_VERSION 设置为 3

示例

显示服务器 appweb01 的详细信息

openstack \
    --os-project-name ExampleCo \
    --os-username demo --os-password secret \
    --os-auth-url http://localhost:5000:/v2.0 \
    server show appweb01

使用 openid 在 keystone 中进行身份验证,与上述相同

openstack \
    --os-project-name ExampleCo \
    --os-auth-url http://localhost:5000:/v2.0 \
    --os-auth-plugin openid \
    --os-auth-type v3oidcpassword \
    --os-username demo-idp \
    --os-password secret-idp \
    --os-identity-provider google \
    --os-client-id the-id-assigned-to-keystone-in-google \
    --os-client-secret 3315162f-2b28-4809-9369-cb54730ac837 \
    --os-openid-scope 'openid email profile'\
    --os-protocol openid \
    --os-access-token-type access_token \
    --os-discovery-endpoint https://accounts.google.com/.well-known/openid-configuration \
    server show appweb01

如果设置了认证环境变量(OS_AUTH_URLOS_PROJECT_NAMEOS_USERNAMEOS_PASSWORD),则执行相同的命令

openstack server show appweb01

创建一个新的镜像

openstack image create \
    --disk-format=qcow2 \
    --container-format=bare \
    --public \
    --copy-from http://somewhere.net/foo.img \
    foo

文件

~/.config/openstack/clouds.yaml

--os-cloud 全局选项使用的配置文件。

~/.config/openstack/clouds-public.yaml

包含公共云提供商信息(如认证 URL 和服务定义)的配置文件。 此文件的内容应该是公开且可共享的。 clouds.yaml 可以包含对此处定义的云的引用作为快捷方式。

~/.openstack

用于未来本地状态目录的占位符。 该目录旨在在多个 OpenStack 相关应用程序之间共享;内容使用拥有它的应用程序的标识符命名空间。 共享内容(如 ~/.openstack/cache)没有前缀,并且内容必须可移植。

环境变量

可以设置以下环境变量来改变 openstack 的行为。 其中大多数都有相应的命令行选项,如果设置了这些选项,则优先使用。

OS_CLOUD

clouds.yaml 中云配置的名称。

OS_AUTH_PLUGIN

连接到 Identity 服务时使用的认证插件,其版本必须与 Identity API 版本匹配

OS_AUTH_URL

认证 URL

OS_AUTH_TYPE

定义将用于处理身份验证过程的认证插件。 以下是其中之一

  • v2password

  • v2token

  • v3password

  • v3token

  • v3oidcclientcredentials

  • v3oidcpassword

  • v3oidcauthorizationcode

  • v3oidcaccesstoken

  • v3totp

  • v3tokenlessauth

  • v3applicationcredential

  • v3multifactor

OS_ENDPOINT

服务端点(在使用服务令牌时)

OS_DOMAIN_NAME

域级别授权范围(名称或 ID)

OS_PROJECT_NAME

项目级别身份验证范围(名称或 ID)

OS_PROJECT_DOMAIN_NAME

包含项目的域名或 ID

OS_USERNAME

认证用户名

OS_TOKEN

经过身份验证或服务令牌

OS_PASSWORD

认证密码

OS_USER_DOMAIN_NAME

包含用户的域名或 ID

OS_TRUST_ID

用作受托用户的信任 ID

OS_DEFAULT_DOMAIN

默认域 ID(默认值:‘default’)

OS_REGION_NAME

认证区域名称

OS_CACERT

CA 证书捆绑文件

OS_CERT

客户端证书捆绑文件

OS_KEY

客户端证书密钥文件

OS_IDENTITY_API_VERSION

身份 API 版本(默认值:2.0)

OS_XXXX_API_VERSION

根据安装的 API 库,将提供其他 API 版本选项。

OS_INTERFACE

接口类型。有效选项包括 publicadmininternal

OS_PROTOCOL

定义用于执行联合身份验证过程的协议。 它用于 Keystone 身份验证 URL 生成过程。

OS_IDENTITY_PROVIDER

定义您的联合身份提供商,将使用它。 它由 Keystone 身份验证 URL 生成过程使用。 可以使用 openstack identity provider list 命令列出可用的身份提供商

OS_CLIENT_ID

配置身份提供商中应用程序(OpenStack)用于身份验证的 CLIENT_ID。 此值在身份提供商侧定义。 不要与用户 ID 混淆。

OS_CLIENT_SECRET

配置 CLI 将用于验证 CLI(身份提供商中的 OpenStack 密钥)的 OS_CLIENT_SECRET。

OS_OPENID_SCOPE

配置服务提供商(在本例中为 OpenStack)将从身份提供商声明的属性范围。 这些范围以及每个范围包含的属性在身份提供商侧定义。 此参数可以接收用空格分隔的多个值。

OS_ACCESS_TOKEN_TYPE

定义令牌内省过程中使用的访问令牌类型。 此变量只能采用以下状态之一(“access_token”或“id_token”)。

OS_DISCOVERY_ENDPOINT

配置身份提供商的发现 URL。 此 URL 将提供一个发现文档,其中包含描述身份提供商端点的元数据。 如果定义了变量 OS_ACCESS_TOKEN_ENDPOINT,则此变量是可选的。

OS_ACCESS_TOKEN_ENDPOINT

覆盖从 OS_DISCOVERY_ENDPOINT URL 请求中检索到的发现文档中呈现的值。 如果配置了 OS_DISCOVERY_ENDPOINT,则此变量是可选的。

注意

如果您从项目指定的客户端(例如:novaclient、neutronclient 等)切换到 openstackclient,请使用 OS_INTERFACE 代替 OS_ENDPOINT_TYPE

错误

错误报告可在 python-openstackclient Launchpad 项目“https://bugs.launchpad.net/python-openstackclient”中提交。

作者

请参阅随 OpenStackClient 分发的 AUTHORS 文件。

许可

https://apache.org/licenses/LICENSE-2.0

请参阅

OpenStackClient 页面 包含在 OpenStack 文档 中的更多文档。

各个 OpenStack 项目 CLI、OpenStack API 参考。