云计算,是当今
IT 业界最炙手可热的话题。它所具有的灵活,动态,可伸缩的特质,使其具备了巨大的潜在市场和无限商机。各大
IT 巨头也纷纷加入了云计算的行列,开始了云计算平台和基于云计算的服务的研发。TSAM(Tivoli Service
Automation Manager),是 IBM 目前实施云计算解决方案的一个成熟的核心平台。它提供了完整的云计算构建框架,使得开发人员可以很容易地根据自己的应用模式构建相应的云计算产品。
在云计算中,虚拟机是一个很重要的基础元素,许多云计算产品都基于虚拟机来为上层提供云应用服务。因此,对虚拟机的创建与管理是很多云计算解决方案中必不可少的功能。
本文将通过一个模拟实例,一步步的引导读者基于 IBM TSAM 平台以脚本方式来创建虚拟机。
TSAM 概述
Tivoli Service Automation Manager 是
IBM 目前进行 IT 服务管理的一个强大的管理平台,其主要功能和目标是对 IT 服务进行自动化管理。通过把
IT 服务管理划分为不同的管理阶段,同时对每个管理阶段构建相应的管理组件,TSAM 参与了 IT 服务管理的整个生命周期,并使得整个管理过程自动化。通过对当今主流虚拟化服务器
VMWare,Xen,KVM 提供底层的支持与兼容,并结合自身所具有的强大的服务管理能力,TSAM 成为当今最广泛采用的云计算服务构建平台。
TSAM 产品本身是一个过程管理产品 PMP(Process Management
Product)的集合。它通过与 IBM 其他的中间件产品和服务的功能整合,共同构成了 TSAM 的运行时系统环境。这些主要中间件产品包括
IBM Tivoli Provisioning Manager, IBM Tivoli Service
Request Manager,IBM DB2 等。具体安装信息,请参见本文的参考资源。
服务定义
服务定义(Service Definition)在服务的设计阶段创建,它是整个服务管理的起点。服务定义是对
TSAM 所要管理的真实世界的 IT 服务的逻辑定义。这种逻辑定义分为了两个方面:服务结构的定义和服务操作的定义。
TSAM 中,服务结构定义又叫做服务拓扑模型(Service Topology
Model),指的是对整个 IT 服务中所存在的服务实体以及这些服务实体之间组织结构的定义。其中,服务实体,在
TSAM 中又被叫做服务拓扑节点(Service Topology Nodes),可以是 IT 服务中存在的真实物理组件实体,比如一个
DB2 服务器,或者一个运行于 VMWare 虚拟化服务器上的虚拟机实体;也可以是一个不存在于真实 IT
服务中的逻辑实体,比如一个由许多 WebSphere 服务器构成的服务器集群逻辑实体。服务组织结构指的是整个
IT 服务中服务实体之间的组织关系。这种组织关系可以是真实物理组件实体之间的架构关系,比如两个 DB2
服务器之间的结构关系;也可以是两个逻辑实体之间的结构关系,比如两个 WebSphere 服务器集群之间的结构关系。
服务操作的定义,在 TSAM 中又叫做运行服务模型(Operational
Service Model),指的是对 IT 服务管理中所执行的实际管理操作的定义,包括了对应于特定的
IT 服务管理所执行的具体动作和流程。服务操作是 TSAM 中 IT 服务管理自动化的实际执行单元,它运行于由服务拓扑模型所描述的具体服务上的。举例来说,我们可以基于一个实际的服务拓扑节点
DB2 服务器来定义服务操作——这个服务操作描述了如何安装 DB2 服务器,如何启动 DB2 服务器等具体操作流程。我们也可以基于多个逻辑的服务拓扑节点
WebSphere 服务器集群来定义服务操作——描述如何在多个 WebSphere 服务器集群之间执行负载均衡。
需要注意的是,服务定义只是 IT 服务定义的模板形式,其并没有映射到一个具体真实的
IT 服务环境中。对于服务实体,它只定义了实体属性;对于服务组织结构,它只定义了实体之间的逻辑层次关系;对于服务操作,它只定义了操作的输入输出参数。一个服务定义的概念组成模型如图
1 所示:
图 1. 服务定义的概念组成模型
服务实例
服务实例是服务定义的实例化,它映射于一个真实世界的 IT 服务。这种映射体现在以下三个方面。对于服务实体,它映射于一个实际
IT 服务的拓扑实体,具有实际的实体属性值;对于服务组织结构,它映射到 IT 服务的实际拓扑结构;对于服务操作,它具有了操作执行时的实际输入输出参数值。对于
IT 服务管理而言,TSAM 通过服务实例为一个具体的 IT 服务提供了一个丰富的、面向服务的自动化管理实现。图
2 给出了服务定义和服务实例的关系模型:
图 2. 服务定义和服务实例的关系
TSAM 虚拟机创建机制
TSAM 不仅具有强大的 IT 服务管理功能,伴随着云计算时代的到来,它还提供了对当今主流虚拟化服务器的支持与兼容。
在云计算中,虚拟机是一个核心的基础元素,多数云计算产品都基于虚拟机来为上层的云应用服务提供计算能力。因此,对虚拟机的管理是云计算解决方案中必须解决的问题。在
IBM TSAM 产品中,开发人员可以根据自己的需要,使用 TSAM 所提供的两种自定义的虚拟机创建和管理方式——
IBM Tivoli Provisioning Manager(TPM)提供的 workflow 方式和脚本方式。
TPM Workflow 方式
在 TSAM 中,开发人员可以使用 IBM TPM(Tivoli Provision
Manager)提供的 workflow 方式进行虚拟机的创建。首先,开发人员在 TPM 平台上进行 workflow
的开发,实现基于特定虚拟化服务器平台的虚拟机创建功能;然后在 TSAM 平台上进行相应服务定义的设计;最后,把
TPM 中开发完成的 workflow 的信息配置到 TSAM 的服务定义中,从而最终实现基于 TPM
所提供的 workflow 方式在 TSAM 平台上进行虚拟机的创建。然而,TPM workflow 方式不仅需要
TPM 产品组件的支持,而且需要更多的系统配置,错误定位也比较困难。本文对于 TPM workflow
虚拟机创建方式,将不展开详细叙述。在下面章节中,本文将着重讲述在 TSAM 平台上以脚本方式创建云端虚拟机。
脚本方式
相比于 workflow 创建方式,脚本方式完全不需要 TPM 的支持,它仅仅基于
TSAM 所提供的基本开发框架和流程,就可以实现云计算环境中虚拟机的创建与管理。同时,它的配置和错误定位也更加简易。在这种方式中,开发人员首先基于特定虚拟化服务器平台提供的
API 进行虚拟机创建脚本的开发。然后,开发人员在 TSAM 平台上进行服务定义的设计。最后,开发人员需要把开发完成的脚本的信息配置到
TSAM 的服务定义中,从而最终实现虚拟机的创建。在下面的章节中,本文将通过一个创建虚拟机的示例,一步步引导读者如何利用
TSAM 平台以脚本方式创建云端虚拟机。
系统属性设置
利用脚本方式在 TSAM 上进行虚拟机的创建,首先需要对 TSAM 系统进行基本的系统信息的配置。开发人员首先登入
TSAM 系统的 Maximo用户界面,然后进入“系统属性”界面(Goto->System Configuration->Platform
Configuration->System Properties)。在“Property Name”中,输入“pmzhb”前缀,按回车键。开发人员需要更改的是以下三个系统属性,如图
3 中红色方框所示:
图 3. 系统属性设置
系统属性“pmzhb.script.repdir”设置的是 TSAM 自身的系统脚本在
TSAM 系统中的存放目录。这个属性值一般是在 TSAM 系统安装好后被自动设置的。开发人员可以重新设置这个属性,但要保证设置的属性值与系统的实际配置相符。值得注意的是,开发人员所开发出来的虚拟机创建脚本,必须存放在这个属性所指定的目录中,或者其子目录中。否则脚本不会被调用。
系统属性“pmzhb.script.tmpdir”设置的是临时文件目录。这个目录中存放了
TSAM 调用虚拟机创建脚本时所产生的系统信息文件、日文件、结果文件和参数文件等。其中参数文件非常重要,它传递了虚拟机创建时用户在服务请求中所设定的创建参数。虚拟机创建脚本就是通过读取这个文件中的参数值来进行相应的虚拟机创建的。
系统属性“pmzhb.backendless.mode”允许开发人员以一种“模拟模式”来运行脚本。所谓“模拟模式”指的是相应的管理计划(Management
Plan)在 TPAe(Tivoli Process Automation Engine)组件中执行,但是相应于管理计划的执行脚本并没用被调用执行。这个属性对于开发初期的系统调试非常有用。在这里,我们设置这个系统属性为“Y”,即屏蔽模拟模式,设置
TSAM 系统进行虚拟机创建脚本的实际调用。
集成端点设置
除了上述对系统属性的设置外,为了使用 TSAM 所提供的脚本调用机制,开发人员还需要对一个特殊的
Maximo 集成端点(Maximo Integration Endpoint)进行设置。这个集成端点是执行脚本调用的
TSAM 系统的 Shell 环境。对这个端点的设置可以通过“End Point”应用程序来设置(Goto
-> Integration -> Endpoints)。在“List”标签中,通过前缀“pmzhb”在过滤器中对“End
Point”进行过滤,然后在过滤结果中选择“PMZHBWSCR”并点击进入。如图 4 所示:
图 4. 集成端点设置
在上图中,红色方框标识出了三个非常重要的端点属性。
“CMDWORKDIR”:这个属性设置了执行程序登陆到本地 Shell
环境后的工作目录。通常这个目录会与在系统属性“pmzhb.script.tmpdir”中设置的脚本调用临时目录集成在一起工作;
TSAM 系统的本地系统用户“USERNAME”:这个系统用户必须具有合适的系统权限来访问存放执行脚本的目录以及进行脚本的调用;
用户密码属“PASSWORD”:它设置了相应于“USERNAME”所指定的系统用户所对应的系统登陆密码。
脚本基本结构
通过 TSAM 所调用的执行脚本在编写时必须按照一定格式规范。否则,执行脚本不会被正确执行。表格
1 给出了 TSAM 所支持的脚本书写格式模版:
清单 1.脚本格式模板
#!/bin/bash
# 这是一个通过 Tivoli Service Automation
Manager 所调用的脚本样例。
#
# 脚本的唯一输入是在服务请求提交时所产生的请求标识 requestId
(UUID)。
# 对于脚本运行时所需要的其他的参数,是通过一个遵循特定命名规则的参数文件来传递
# 的。 【注意:这个脚本参数文件是在脚本调用时产生,保存在系统属性“pmzhb.script.tmpdir”
# 所设置的临时目录中。参数文件中保存了脚本运行时从服务实例的数据模型中传递下来的
# 参数值。】
# 设置脚本名称 scriptName,这个名称必须与你当前正在编辑的执行脚本的名字一致
scriptName=sample_script.sh
# 加载默认系统脚本“ctjzhLibrary.sh”。这个系统脚本的作用是为当前编辑的脚本在其执行
# 时做一些基本的系统环境信息初始化工作,以及提供脚本执行时的日志记录和正常退出
# 等。【注意:下面示例中脚本“ctjzhLibrary.sh”的父目录“/tmp/IBM/TSAM”为在系
# 统属性“pmzhb.script.tmpdir”中设置的对应值。】
. /tmp/IBM/TSAM/$1/ctjzhLibrary.sh
# 脚本所完成的实际执行代码块
# {...}
# 访问参数文件中的参数
echo "Here is my sample parameter:
$mySampleParameter"
# 向结果文件中写入返回参数。其中变量“$resultFile”为系统脚本“ctjzhLibrary.sh”在进
# 行系统环境信息初始化时所产生的结果文件。
echo myReturnParameter=samplereturn
>> $resultFile
# 对脚本运行时信息进行日志输出。其中“MSG_KEY”为提供的
message key。
PMZHBlogMessage MSG_KEY param1 param2
# 设置返回结果值
returnCode=0
# 脚本退出调用
call_exit
表格 2 给出了在 TSAM 中利用脚本调用机制在 VMware 的 Virtual
Center 平台上进行云端虚拟机创建的简单示例代码:
清单 2.脚本代码示例
#!/bin/bash
scriptName=deploy_vm.sh
. /tmp/IBM/TSAM/$1/ctjzhLibrary.sh
# ProvisonVM 是一个通过 Java 语言编写的虚拟机创建类
# 参数 VCURL:Virtual Center 的 Web Service
访问地址
# 参数 USERNAME:Virtual Center 登入用户名
# 参数 PASSWORD:Virtual Center 登入密码
# 参数 DATACENTER:虚拟机的创建数据中心
# 参数 TEMPLTPATH:创建虚拟机时的虚拟机模版
# 参数 VMNAME:虚拟机名字
# 参数 VMFOLDE:虚拟机的创建路径
# 参数 TARGETDS:虚拟机的创建存储
# 参数 TARGETRP:虚拟机的创建资源池
# 参数 TARGETHOST:虚拟机的创建 ESX 服务器
/opt/IBM/workspace/VM_Deployment_Automation/ProvisonVM
\
$VCURL $USERNAME $PASSWORD $DATACENTER $TEMPLTPATH $VMNAME
\
$VMFOLDE $TARGETDS $TARGETRP $TARGETHOST
returnCode=0
call_exit
作业计划定义
当完成云端虚拟机创建脚本的编写后,下一步是在 TSAM 的 Maximo
管理界面上创建作业计划(Job Plan)。首先进入作业计划应用程序(Goto->Planning->Job
Plans),在工具栏中点击“New”进行作业计划定义“CREATE_VM”,设置作业计划类别为“Script
Processor main parameters”,勾选“Flow Controlled”标志,设置“Owner”为“MAXADMIN”。具体设置如图
5 所示:
图 5. 作业计划的创建
然后需要向工作计划添加工作任务(Job Plan Task)。工作任务用于执行实际的脚本调用。在表格“Job
Plan Tasks”栏中点击“New Row”按钮。请注意,属性“Flow Action”应设置为“PMZHBCSEHW”。具体主要设置如图
6 所示:
图 6. 工作任务的添加
最后,在工作计划的“Specifications”标签下,需要配置一些主要属性,如图
7 所示:
图 7. 工作计划的属性配置
PMZHB_OPERATION_WORKFLOW_NAME:对工作计划进行分类设置后自动填入的,开发人员可根据需要修改;
PMZHBW_SCRIPT_NAME:定义了调用脚本的名字。这里设置的脚本的路径是相对路径,是相对于系统属性“pmzhb.script.repdir”中设置的脚本目录。
最后,当工作计划定义完成后,需要更改工作计划状态由“DRAFT”状态改为“Active”状态。
节点操作定义
当完成工作计划的创建后,开发人员需要创建相应的拓扑节点,然后为拓扑节点创建相应的节点操作。在这里我们先定义两个拓扑节点“VMWARE_VIRTUAL_CENTER”和“VMWARE_VIRTUAL_MACHINE”,分别表示用于创建虚拟机的
VMWare Virtual Center 实体和被创建的虚拟机实体。如图 8 和 9 所示:
图 8. 节点 VMWare VIRTUAL_CENTER
图 9. 节点 VMWARE_VIRTUAL_MACHINE
然后为拓扑节点“VMWARE_VIRTUAL_CENTER”定义节点操作,如图
10 所示:
图 10. 定义节点操作
节点操作名签名为“CREATE_VM_OP”,“Type”属性为“Creation”,同时,要把节点操作与具体的工作计划关联起来。在这里,我们把节点操作与上面刚刚定义的工作计划“CREATE_VM”通过“Jobplan
Identifier”属性关联起来。另外,节点操作中定义的输入参数签名必须与脚本中读取的参数签名完全一致。在这里,读者可以看到,节点操作“CREATE_VM_OP”中的
10 个输入参数签名与之前的虚拟机创建脚本“deploy_vm.sh”中的参数名字是完全一致。
管理计划定义
当完成节点操作的创建后,开发人员需要通过创建最上层的管理计划(Management
Plan)来完成云端虚拟机创建任务的整个流程。在这里,我们定义了管理计划“PROVISION_VIRTUAL_MACHINE”,并设置“Topology
Requirements”中的“Topology Node”为前面定义的“VMWARE_VIRTUAL_MACHINE”,即创建一个
VMWare 类型的虚拟机。具体设置如图 11 所示:
图 11. 管理计划的定义
最后,通过为管理计划定义任务,从而实现管理计划与节点操作的关联。具体设置如图
12 所示:
图 12. 管理计划与节点操作的关联
通过上图可以看到,管理任务与节点操作关联了起来。同时通过输入参数映射“Input
Parameter Mappings”,节点操作中的输入参数与参数输入源关联起来,即脚本中最终读取的参数值与输入源关联了起来。在这里,节点操作中的输入参数值被映射到拓扑节点的属性值。
服务请求提交
当完成管理计划的创建后,用户可以通过提交服务请求的方式执行管理计划。用户首先通过
Maximo 的服务请求应用程序(Go To->Work Orders->Service Requests)创建服务请求,然后在服务请求的属性标签“Specification”中设定相应的参数值。具体设置如图
13 所示:
图 13. 服务请求的属性设置
如上图所示,我们在服务请求中设置的管理计划为刚刚定义的管理计划“PROVISION_VIRTUAL_MACHINE”,这个管理计划将在服务请求提交后立即执行。
其次,我们在服务请求中定义了在虚拟机创建脚本中所读取的参数的参数值。在这里,这些参数值是通过设置拓扑节点的属性值来设定的。这些参数值会首先通过管理计划中定义的输入参数映射“Input
Parameter Mappings“映射到节点操作的输入参数,最终会映射到脚本中所读取的参数。
最后,当服务请求被提交后,虚拟机创建管理计划会被调用执行,最终虚拟机创建脚本被调用执行——创建脚本读取输入参数值并调用
VMWare Virtual Center 平台 API 完成最终的虚拟机创建任务。图 14 展示了通过
TSAM 平台在云环境下的虚拟化服务器 ESX 上创建出来的虚拟机 demo_vm。
图 14. 虚拟机创建示例
结束语
通过本文的介绍 , 相信您对 IBM TSAM 产品以及基于
TSAM 产品的虚拟机创建方式有了初步的了解。通过本文介绍的一个云端虚拟机创建实例,您可以轻松利用 TSAM
的脚本方式创建云端虚拟机,充分享受 TSAM 在云计算领域所具有的独特而又强大的优势。
|