手动将软件安装到 Microsoft® Azure® 虚拟机上可能很麻烦。本文将介绍如何使用 IBM® PureApplication® Software 脚本包和 Azure 存储帐户来简化和加快此过程。
在 IBM PureApplication Software on Azure 中,脚本可以是可执行命令和可选的二进制有效负载(payload)。在部署一个包含脚本包的虚拟机时,PureApplication Software on Azure 将会部署虚拟机,将脚本包传输到该虚拟机,然后运行定义的可执行命令。
软件安装二进制文件可以二进制有效负载的形式,与安装和配置软件的可执行命令一起存储在脚本包中。但是,安装二进制文件可能很大,可能花很长时间才能通过网络从 IBM PureApplication Software on Azure 传输到虚拟机。
一种替代方案是使用将部署虚拟机的相同数据中心位置的一个 Azure 存储帐户。在此场景中,脚本包只需包含下载安装二进制文件和执行安装所需的逻辑。因为大型二进制文件存储在虚拟机所在的相同 Azure 数据中心位置,所以在二进制文件存储在脚本包本身中时,下载会快得多。
有多个不同类型的 Azure 存储选项 。不同的工作负载和环境拥有不同的要求水平。请花费一些时间熟悉各种选项,并选择最适合您的情况的选项。本教程中的示例结合使用了 Block Blob 和 Zone Redundant 存储复制功能。Block blob 适合流二进制数据,而 Zone Redundant 存储复制提供了经济的耐久性。
首先,使用所期望的名称和复制设置在虚拟机将要部署到的位置上创建一个存储帐户:
图 1. 创建 Azure 存储帐户
接下来,选择新存储帐户并使用所期望的名称创建一个私有容器:
图 2. 选择存储容器
图 3. 创建新存储容器
接下来,记下新 Azure 存储帐户的访问密钥。基本上讲,访问密钥就是访问存储位置的密码,脚本包需要此密钥才能下载安装二进制文件。导航到新 Azure 存储的仪表板并单击 Manage Access Keys:
图 4:导航到存储访问密钥
图 5:观察访问密钥
最后,使用类似 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。
打开示例 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 个参数:
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 细节
图 9. 向下滚动到 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 为示例脚本包所做的贡献。
回页首
描述 | 名字 | 大小 |
---|---|---|
代码示例 | installLibertyAzureStorage.zip | 423 KB |