IBM SmartCloud Enterprise 管理,第 1 部分: 使用 ICCT 为 VM 创建软件包

软件包是可以部署在虚拟机实例上的软件安装文件、配置文件以及元数据的集合。在这个由两部分组成的系列文章中,作者将介绍如何使用 IBM® Image Construction and Composition Tool (ICCT) 创建一个软件包,以及如何在 IBM SmartCloud Enterprise 上注册和维护它。ICCT 执行记账任务并提供一个分步流程和一个图形化 UI 来便捷地创建软件包,定制虚拟机实例和捕获映像。在本文中,作者介绍了如何创建 VM 软件包,如何在 SmartCloud 上创建和建立 ICCT,以及如何检索和更新软件包。第 2 部分 将介绍使用第一部分添加的软件包捕获一个新私有映像的步骤。

Alexei Karve, 高级软件工程师, IBM

Alexei Karve 是 IBM Thomas J Watson Research Center 的一名高级软件工程师。他是 SmartCloud Enterprise 设计团队的成员,专攻云业务支持系统的软件包和 VPN/VLAN 研究。Alexei 在操作支持服务、虚拟化和 Tivoli Provisioning Manager 方面有着广泛的经验。在 1993 年加入 IBM 之前,他拥有从事各种系统管理工作的经验。



Alex Amies, 高级软件工程师, IBM

/developerworks/i/p-aamies.jpgAlex Amies 是 IBM GTS 中国开发实验室的一名高级软件工程师。他目前是致力于设计 IBM Smart Business Development and Test on the IBM Cloud 的一名架构师。此前他在 IBM 其他部门担任过云计算和安全性产品方面的架构师和开发人员。



Scott Peddle, 咨询软件开发人员, IBM  

Scott Peddle 是 Business Process Management Repository 团队的咨询软件开发人员。他负责开发 WebSphere BPM 产品套件中的集成战略。



Hidayatullah Shaikh, 高级技术人员, IBM

Hidayatullah Shaikh 是 IBM T.J. Watson Research Center 的一名高级技术人员兼高级经理。他负责领导和管理云平台、远程 IT 基础设施管理以及虚拟桌面领域中的项目。他感兴趣和擅长的领域包括虚拟化、云计算、远程服务交付、业务流程建模和集成、面向服务的体系结构、网格计算、电子商务、企业 Java、数据库管理系统以及高可用性集群。



Qiangguo Tong, 高级软件工程师, IBM

Qiang Guo Tong 是一位高级软件工程师,在 Web 开发方面有 5 年的工作经验。他是 IBM 中使用的多个全球化工具的技术领导。



Pan Xia Zou, 高级软件工程师, IBM

Pan Xia Zou 是 IBM 的一位高级软件工程师,担任 IBM SmartCloud Enterprise 的构建和部署自动化架构师。



2012 年 10 月 22 日

本文提供了 IBM Image Construction and Composition Tool 的概述,并演示如何创建和维护 IBM SmartCloud Enterprise 上的软件包。用一个示例来介绍创建 Google Chrome 软件包的步骤,包括定义 Chrome 软件包元数据,添加安装脚本,以及在 SmartCloud Enterprise 上注册。您应该对云计算基本概念有一个基本的了解。要尝试本文的步骤,需要一个 IBM SmartCloud Enterprise 用户帐户。

Image Construction and Composition Tool

SmartCloud 上的 ICCT 是一个简化及自动化虚拟机映像创建的 Web 应用程序。ICCT 是作为一个可在 SmartCloud 上配置的映像而提供的。

SmartCloud 上的 ICCT 对虚拟映像生命周期中执行的任务按角色进行分类:

  • 操作系统专家角色:为操作系统创建基础映像,映像构建者角色将其用作一个起始点。基础映像代表一个企业的标准 OS 配置、许可协议和安全策略。
  • 软件专家角色:创建包含软件产品和组件的软件包和可重用资产。
  • 映像构建者角色:集合基础映像和一个或多个软件包来创建虚拟映像模板。
  • 映像部署者角色:指出特定实例的参数,并在 SmartCloud 中部署一个实例。

ICCT 支持软件包创建,虚拟映像生命周期的创建和部署阶段。

现在,我们来探讨软件包创建、虚拟映像创建和虚拟映像部署。

软件包创建

软件专家在定义软件包和选择软件包粒度方面有很大的灵活性。软件包将一个或多个产品的安装和配置任务封装到一个简易容器中。ICCT 帮助用户设置依赖项、先决条件、防火墙规则,以及将脚本和二进制文件收集到一个软件包中。

软件专家必须决定在哪里包装安装介质。与软件包操作相关的所有文件将被上传并存储到 Rational® Asset Manager (RAM) 中的一个可组合的软件包资产中。软件包资产的目录结构确保与操作相关的所有文件都存储在同一个子目录中。当与不同操作相关的文件有相同的文件名时,该结构可防止出现冲突。

将产品安装介质包装在软件包中通常意味着在同步过程中进行大量软件包转移。产品安装介质可位于外部 Web 服务器上,并使用 wget 或者 NFS 获得。

在 ICCT 中使用 Install 和 Configuration 选项卡来处理产品包安装和配置:

  • Install 选项卡:软件专家可以定义虚拟映像构建时执行的脚本。这可能包含传统产品安装脚本和二进制文件。
  • Configuration 选项卡:软件专家可以定义配置脚本,可在构建时复制到虚拟映像,但是不能执行直至部署了虚拟映像。这些配置脚本可能包括传统配置脚本或脚本来重新配置一个已在安装操作中应用的默认脚本。
  • Reset 选项卡:驻留一个脚本以清理同步过程中创建的日志或临时文件。在捕获过程中该脚本由 ICCT 运行。
  • Firewall 选项卡:驻留许多为远程客户端提供服务的软件包;例如,IBM HTTP Server 提供一个 Web 服务器。要成功访问这类服务,产品安装和配置可能需要启用网络访问。软件专家必须指定入站服务端口集合,以打开并允许访问服务。例如,一个 IBM HTTP Server 软件包可能要求打开管理端口 (8080) 和服务端口 (80, 443)。

软件专家必须执行的关键任务是编写在虚拟映像创建和部署过程中执行的安装、配置和重置脚本。ICCT 依赖脚本完成下列操作:

  1. 实现软件包中软件和软件组件的安装和配置。
  2. 允许软件包使用部署参数在部署过程中定制软件。
  3. 在捕获一个安装了软件包的虚拟映像之前,清理软件包安装和配置过程中创建的状态。

ICCT 依靠脚本中的反馈来决定一个操作是否成功执行。软件专家必须意识到 ICCT 将结束代码 0 视为成功,而其他结束代码则视为失败。

虚拟映像创建

虚拟映像经过构成、同步化以及捕获后,开始虚拟映像生命周期创建阶段。包括以下步骤:

  • 构成:在创建阶段的这一步,编造了一个名为映像设计的 recipe 作为虚拟映像,该虚拟映像是用一个新的名称和版本创建的。选中一个基础映像和一个或多个捆绑包,将其添加到 recipe 中进行定制。
  • 同步:映像设计被转化成一个临时虚拟机实例。创建虚拟机实例并安装软件包。执行每个软件包的安装脚本以静默方式将捆绑软件安装在临时虚拟机上。配置和重置脚本复制到虚拟机用于进程的后续执行。
  • 捕获:这是将预先安装在临时实例上的映像以及软件包作为一个私有映像捕获时的流程。ICCT 对虚拟映像中每个软件包运行重置脚本并重置操作系统,让 SmartCloud 完成捕获。最后,当 SmartCloud 完成捕获后,ICCT 更新 RAM 中的语义拓扑文件。

虚拟映像部署

当映射部署人员从创建阶段创建的私有映像中部署一个虚拟机实例时,虚拟映像生命周期部署阶段开始。包括以下步骤:

  • 配置:映像部署人员为将要部署的虚拟映像指定特定实例参数。与软件包相关的映像部署参数,比如用户 ID,密码或端口(可依据每个实例基础配置),同样也要收集。
  • 配置:SmartCloud 在活动模式下配置实例和虚拟机。当操作系统第一次启动时,软件包激活阶段开始。
  • 激活:Activation Engine 接收部署值,并调用适当的配置脚本。软件包及其组件使用映像部署人员为自主重构提供的值。Activation Engine 是一个在基础映像扩展过程中安装到基础映像的 ICCT 组件。ICCT 扩展每个虚拟映像以包含一个启用软件包。如果还没有的话,在虚拟映像设计第一次构成时,ICCT 将添加一个启用软件包。

图 1 演示了虚拟映像生命周期以及每个角色执行的任务。

图 1. ICCT 支持的虚拟映像生命周期
ICCT 支持的虚拟映像生命周期

现在,我们来看一下如何在 SmartCloud 上创建和设置 ICCT。


在 SmartCloud 上创建和设置 ICCT

使用一个简单示例,安装 Google Chrome,我们将遍历上述整个阶段。

  1. 登录 SmartCloud,并通过选择 IBM Image Construction and Composition Tool 映像创建一个 ICCT 实例。部署完成后,连接到 https://<ICCT IP Address>/,使用 ICCT 实例部署过程中提供的 useid 和密码登录。

    注意:如果已有一个虚拟机实例,但是 ICCT URL 没有响应,可能需要以 idcuser 登录到虚拟机实例并运行以下命令重启 ICCT 应用程序:

    sudo /opt/IBM/icon/start.sh

    图 2 显示了新 Cloud Provider Wizard 中的第一个面板。

    图 2. 新 Cloud Provider Wizard 中的第一个面板
    新 Cloud Provider Wizard 中的第一个面板
  2. 单击 Next,输入您登录 SmartCloud 所用的用户名和密码。
    图 3. 输入云证书的面板
    输入云证书的面板
  3. 单击 Next。为用于私有镜像的数据中心输入名称和描述。稍后,您可以为使用不同的数据中心和密钥来创建其他的云提供方。选择 IBM SmartCloud Enterprise 作为云提供方类型。本示例使用 Ehningen 数据中心。
    图 4. 云提供方信息面板
    云提供方信息面板
  4. 单击 Next。该操作使用前面提供的证书从 SmartCloud 获取公钥和数据中心。选择公钥名称,浏览本地私钥以上传并选择数据中心位置。
    图 5. SSH 密钥信息面板
    SSH 密钥信息面板
  5. 单击 Next,然后检查该信息。ICCT 在 Cloud Provider Name 下加密并保存 ICCT 实例上的用户证书和私钥。云提供方被用于从 SmartCloud 检索映像和软件包元信息。私钥被用于在临时实例上代表用户在映像捕获之前安装软件包。
    图 6. 证书摘要面板
    证书摘要面板
  6. 单击 Done。此时会出现 ICCT 欢迎页面。
    图 7. 欢迎页面
    欢迎页面

使用 SmartCloud 上的 ICCT 创建软件包

要创建软件包:

  1. 单击 Build and Manage Software Bundles。Bundles 面板出现在左面。默认本地启用软件包是预先填充的。
    图 8. 软件包管理的第一个面板
    软件包管理的第一个面板
  2. 单击顶部的 + 图标开始创建一个新软件包。出现一个新对话框,输入名称、通用 ID,版本及软件包描述。选择前面为 Storage Location 创建的云提供方,Primary Enterprise Community 保持默认值。
    图 9. 新软件包面板
    新软件包面板
  3. 单击 Create 按钮。添加到软件包列表的软件包显示在左边面板,带有铅笔图标。右边面板显示您输入的信息,底部有一个空产品列表。
    图 10. 软件包基本信息面板
    软件包基本信息面板
  4. 单击软件包表中紧挨着 Products+,添加 Google Chrome 浏览器。双击 Product Name、Version 和 Vendor 下面的编辑框编辑信息。
    图 11. 软件包基本信息面板
    软件包基本信息面板
  5. 单击 Requirements 选项卡,添加作为操作系统支持的 Linux®,通常需要指定以下属性:
    • 类型:操作系统类型,比如 Linux、Windows®
    • 发布版:特定于 OS 发布版,比如 RHEL 和 SLES
    • 架构:描述支持的内核架构
    • 版本:描述 OS 架构。可使用一些通配符
      • 5.x:x 是一个占位符,代表一个具体数字
      • 10.1+:+ 表示版本 10 或更高版本

    只选择 Type=Linux,其他属性为空。

    图 12. 软件包需求信息面板
    软件包需求信息面板
  6. 因为该软件包不需要任何依赖项,所以 Required Software 和 Required Bundles 字段为空。

    下列安装脚本可设置存储库以下载 64 位 Chrome 并进行安装。在本地保存为 installgooglechrome.sh:

    sudo echo "[google-chrome]" > /tmp/google.repo
    sudo echo "name=google-chrome - 64-bit" >> /tmp/google.repo
    sudo echo "baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64"
     >> /tmp/google.repo
    sudo echo "enabled=1" >> /tmp/google.repo
    sudo echo "gpgcheck=1" >> /tmp/google.repo
    sudo echo "gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub"
     >> /tmp/google.repo
    sudo mv /tmp/google.repo /etc/yum.repos.d/google.repo
    sudo yum install -y google-chrome-unstable
  7. 单击 Install 选项卡。Installation 部分指定软件一次性安装时所要运行的。
  8. 单击 + 图标,添加 installgooglechrome.sh,检查并将其标注为可执行,并选择它作为运行命令,以 root 运行。该脚本不带任何参数,因此 Arguments 为空。
    图 13.软件包安装信息面板
    软件包安装信息面板
  9. 接下来是 Configuration 部分。在虚拟机部署过程中 Google Chrome 没有任何脚本需要执行。当使用参数初始化一个映像时,参数应根据每个实例进行配置,使用这一部分。
  10. Firewall 部分用于需要打开的端口。重置这一部分以清理一次性安装日志。Google Chrome 不使用 Configuration 或 Firewall 选项卡。
  11. 更新安装脚本以同时支持 32 位和 64 位:
    uname -a | grep x86_64
    if [ $? -eq 0 ]; then
    # Use 64 bit repository
    else
    # Use 32 bit repository
    Fi
  12. 单击 Save,然后单击 Publish 按钮。
    图 14. 状态更改为 Published
    状态更改为 Published

维护 SmartCloud 上的软件包

维护软件包的两个主要任务是检索和更新。

检索软件包

有几个方法可用于检索软件包信息,要使用 REST API,尝试使用下列请求检索软件包:

图 15. REST API 请求检索 SwBundles
REST API 请求检索 SwBundles

或使用该代码:

curl -k -H 'Accept: application/json' -u <userid>:<password>
 https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/offerings/swbundle

以下响应是为刚刚创建的 GoogleChrome SwBundle 而检索出来的。

图 16. 检索 SwBundles 的响应
接收 SwBundles 响应

另一个方法是转到 SmartCloud Portal,单击 Control Panel > View Asset Catalog > My Dashboard。您可以在 RAM 中看到 GoogleChrome 资产。

图 17. RAM 中的 GoogleChrome 资产
RAM 中的 GoogleChrome 资产

图 18 显示了 GoogleChrome 资产的一些细节信息。

图 18. RAM 中的 GoogleChrome 资产的一般细节信息
RAM 中的 GoogleChrome 资产的一般细节信息

注意,RAM Unique ID 为 07356E0D-3868-1709-0F95-AD9FF0355FF4,而版本为 1.0.0。这将是第 2 部分中介绍如何捕获一个新映像时用到的一个示例。

图 19. RAM 中的 GoogleChrome 资产的内容
RAM 中的 GoogleChrome 资产的内容

更新软件包

单击 Content 编辑和修改脚本,比如 installgooglechrome.sh,直接在 RAM 中编辑和修改。

图 20. Asset 中的 installgooglechrome.sh 脚本
Asset 中的 installgooglechrome.sh 脚本

如果您这样做,请确保登录到 ICCT 虚拟机,搜索相同缓存脚本,并在 ICCT 虚拟机上进行相应更改。

例如,如果您想要直接在 RAM 中修改 installgooglechrome.sh,在 ICCT 虚拟机上找到它:

idcuser@vhost4244:/> cd /drouter
idcuser@vhost4244:/drouter> find . -name installgooglechrome*
./ramdisk2/mnt/raid-volume/raid0/local/images/789d525e-ad75-4cc1-a25b-360534713d8c
 /artifacts/com.google.chrome_1.0.0/imageBuild/newstep/installgooglechrome.sh
./ramdisk2/mnt/raid-volume/raid0/uploads/be7aa215-f0ab-4d98-8acc-7dc427ee4877
 /installgooglechrome.sh

编辑文件然后进行与 RAM 相同的更改。


结束语

在本文中,您通过一个简单示例学习了如何使用 IBM SmartCloud Enterprise 的 ICCT 创建和维护软件包。在 第 2 部分,我们将向您介绍如何使用 ICCT 构建一个含有相同软件包的映像。

参考资料

学习

获得产品和技术

讨论

  • 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户进行交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Rational
ArticleID=842240
ArticleTitle=IBM SmartCloud Enterprise 管理,第 1 部分: 使用 ICCT 为 VM 创建软件包
publish-date=10222012