内容


使用 IBM PureApplication 脚本包和 Microsoft Azure 存储安装和配置软件

使用 PureApplication Software on Azure 优化部署

Comments

简介

手动将软件安装到 Microsoft® Azure® 虚拟机上可能很麻烦。本文将介绍如何使用 IBM® PureApplication® Software 脚本包和 Azure 存储帐户来简化和加快此过程。

在 IBM PureApplication Software on Azure 中,脚本可以是可执行命令和可选的二进制有效负载(payload)。在部署一个包含脚本包的虚拟机时,PureApplication Software on Azure 将会部署虚拟机,将脚本包传输到该虚拟机,然后运行定义的可执行命令。

软件安装二进制文件可以二进制有效负载的形式,与安装和配置软件的可执行命令一起存储在脚本包中。但是,安装二进制文件可能很大,可能花很长时间才能通过网络从 IBM PureApplication Software on Azure 传输到虚拟机。

一种替代方案是使用将部署虚拟机的相同数据中心位置的一个 Azure 存储帐户。在此场景中,脚本包只需包含下载安装二进制文件和执行安装所需的逻辑。因为大型二进制文件存储在虚拟机所在的相同 Azure 数据中心位置,所以在二进制文件存储在脚本包本身中时,下载会快得多。

将文件存储在 Azure 存储中

有多个不同类型的 Azure 存储选项。不同的工作负载和环境拥有不同的要求水平。请花费一些时间熟悉各种选项,并选择最适合您的情况的选项。本教程中的示例结合使用了 Block Blob 和 Zone Redundant 存储复制功能。Block blob 适合流二进制数据,而 Zone Redundant 存储复制提供了经济的耐久性。

创建 Azure 存储帐户

首先,使用所期望的名称和复制设置在虚拟机将要部署到的位置上创建一个存储帐户:

图 1. 创建 Azure 存储帐户
创建 Azure 存储帐户
创建 Azure 存储帐户

创建 blob 存储容器

接下来,选择新存储帐户并使用所期望的名称创建一个私有容器:

图 2. 选择存储容器
选择存储容器
选择存储容器
图 3. 创建新存储容器
创建新存储容器
创建新存储容器

记下 Azure 存储帐户访问密钥

接下来,记下新 Azure 存储帐户的访问密钥。基本上讲,访问密钥就是访问存储位置的密码,脚本包需要此密钥才能下载安装二进制文件。导航到新 Azure 存储的仪表板并单击 Manage Access Keys:

图 4:导航到存储访问密钥
导航到存储访问密钥
导航到存储访问密钥
图 5:观察访问密钥
观察访问密钥
观察访问密钥

将软件安装二进制文件上传到 Azure 存储

最后,使用类似 AZCopy 的工具将安装二进制文件上传到 blob 容器中的新 Azure 存储帐户中。

创建脚本包

下一步是创建一个 脚本包,它从 Azure 存储容器下载二进制文件并执行产品安装。可以 在本教程底部下载示例脚本包。它安装 WebSphere Application Server V8.5.5.5 Liberty 配置文件。使用上面的链接,将 wlp-runtime-8.5.5.5.jar 上传到 Azure 存储帐户。可以轻松地修改示例脚本包来安装其他软件包。

Microsoft 提供了 Azure 客户端库 的多种不同语言的下载版本,包括 Java™、Microsoft .NET、Python 和 Ruby。示例脚本包捆绑了 Python 库,因为 PureApplication Software for Azure 在所有部署的 VM 上预先安装了 Python 2.7。

Python 下载脚本

打开示例 installLibertyAzureStorage.zip 脚本包压缩文件并查找 download.py 文件,该文件 使用 Azure Python 库与 Azure Blob 存储服务进行交互

from azure.storage import BlobService
from sys import argv
script, account_name, account_key, blob, filename = argv
blob_service = BlobService(account_name, account_key)
blob_service.get_blob_to_path(blob, filename, filename)

这个简单的 Python 脚本接受 4 个参数:

  • 存储帐户名称:来自图 1 的存储容器的名称。
  • 访问密钥:来自图 5 的一个访问密钥。
  • blob 容器名称:来自图 3 的名称。
  • 文件名:要下载的安装二进制文件的名称,即 wlp-runtime-8.5.5.5.jar。

Python 脚本从 Azure 存储将具有相同文件名的指定文件下载到运行 Python 脚本的目录。

脚本包安装命令

这是 install.cmd 文件,它是示例脚本包的主要可执行文件:

@echo off
REM
REM Download binaries from storage location
REM
echo %time% : Downloading %FILENAME% from %ACCOUNT_NAME% %CONTAINER%
python downloadFile.py %ACCOUNT_NAME% %ACCOUNT_KEY% %CONTAINER% %FILENAME%
REM
REM Install WebSphere Liberty Profile V8.5.5.5 Runtime
REM
echo %time% : Installing Liberty
set PATH=%PATH%;"C:\Program Files (x86)\IBM\Java60\sdk\bin"
java -jar wlp-runtime-8.5.5.5.jar --acceptLicense C:\WASLiberty
echo %time% : Done

该命令文件从 Azure 存储下载二进制文件,然后调用 WebSphere Application Server V8.5.5.5 Liberty 配置文件的软件安装文件。回应消息(echo messages)包含一个时间戳,以便计算下载和安装时间。传递给 download.py 的相同的参数定义为环境变量,它们由脚本执行框架设置。

其他产品可能需要解压其二进制安装文件才能安装。处理压缩文件的选项因部署的 Windows 版本而不同。IBM PureApplication Software for Azure 也在所有部署的 VM 上预先安装了 IBM 32-bit SDK for Windows Java Technology Edition V6。上面的示例 install.cmd 文件将二进制目录添加到 PATH 中,所以您的一个选择是使用 jar 命令解压 zip 文件。

脚本包参数

脚本包主要 由 cbscript.json 文件定义。脚本包参数在执行脚本期间被导出为环境变量。这是来自示例脚本包的 cbscript.json:

[
   {
      "command": "c:\\WASLiberty\\install.cmd",
      "execmode": 3,
      "filename": "installLibertyAzureStorage.zip",
      "keys": [
         {
            "locked": false,
            "required": true,
            "scriptkey": "ACCOUNT_NAME"
         },
         {
            "locked": false,
            "required": true,
            "scriptkey": "ACCOUNT_KEY",
            "type": "password"
         },
         {
            "locked": false,
            "required": true,
            "scriptkey": "CONTAINER"
         },
         {
            "locked": false,
            "required": true,
            "scriptkey": "FILENAME"
         }
      ],
      "location": "c:\\WASLiberty",
      "log": "c:\\WASLiberty\\liberty.log",
      "name": "Install WebSphere Liberty from Azure Storage",
      "ostype": "windows",
      "timeout": 0,
      "type": "APPLICATION",
      "version": "1.0.0"
   }
]

密钥部分包含 install.cmd 和 download.py 中使用的 4 个需要的参数的参数定义。ACCOUNT_KEY 被定义为密码,因为它是一个授予 Azure 存储位置的访问权的敏感值。通过将它定义为密码字段,在 IBM PureApplication Software on Azure 中显示该值时,该值会被屏蔽。

execmode 被设置为 3,这表明脚本包应在部署时运行,您还可以在完成部署后根据需要调用它。软件的安装通常只需完成一次,但该执行模式在开发脚本包时很有帮助。如果需要更改脚本包, 可以上传一个较新的副本(参见节 “脚本包文件”)。 更新的脚本包然后可以 在现有 VM 上执行,而无需部署一个新 VM。

导入脚本包

首先,将示例脚本包导入 到 IBM PureApplication Software on Azure 中。

将脚本包添加到一种模式中

导入脚本包后,可以将它添加到一种 虚拟系统模式 中。从 Pattern Editor,将脚本包拖到 Azure 镜像上:

图 6. 将脚本包拖到 Azure 镜像上

然后单击画布上 Azure 镜像内的脚本,在右侧的内容窗格上填入所需的脚本包参数:

图 7. 输入需要的脚本包参数

部署模式和查看结果

将虚拟系统模式部署 到用来创建存储容器的相同数据中心位置。在部署系统并运行它之后,在 Virtual System Instances 页面上检查脚本包的结果。展开 VM 细节:单击虚拟机旁边的加号,向下滚动到 Script Packages 部分:

图 8. 展开 VM 细节
展开 VM 细节
展开 VM 细节
图 9. 向下滚动到 Script Packages 部分
 向下滚动到 Script Packages 部分
向下滚动到 Script Packages 部分

单击 remote_std_out.log 下载脚本包标准日志输出。在此实例中,不到 6 秒就完成了下载:

18:49:28.33 : Downloading wlp-runtime-8.5.5.5.jar from pasimages images
18:49:34.27 : Installing Liberty

Before you can use, extract, or install IBM WebSphere Application Server V8.5.5, you must accept 
the terms of the International License Agreement for Non-Warranted Programs and additional license
information. Read the following license agreements carefully. The --acceptLicense argument was found.
This indicates that you have accepted the terms of the license agreement.

Extracting files to C:\WASLiberty\wlp
Successfully extracted all product files.
18:49:44.51 : Done

结束语

通过网络传输大型软件安装二进制文件可能会增加 VM 部署和配置的总时间。本教程展示了如何将大型安装二进制文件存储在部署的 VM 所在的相同 Azure 数据中心位置中的 Azure 存储帐户上。然后,IBM PureApplication Software on Azure 脚本包可以高效地从 Azure 存储下载二进制文件进行安装,这显著减少了虚拟机部署和配置的总时间。

致谢

感谢 IBM 同事 Jose Ortiz、Kevin Cormier 和 Arthur Meloy 评审本文,还要感谢 Arthur 为示例脚本包所做的贡献。


下载资源


相关主题

  • IBM PureApplication Software 和 Microsoft Azure 资源
    • IBM PureApplication 产品页面
      PureApplication 解决方案、客户案例分析和产品信息。
    • IBM PureApplication Software
      作为 IBM PureApplication 家族的新成员,IBM PureApplication Software 是 PureApplication 的一个允许客户自带硬件的内部部署版本。它合并了 PureApplication System 和 PureApplication Service,前者用于内部部署的云解决方案,后者用于场外用途。
    • 来自 IBM InterConnect 2015 大会的 IBM PureApplication System 新闻
      来自 2015 年 2 月 IBM InterConnect 大会的新闻包括 PureApplication System V2.1 和 IBM PureApplication Software 的发布,以及其他有关 IBM PureApplication 家族的新闻,比如实现企业级混合云和集成 Docker 和 Chef 等开放技术。
    • 什么是 Azure?
      Azure 是 Microsoft 的云平台:一个越来越庞大的集成服务集合 -- 计算、存储、数据、网络和应用程序。
    • IBM PureSystems 开发人员资源
      针对 IBM PureSystems 产品和服务的最新试用版、下载、教程和其他开发人员资源。
    • IBM PureSystems Centre
      访问来自 IBM 和 IBM 业务合作伙伴的 PureSystems 模式、系统更新和模式更新,以及最大程度地提高系统和模式收益的专业技能。
  • WebSphere 资源
  • developerWorks 资源
    • IBM 软件产品试用版下载
      精选的 IBM® DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 产品的免费试用版下载。
    • 开发人员技术活动
      这些大会、网络研讨会和技术活动可以提高您的技术专长,帮助您在软件项目中取得成功。
    • developerWorks 播客
      收听与软件创新者的不同寻常的有趣访谈和讨论。
    • IBM Education Assistant
      一个多媒体教育模块集合,可以帮助您更好地理解 IBM 软件产品,更有效地使用它们满足您的业务需求。

评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, WebSphere
ArticleID=1007701
ArticleTitle=使用 IBM PureApplication 脚本包和 Microsoft Azure 存储安装和配置软件
publish-date=06042015