本帖最后由 xuanxufeng 于 2015-12-19 17:37 编辑
问题导读
1.为什么需要 OpenStack 互操作性认证?
2.OpenStack 互操作性测试的内容是哪些?
3.本文使用了什么互操作性测试工具?
为什么需要 OpenStack 互操作性认证?
OpenStack 为近来盛行的开放源码云计算系统,可用以部署公有云与私有云应用。不过,这些同样基于 OpenStack 的云端服务却不见得相容,或许更为糟糕的是,为其中某个云编写的应用无法在其他云上运行。为此,互操作性测试认证的推出是 OpenStack 愿景落地的重要步骤。通过互操作性测试认证,OpenStack 基金会向 OpenStack 生态圈的成员提出了一系列的要求,从而确保 OpenStack 市场中不同的产品和服务能够实现高水平的互操作性。对最终用户而言,选择经过认证的云服务提供商,他们就能够实现在不同 OpenStack 云计算之间的无成本的自由迁移。
OpenStack 互操作性测试的内容
DefCore(OpenStack CoreDefinition)是 OpenStack 董事会在 2014 年 11 月提出的一个项目,即认定厂商的部署为合法 OpenStack 的最基本的功能。OpenStack 希望基于这一项目实现不同 OpenStack 商业解决方案之间的互操作性。OpenStack 的云计算运营商可以选择在其云计算部署许多其它部件,但它们都必须通过测试所需要的最基本的功能。目前,最基本的功能,包括计算和对象存储功能。 根据 OpenStack 官方网站显示,OpenStack 互操作性测试包括三项不同的官方许可程序,包含 OpenStack 软件的产品都可以申请运行这些程序,通过者就可以获得“OpenStack Powered”官方标识。三项官方的许可程序分别是,OpenStack Powered Platform、OpenStack Powered Compute、OpenStack Powered Object Storage。其中,OpenStack Powered Platform 的测试结合了 OpenStack Powered Compute 和 OpenStack Powered Object Storage 的技术要求。
互操作性测试工具 - RefstackRefstack 是一个工具集用于 OpenStack 云之间的互操作性测试。它由两部分组成:服务器和客户端。 Refstack 服务器通过 API 收集来自私有云和公有云供应商的互操作性的测试数据,使用 UI 展现用户上传的数据并查看前面提到的 DefCore 定义的基本功能的测试结果。 Refstack 客户端封装了 OpenStack Tempest 测试框架,将运行 Tempest API 测试,并会按照 Refstack API 的期望来格式化测试结果,将数据上传到 Refstack 服务器。 图 1.Refstack 官方网站
Refstack 客户端安装refstack-client 可以被安装在 Ubuntu、Centos, RHEL 和 OpenSUSE 这些平台。安装步骤如下: - 确保操作系统已经安装了 git 工具,如果没有,请先安装;
- 获取 refstack client;
[mw_shl_code=bash,true]git clone https://github.com/stackforge/refstack-client[/mw_shl_code]
进入 refstack-client 目录;
[mw_shl_code=bash,true]cd refstack-client[/mw_shl_code]
运行如下代码进行安装;
[mw_shl_code=bash,true]./setup_env[/mw_shl_code]
云环境资源配置需要在待测云环境中创建如下资源用于测试: - 用户:至少创建两个用户来自于不同的租户,例如名为 demo1、demo2 的用户和租户。
- 镜像:需要两个镜像的 id。推荐使用 cirros 镜像,这个镜像小而且可以提供你需要的所有功能。可以上传这个镜像两次来产生两个 id。
- 网络:创建一个共享网络可以被所有用户使用。
- 用户角色:创建一个非管理员的角色,并分配给所有的测试用户。
- 对象存储操作角色:如果要测试对象存储,需要创建一个角色可以用来创建 swift 的资源。
Tempest 配置文件
在运行 refstack-client 之前,需要针对你的云产品环境自定义一份 Tempest 配置文件,名字以及存放的位置任意,在此文当中假设文件命名为 tempest.conf。在文件默认配置的基础上关注如下配置:
使用两个不同的镜像 id 用来配置 image_ref 和 image_ref_alt。
[mw_shl_code=bash,true][compute]
image_ref = 2eea58fe-6988-43f8-8183-da907c698211
image_ref_alt = 05df5478-8204-4737-befa-455da64f2ba9[/mw_shl_code]
用户:配置三个用户,其中一个是管理员。
[mw_shl_code=bash,true][identity]
admin_password = admin
admin_tenant_name = admin
admin_username = admin
alt_password = demo2
alt_tenant_name = demo2
alt_username = demo2
password = demo1
tenant_name = demo1
username = demo1[/mw_shl_code]
日至:配置日至文件名及路径。
[mw_shl_code=bash,true][default]
log_file = tempest.log
log_dir = /tmp[/mw_shl_code]
Resize 选项,这个是互操作性测试中必须要有的,默认是 false。需要设置成 true。
[mw_shl_code=bash,true][compute-feature-enabled]
resize = true[/mw_shl_code]
卷设备名称,可根据被测环境更改默认设置。
[mw_shl_code=bash,true][compute]
volume_device_name = vdd[/mw_shl_code]
swift 操作角色,默认是 Member 和 ResellerAdmin。需根据测试环境更改设置。
[mw_shl_code=bash,true][object-storage]
operator_role = swiftoperator
reseller_admin_role = admin[/mw_shl_code]
如果没有标准的 swift 角色,需要配置 locking accounts:
[mw_shl_code=bash,true][auth]
allow_tenant_isolation = false
test_accounts_file = etc/accounts.yaml[/mw_shl_code]
预先创建一些用户来自于不同的租户,然后在 accounts.yaml 中配置,例如:
[mw_shl_code=bash,true]username: 'test1'
tenant_name: 'test1'
password: 'pass'
roles:
- '_member_'
- 'swiftoperator'
resources:
network: 'private-net'[/mw_shl_code]
Refstack 测试执行执行步骤如下: [mw_shl_code=bash,true]cd ~/refstack-client[/mw_shl_code]
[mw_shl_code=bash,true]source .venv/bin/activate[/mw_shl_code]
[mw_shl_code=bash,true]./refstack-client test -c <Path of tempest.conf> -vv -- tempest.api.identity.admin.v2.test_roles[/mw_shl_code]
[mw_shl_code=bash,true]./refstack-client test -c <Path of tempest.conf> -vv[/mw_shl_code]
运行时控制台输出如下图 图 2.控制台输出
[mw_shl_code=bash,true]./refstack-client upload <Path of results file>[/mw_shl_code]
上传的结果文件是测试结束后由 refstack-client 产生的一个 JSON 格式的文件, 它保存在 .tempest/.testrepository 这个路径下面, 默认数据是上传到 refstack.net,上传完成之后可以到 refstack.net 查看。 图 3.测试运行结果
|