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_TOKEN 和 OS_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 <接口>¶
接口类型。有效选项包括 public、admin 和 internal。
注意
如果您从项目指定的客户端(例如: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_URL、OS_PROJECT_NAME、OS_USERNAME、OS_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¶
定义将用于处理身份验证过程的认证插件。 以下是其中之一
v2passwordv2tokenv3passwordv3tokenv3oidcclientcredentialsv3oidcpasswordv3oidcauthorizationcodev3oidcaccesstokenv3totpv3tokenlessauthv3applicationcredentialv3multifactor
- 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¶
接口类型。有效选项包括 public、admin 和 internal。
- 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_ENDPOINTURL 请求中检索到的发现文档中呈现的值。 如果配置了OS_DISCOVERY_ENDPOINT,则此变量是可选的。
注意
如果您从项目指定的客户端(例如:novaclient、neutronclient 等)切换到 openstackclient,请使用 OS_INTERFACE 代替 OS_ENDPOINT_TYPE。
错误¶
错误报告可在 python-openstackclient Launchpad 项目“https://bugs.launchpad.net/python-openstackclient”中提交。
版权¶
版权所有 2011-2014 OpenStack Foundation 和 AUTHORS 文件中列出的作者。
许可¶
请参阅¶
OpenStackClient 页面 包含在 OpenStack 文档 中的更多文档。
各个 OpenStack 项目 CLI、OpenStack API 参考。