云应用程序继续变得越来越复杂,使得迅速提供云解决方案的任务变得更加困难,云解决方案包括:一次性生产级应用程序、部署程序包内的应用程序以及操作系统,甚至是一个复杂的虚拟应用程序模式(一个云组件/中间件服务和一个用于配置的策略)或虚拟系统模式(一个或多个实现部署拓扑的虚拟映像和应用程序)。
为了应对这个挑战,并探讨这种复杂性,本文演示了如何建立一个可行的、容易重复的协作式生命周期管理系统,该系统运行于 WebSphere Application Server 之上,并使用 DB2 作为数据库。文中使用了 IBM Workload Deployer 和 Rational® Team Concert CLM 特性。其最终结果是测试人员能够在每日的动态构建中再现一个拓扑,从而验证应用程序的缺陷和构建,执行冒烟测试 (smoke test),并支持其他测试活动。
IBM Workload Deployer (IWD) 是一个硬件设备,为用户提供了一个环境,使他们能够在私有云上部署中间件的可重复模式(或可重复解决方案)。
团队最初所遇到的问题包括,如何以一种可重复的节省时间的方式,克服建立一个运行于 WebSphere 之上的、使用 DB2 作为数据库供应者的可行 CLM 系统时所带来的复杂性挑战。这个问题的参数包括:
- 测试人员必须能够在每日构建中动态再现该拓扑,以便进行缺陷验证、构建验证和冒烟测试(一般性地、粗粒度地查看整个系统是否正常工作)等。
- 普通的测试人员需要花费大约 3 至 5 个工作日来安装和配置测试系统,然后才可以执行测试场景。
为了改变这种方式,我们在 IWD 脚本包的整个开发过程中都使用了 IWD 和集成的自动化功能(如 bash 和 Python 脚本,以及 WSAdmin),以提供了一个可重复的解决方案。团队使用以下步骤花了 60 分钟。
本文中的解决方案模式拓扑采用一个现成的 Red Hat Enterprise Linux® 64-bit WebSphere 8.0.0.1 Network Deployment 虚拟映像(预安装了 WebSphere ND version 8.0.0.1 和 IBM Installation Manager 1.4.4 的虚拟映像),并且利用添加的脚本包,将 CLM 与一个现成的 RHEL 64-bit DB2 V9.7.4 虚拟映像一起安装、配置、部署到这个虚拟映像。图 1 说明了 IWD VSP 所映射到的 CLM 拓扑,这是本文讨论的 VSP 的可视化表示。
图 1. IWD VSP 所映射到的 CLM 拓扑
在本例中,CLM 在 WebSphere V8.0.0.1 服务器上运行,而 CLM 数据被存储在 DB2 V9.7.4 服务器上。
IWD 的优秀资产之一是,它能够在模式中建立不同虚拟映像之间的关系。现有的关系(如虚拟系统部件之间的箭头所示)使您能够在 CLM 数据和应用程序本身之间进行公开地通信,反过来这将导致面向多服务器设计的对开发人员更加友好的环境。 图 2 显示了 IWD 所建立的关系。
图 2. IWD 所建立的关系
箭头显示,WebSphere 8.0.0.1 服务器识别出 DB29.7.4 服务器。因此,在两个服务器之间的通信并不是一场用户必须开拓的复杂战斗(从防火墙、代理服务器等障碍之间穿过)。
建立了解决方案的基础之后,接下来的步骤是为 CLM 应用程序部署准备 WebSphere 服务器和 DB2 服务器。
我们开发了一个脚本包,其中包括一个用于调用 db2admin (DB2 管理服务器的命令)的 Linux bash 脚本,以静默方式为每个应用程序创建 CLM 所需要的数据库。
父 bash 脚本:
#!/bin/sh su - db2inst1 -c "sh /tmp/createDatabases.sh" |
子 bash 脚本:
#!/bin/sh db2 CREATE DATABASE jtsDB AUTOMATIC STORAGE YES ON '/db2fs' DBPATH ON '/db2fs' USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM PAGESIZE 16384 |
步骤 3:将预安装的 Installation Manager 更新到版本 1.5.2
CLM 4.0 对 Installation Manager 有一个依赖关系;它需要使用版本 1.5.2。我们使用包装成一个 IWD 脚本包的 Installation Manager 响应文件更新了现有版本。
示例 bash 脚本:
echo "Enter IM Directory" cd /opt/IBM/InstallationManager/eclipse echo "Launching IM 1.5.2 Update" ./IBMIM --launcher.ini silent-install.ini -input $IMFilePath/imUpdate152.xml -keyring $IMFilePath/im.keyring -accessRights admin -acceptLicense |
示例 IM 更新响应文件模板:
<?xml version="1.0"?> <agent-input clean="true" temporary="true"> <server> <repository location="<IM repository>"/> </server> <install> <offering features="agent_core,agent_jre" id="com.ibm.cic.agent" version="<IM BUILD Version>"/> </install> <profile id="IBM Installation Manager" installLocation="/opt/IBM/InstallationManager" kind="self"><data key="eclipseLocation" value="/opt/IBM/InstallationManager"/> </profile> </agent-input> |
下一步是将 CLM 位安装到 WebSphere Application Server 上。在该场景中,用户需要能够获得 CLM 的特定构建。考虑到这一点,团队使用 Build ID 作为在安装 CLM 的脚本包中的一个规范参数。
在配置时,系统会将提示用户输入 Build ID,可以使用 bash 命令将此 ID 替换为 Installation Manager 生成的响应文件。
调用的 bash 脚本:
#!/bin/sh . /etc/virtualimage.properties echo "CLM Build to be installed: "$CLM_BUILD_ID echo "Substitute CLM Build ID" sed -i s%CLM_BUILD_ID_1%$CLM_BUILD_ID% /tmp/CLM/CLM.xml sed -i s%CLM_BUILD_ID_2%$CLM_BUILD_ID% /tmp/CLM/CLM.xml echo "Install CLM 4.x via Installation Manager" cd /opt/IBM/InstallationManager/eclipse ./IBMIM --launcher.ini silent-install.ini -input /tmp/CLM/CLM.xml -keyring /tmp/CLM/im.keyring -acceptLicense -accessRights admin Exit |
步骤 5:配置 WebSphere 服务器/部署 CLM 应用程序
该模式解决方案的最后一步是用所需要的适当设置配置 WebSphere,然后才能将 CLM WAR 文件部署到服务器上。
为了让我们能够按自己的需要配置 WebSphere 服务器,团队创建了一个 Python 脚本,用于调用 AdminTask 对象:
print "-------Set Run as User to Root------"
#Set Run as Root
AdminConfig.modify('(cells/CloudBurstCell_1/nodes/CloudBurstNode_1/servers/
server1|server.xml#ProcessExecution_1183122130078)', '[[runAsUser "root"]
[runAsGroup ""] [runInProcessGroup "0"] [processPriority "20"] [umask "022"]]')
print "-------Save Master Configuration-------"
#Save to Master Config
AdminConfig.save()
|
配置 WebSphere 之后,我们必须配置 teamserver.properties 文件,创建数据库表,并将 CLM WAR 文件部署到服务器上。
团队将 teamserver.properties 模板包括在配置脚本包中。通过使用 bash 字符串替换,用正确的主机名和数据库字符串来填充模板。
在替换字符串之后,将每个应用程序的 teamserver.properties 文件替换为自定义的模板。
从某个角度而言,这只是一个使用由 CLM 安装提供的工具就可以解决的问题。CLM 安装提供了一套存储库工具 (repotool),该工具可用于在之前已存在的数据库中创建表,从而消除用户在 Jazz Team Server (JTS) 安装向导中的另一个步骤。
Repotool 示例:
echo "------Run Repo Tools for JTS Tables------" cd /opt/IBM/JazzTeamServer/server ./repotools-jts.sh -createTables teamserver.properties= "/opt/IBM/JazzTeamServer/server/conf/jts/teamserver.properties" logFile=repotools.log |
最后,我们使用一个 Python 脚本将应用程序的 WAR 文件部署到 WebSphere 服务器。系统会将该脚本传递给 WebSphere Admin 程序 (wsadmin.sh),并在那里调用它来执行应用程序的部署。
应用程序部署的样例 Python 脚本:
def deployJazzApp(app_name):
print "====== installing " + app_name + " Web Application on WAS ======\n"
app_war= app_name + '.war'
installed_appname = app_name + '_war'
app_ctx = '/' + app_name
appfile = properties.getProperty("CLM_HOME") + "/server/webapps/" + app_war
installcmd = ""
AdminApp.install(appfile, installcmd)
AdminConfig.save()
print "====== application " + app_name + " is installed on WAS =========\n"
print "====== Install completed. Please restart your WAS server.============\n"
|
部署应用程序后,重新启动 WebSphere 服务器,用户已准备好逐步完成 JTS 安装向导,并注册任何他们想要的 CLM 应用程序。图 3 显示了在流程结束时的模式视图。
图 3. 最终的模式视图
团队开发了该模式,使测试人员能够随时快速部署一个 CLM/WebSphere/DB2 拓扑,并提供了使他们能够拣选特定构建的其他灵活功能。不过,该设计已被证明比我们原来的设想更有用。它是任何 Rational 软件工程师都可以使用的一种技术,并且使用它的用户类型也扩展到系统验证测试人员以外的人员,包括:
- 功能验证测试人员,测试最新的代码。
- 构建验证测试人员,确认每日构建的稳定性。
- 开发人员,创建用于测试与 CLM 的集成的产品。
CLM 模式解决方案只是 IWD 可以提供的功能之一,也展示了在开发流程各层次中的创新如何提高软件的质量。通过在 Rational 中实施该解决方案,团队设法使用户能够重新分配的宝贵时间资源,即他们在安装和配置 CLM 上所花费的时间;他们现在可以将大部分时间花费在开发和测试上。
IWD 使我们将测试系统化繁为简。
学习
-
有关如何在 IBM Cloud 中执行任务的更多信息,请访问以下资源:
- 从 Windows 实例上传和下载文件。
- 在 Windows 2008 R2 上安装 IIS Web 服务器。
- 使用 Linux 命令行创建一个 IBM Cloud 实例。
- 使用 Windows 命令行创建一个 IBM Cloud 实例。
- 使用 IBM Cloud 扩展您的公司网络。
- IBM Cloud 中的高可用性应用程序。
- 动态自定义云映像实例的参数。
- 使用针对 Windows 的方法进行 IBM Cloud 配置。
- IBM SmartCloud Enterprise 技巧:使用快速部署服务部署产品。
- 使用代理集成身份验证策略。
- IBM SmartCloud Enterprise 技巧:配置 Linux Logical Volume Manager。
- IBM SmartCloud Enterprise 技巧:部署复杂的拓扑结构。
- 提供并配置一个跨公共 VLAN 和私有 VLAN 的实例。
- IBM SmartCloud Enterprise 技巧:从 Android 设备实现安全访问。
- 在 IBM SmartCloud Enterprise 中恢复数据。
- 在云中的安全虚拟机实例。
-
在 developerWorks 的 云开发人员资源 中,发现和分享应用程序和服务开发人员构建云部署项目的知识和经验。
-
了解如何 访问 IBM SmartCloud Enterprise。
- 加入云计算讨论组,了解和讨论云计算的最新技术、解决方案、趋势等内容。
获得产品和技术
-
参阅 IBM SmartCloud Enterprise 的可用 产品映像。
讨论
-
阅读 developerWorks 上的所有优秀云博客。
-
加入 developerWorks 社区,这是专业社交网络,提供了与其他专业人士建立联系、进行分享和协作的统一社区工具集。
Herrin 从带薪实习期开始为 IBM 工作,他在北卡罗来纳州立大学完成了他的计算机科学的本科学业。他从 Rational Application Developer (RAD) 测试团队开始了他的职业生涯,重点研究 JSF 和 JPA 的 Web 工具。在为 RAD 团队工作时,Herrin 获得了使用 Rational Build Forge 开发一些高度敏捷的自动化安装/配置的机会;这个机会为他打开了调动至 Rational Core Automation Team 的大门,如今在该团队中,他主要致力于如何利用具有集成自动化功能的云技术。Herrin 在产品测试、云计算、快速配置工具、自动化和 Linux 方面有深厚的背景。通过自动化使用云是他对软件的真正激情所在,他认为这将会彻底改变我们未来产品的测试方式的一种技术。