首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用 IBM Workload Deployer CLI 自动化 WebSphere 应用程序部署-1

利用 IBM Workload Deployer CLI 自动化 WebSphere 应用程序部署-1

完整、互补性的部署来自  的  和  都用于 “部署” 内容,但它们部署不同的内容。Deployit 将应用程序工件和资源(比如 EAR 文件和数据源)部署到中间件系统,比如 IBM WebSphere Application Server(但也会将 HTML 部署到 Web 服务器,将 IBM WebSphere MQ 配置部署到队列管理器,等等)。另一方面,IBM Workload Deployer 将虚拟映像的模式(或拓扑)部署到虚拟机管理程序中,但并非是任何类型的虚拟映像。IBM Workload Deployer 尤其适合部署中间件拓扑。
IBM Workload Deployer 和 WebSphere CloudBurst
IBM Workload Deployer V3 是 WebSphere CloudBurst Appliance 的一个更新和增强版本,重命名是为了反映它可部署的更大范围的工作负载,它们不再仅限于 WebSphere 工作负载。本文的内容(包括屏幕截图)是使用 WebSphere CloudBurst Appliance 创建的,但这里提及的所有内容同样适用于 IBM Workload Deployer V3。不过,为了保持所提供图像的一致性,本文通篇使用了 “WebSphere CloudBurst” 来指代两种产品。

换句话说,IBM Workload Deployer 部署中间件系统,而 Deployit 将应用程序部署到这些中间件系统,实现完美搭配的互补功能。
在 XebiaLabs,我们研究了两种令人激动的新的 Deployit 集成。我们创建了一个 Deployit 插件,可使用它直接将 EAR 文件部署到 IBM Workload Deployer V3 或其前身产品 IBM WebSphere CloudBurst Appliance V2 创建的虚拟系统。我们还创建了一个 WebSphere CloudBurst 脚本包来将应用程序工件和资源部署到新创建的虚拟系统上。
本文探讨 WebSphere CloudBurst 与 Deployit 之间的两种集成,以此来展示如何利用 WebSphere CloudBurst 命令行接口和脚本包来将云部署与您的应用程序部署自动化解决方案相集成。
命令行接口我们构建的第一个集成是从 Deployit 调用 WebSphere CloudBurst。在此场景中,Deployit 调用 WebSphere CloudBurst 来部署一种模式并读取关于刚部署的模式的信息,使 Deployit 能够将 Java™ EE 应用程序部署到它之上。Deployit 使用 WebSphere CloudBurst  (CLI) 来完成此任务。
如  中所述,您可以下载 WebSphere CloudBurst CLI。您获得的 2.2MB 的小包需要 Java 虚拟机 (JVM) 来运行,并包含一个 Jython 解释器。它可以交互式地运行,或与需要运行的 Jython 脚本结合运行。如果熟悉 wsadmin,一定也会觉得该 CLI 很面熟。
WebSphere CloudBurst CLI 公开的 API 非常简单,它始于一个 cloudburst 对象。要获得关于此对象及其子对象的更多信息,可以在命令行上键入 help(cloudburst)。对于此集成,我们使用了以下资源集合:
  • cloudburst.patterns 是 WebSphere CloudBurst Appliance 管理的  列表。
  • cloudburst.clouds 是 WebSphere CloudBurst Appliance 上的  列表。.
  • cloudburst.virtualsystems 是 WebSphere CloudBurst Appliance 管理的  列表。
部署模式要使用 WebSphere CloudBurst CLI 部署模式,基本而言需要从 cloudburst.patterns 资源集合中选择要部署的模式,从 cloudburst.clouds 资源集合选择要部署到的云小组,然后使用这些对象和要创建的虚拟系统名称来调用 cloudburst.virtualsystems.create。实际上,您还需要传入密码,它将用于新映像和将安装在它之上的 WebSphere Application Server。
调用 cloudburst.virtualsystems.create 之后,您将需要使用  命令来等待部署完成,然后打印虚拟系统的最终状态,以便 Deployit 可从输出检索它们。
为了完成所有这些任务,WebSphere CloudBurst CLI 脚本通过部署一个类似清单 1 的模式来创建一个虚拟系统 (create-virtual-system.py)。
清单 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env cloudburst

from time import sleep
from socket import gethostbyaddr

sys.argv.pop(0)
patternName = sys.argv.pop(0)
cloudName = sys.argv.pop(0)
systemName = sys.argv.pop(0)
systemPassword = sys.argv.pop(0)

print "Deploying pattern", patternName, "to cloud", cloudName, "with name", systemName

myPattern = cloudburst.patterns[patternName][0]
myCloud = cloudburst.clouds[cloudName][0]
mySystem = cloudburst.virtualsystems.create({'name': systemName, 'cloud': myCloud,
'pattern': myPattern, '*.*.password': systemPassword})

mySystem = cloudburst.virtualsystems[systemName][0]
mySystem.waitFor()

print "Deployed pattern", patternName, "to cloud", cloudName, "with name", systemName

mySystem = cloudburst.virtualsystems[systemName][0]
print "state:", mySystem.currentstatus_text




可以使用以下命令调用该脚本:
$ <path-to-cloudburst-cli>/bin/cloudburst -h                <appliance> -u <username> -p <password> -f                create-virtual-system.py <patternName> <cloudName> <systemName> <systemPassword>
读取关于虚拟系统的信息在 WebSphere CloudBurst 部署模式之后,Deployit 需要知道所创建的虚拟系统的主机名和 IP 地址。清单 2 中的 WebSphere CloudBurst CLI 脚本 (read-virtual-system.py) 将运行,Deployit 将从此脚本的输出读取虚拟系统的 IP 地址和主机名。
清单 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env cloudburst

from time import sleep
from socket import gethostbyaddr

sys.argv.pop(0)
systemName = sys.argv.pop(0)

print "Reading information about virtual system", systemName

mySystem = cloudburst.virtualsystems[systemName][0]
print "state:", mySystem.currentstatus_text
ipaddr = mySystem.virtualmachines[0].ip.ipaddress
print "ipaddr:", ipaddr
hostname = gethostbyaddr(ipaddr)[0]
print "hostname:",hostname

返回列表