配置¶
OpenStackClient 主要通过命令行选项和环境变量进行配置。大多数设置也可以放置在配置文件中,以简化管理多个云配置。
全局选项、环境变量和配置文件中使用的关键字之间存在关联,这使得在它们之间进行转换变得简单。
大多数全局选项都有一个对应的环境变量,也可以用来设置值。如果同时存在,命令行选项优先。环境变量名称是通过删除前导破折号 (–),将每个嵌入的破折号 (-) 转换为下划线 (_),并转换为大写来从选项名称派生的。
如果存在,配置文件的关键字名称是从全局选项名称派生的,通过删除 --os- 前缀。
全局选项¶
openstack manpage 列出了 OpenStackClient 识别的所有全局选项以及默认身份验证插件。
环境变量¶
openstack manpage 还列出了 OpenStackClient 和默认身份验证插件识别的所有环境变量。
配置文件¶
clouds.yaml¶
clouds.yaml 是一个配置文件,其中包含连接到一个或多个云所需的一切。它可能包含私有信息,通常被认为是用户私有的。
OpenStackClient 会在以下位置查找名为 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
interface: internal
在上面的示例中,rackspace 云的 auth_url 取自 clouds-public.yaml(如下所示)。
前两个条目是同一个 DevStack 云的两个默认用户的条目。
第三个条目是 Rackspace Cloud Servers 帐户的条目。如果 clouds-public.yaml(如下所示)中存在 rackspace 条目,则它等效于以下选项
--os-auth-url https://identity.api.rackspacecloud.com/v2.0/
--os-project-id 275610
--os-username openstack
--os-password xyzpdq!lazydog
--os-region-name DFW
--os-interface internal
并且可以在命令行中选择
openstack --os-cloud infra server list
请注意,rackspace 条目中列出了多个区域。为每个区域创建了一个完全相同的配置。如果未在命令行中指定 -os-region-name,则默认使用列表中的第一个区域。
interface(如上面的 rackspace 条目中所示)的选择是可选的。为了使此配置工作,此云实例的每个服务必须已经配置为支持这种类型的接口。
如果您使用的是 Identity v3,则需要指定用户和项目域名称,如以下示例所示
clouds:
devstack:
auth:
auth_url: http://192.168.122.10:5000/
project_name: demo
username: demo
password: 0penstack
user_domain_name: Default
project_domain_name: Default
region_name: RegionOne
clouds-public.yaml¶
clouds-public.yaml 是一个配置文件,旨在包含有关云的公共信息,这些信息在大量用户之间通用。其想法是 clouds-public.yaml 可以轻松地在用户之间共享,以简化公共云配置。
与 clouds.yaml 类似,OpenStackClient 会在以下位置查找 clouds-public.yaml
当前目录
~/.config/openstack/etc/openstack
找到的第一个文件获胜。
这里的键在 clouds.yaml cloud 键中引用。出现在 clouds.yaml 中的任何内容
public-clouds:
rackspace:
auth:
auth_url: 'https://identity.api.rackspacecloud.com/v2.0/'
调试¶
您可能会发现 configuration show 命令有助于调试配置问题。它将显示您当前的配置。
日志设置¶
通过在配置 clouds.yaml 中设置 log_level 或 log_file,用户可以启用额外的日志记录
clouds:
devstack:
auth:
auth_url: http://192.168.122.10:5000/
project_name: demo
username: demo
password: 0penstack
region_name: RegionOne
operation_log:
logging: TRUE
file: /tmp/openstackclient_demo.log
level: info
ds-admin:
auth:
auth_url: http://192.168.122.10:5000/
project_name: admin
username: admin
password: 0penstack
region_name: RegionOne
log_file: /tmp/openstackclient_admin.log
log_level: debug
- log_file:
</path/file-name> 日志文件的完整路径。
- log_level:
error|info|debug 如果未设置日志级别,将使用
warning。
如果日志级别为 info,将记录以下信息
云名称
用户名
项目名称
CLI 开始时间(日志记录开始时间)
CLI 结束时间
CLI 参数
CLI 返回值
以及任何
info消息。
如果日志级别为 debug,将记录以下信息
云名称
用户名
项目名称
CLI 开始时间(日志记录开始时间)
CLI 结束时间
CLI 参数
CLI 返回值
API 请求标头/正文
API 响应标头/正文
以及任何
debug消息。
每次执行命令时,都会保存这些日志。记录用户操作可以帮助识别资源更改并提供有用的故障排除信息。
如果保存单个命令的输出,请使用 –log-file 选项。
–log-file <LOG_FILE>
可以使用以下选项设置 –log-file 的日志级别。
-v, –verbose
-q, –quiet
–debug
语言环境和语言支持¶
从 OpenStackClient 3.0.0 开始,完全支持语言。以下是一些确保您拥有正确配置的技巧。
验证首选 Python 编码¶
请执行以下操作以诊断并确保语言环境设置正确。以交互方式运行 Python 并打印首选编码值,例如:
$ python -c "import locale; print locale.getpreferredencoding()"
如果值为 ascii 或 ANSI_X3.4-1968 或任何 ASCII 的等效名称,则问题在于您的环境。您很可能没有正确设置 LANG 环境变量。
检查 LANG 环境变量¶
LANG 应该采用以下形式:lang_code`_`[region_code].`encoding`。例如,它可能如下所示:en_US.UTF-8
关键部分是 encoding 值 UTF-8。Python 将查找语言环境信息,如果找到编码值,它会将 stdin、stdout 和 stderr 的编码属性设置为在您的环境中找到的值,如果未在您的环境中定义,则默认为 ASCII。
重定向输出¶
只有当 stdin、stdout 和 stderr 附加到 TTY 时,才会发生上述情况。如果重定向数据,这些流上的编码将默认为在 Python 分发的 site.py 中设置的默认编码,默认值为 ASCII。对此的解决方法是将 PYTHONIOENCODING 设置为 UTF8。
$ PYTHONIOENCODING=utf-8
关于 DevStack 的最后说明¶
一个常见的 post devstack 操作是 source openrc 文件以设置环境变量。这样做会取消设置终端中的默认 LANG 环境变量,这将导致首选 Python 编码为 ascii。我们建议单独设置这些环境变量,或使用 devstack 或 devstack-admin os-cloud 配置文件。
$ openstack project list --os-cloud devstack-admin