IBM SmartCloud Enterprise 管理,第 2 部分: 通过 ICCT 使用和维护软件包

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

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 中使用的多个全球化工具的技术领导。



2012 年 10 月 23 日

本文将介绍如何维护 IBM SmartCloud Enterprise 上的软件包,通过一个示例来介绍使用一个预先安装的软件包捕获一个新私有映像以及在 Linux® 虚拟机使用该软件。您应该对云计算概念有一个基本了解。要尝试本文的步骤,需要一个 IBM SmartCloud Enterprise 用户帐户。

IBM SmartCloud Enterprise 管理,第 1 部分:使用 ICCT 为 VM 创建软件包 中,您已经学习了如何为 IBM SmartCloud Enterprise 的虚拟机创建软件包。现在,您将使用这些软件包创建一个自定义映像。我们直接开始吧!

创建一个自定义映像

  1. 转到 ICCT UI,单击 Images > Build Images。您也可以回到 Welcome 页面并单击 Build and Manage Images
    图 1. 使用 ICCT 构建映像
    使用 ICCT 构建映像
  2. 单击 Import from Cloud Provider
  3. 在左侧面板中选择 RedHat Enterprise Linux 6 64-bit,然后单击 Add 将其添加到 Image 来导入面板。单击 Import
    图 2. 导入 RedHat Enterprise Linux 6 64-bit 映像
    导入 RedHat Enterprise Linux 6 64-bit 映像
  4. 导入映像元数据并在左侧窗格中列出。选择该映像,在右侧窗格中查看映像详细信息。
    图 3. RedHat Enterprise Linux 6 64-bit 的详细信息
    RedHat Enterprise Linux 6 64-bit 的详细信息
  5. 在右侧窗格中单击 Extend 图标。输入信息并单击 Create。左侧窗格中出现一个新 Image Design。
    图 4. 展开映像
    展开映像
  6. 在右侧窗格中,单击 Start Editing。映像状态消息显示 “Out of Sync”。展开 Software Bundles 部分,添加第 1 部分创建的 Google Chrome 软件包。
    图 5. 展开 Software Bundles
    展开 Software Bundles
  7. 单击 Add Bundle。出现一个对话框,您可以在其中选择与该映像兼容的软件包。Google Chrome 也位于其中。
    图 6. 将 Google Chrome 软件包添加到映像
    将 Google Chrome 软件包添加到映像
  8. 选择 Google Chrome 并单击 Add
    图 7. 添加到映像设计的 GoogleChrome
    添加到映像设计的 GoogleChrome
  9. 单击 SaveDone EditingSynchronize。出现协议页面。注意本地 Enablement 软件包由 ICCT 默认添加。单击 I agree,然后单击 Done
    图 8. 同步映像
    同步映像
  10. ICCT 调用 SmartCloud API 以配置基础映像。实例创建之后,ICCT 将下载和安装软件包。登录到 SmartCloud Portal 以查看该实例。您可以看到临时实例请求(参见映像名 RHEL6WithGoogleChrome 后具有一个惟一 ID 的名称),然后在 SmartCloud Portal 中查看配置状态。配置实例后,可能需要刷新 Control Panel 来查看列表中的软件包。
    图 9. 同步之后在 SmartCloud 中配置实例
    同步之后在 SmartCloud 中配置实例
  11. 创建临时实例时,该示例在 SmartCloud 门户中的状态变为 Active。
    图 10. 同步之后在 SmartCloud 中配置的实例
    同步之后在 SmartCloud 中配置的实例
  12. 实例状态为 Active 后,ICCT 开始安装软件包。您可以返回到 ICCT GUI 并单击 Refresh,对图像进行刷新。该图像状态显示 Synchronizing,并出现以下描述 “Installing execution package on VM”。
    图 11. 在 Image Construction and Composition Tool 中刷新映像状态
    在 Image Construction and Composition Tool 中刷新映像状态
    图 12. ICCT 中同步失败
    ICCT 中同步失败

    如果出现一个错误,登录到临时实例,在 RAM 和 ICCT 脚本中检查并修复错误。再次单击 Synchronize。旧临时实例删除,ICCT 创建一个新临时实例。

    图 13. ICCT 中成功的同步
    ICCT 中成功的同步

当 ICCT 完成软件包安装后,映像状态被更新为 Synchronized。您可以登录到该实例,并检查 Google Chrome 是否安装。使用 ${SmartCloud_VM} 检查 SmartCloud Portal 上临时实例的 IP 地址,这样您就可以使用 SSH 作为 idcuser 访问该实例。


验证 Google Chrome 是否运行

要验证 Google Chrome 是否在该临时实例上运行:

  1. 在该实例上启动 vncserver,并打开端口 5901。使用 vncviewer 连接,并启动 Google Chrome。使用您的 IP 地址作为指令,而不是代码中显示的那个。
    ssh idcuser@${SmartCloud_VM}
    Last login: Fri Mar  2 14:43:35 2012 from vhost4244.site2.compute.ihost.com
    [idcuser@vhost0134 ~]$ vncserver -geometry 1280x1024 -depth 16
  2. 访问您的桌面需要密码。
    Password:
    Verify:
    xauth:  creating new authority file /home/idcuser/.Xauthority
    
    New 'vhost0134:1 (idcuser)' desktop is vhost0134:1
    
    Creating default startup script /home/idcuser/.vnc/xstartup
    Starting applications specified in /home/idcuser/.vnc/xstartup
    Log file is /home/idcuser/.vnc/vhost0134:1.log
    
    [idcuser@vhost0134 ~]$ sudo iptables -I INPUT -m state --state NEW -p
     tcp --destination-port 5901 -j ACCEPT
  3. 运行 vncviewer ${SmartCloud_VM}:1start /opt/google/chrome/google-chrome 以验证它是否运行。

为了安全起见,不要使用上述流程,您可能想要在一个 SSH 隧道上启动 VNC,就像这样:

ssh -i ~/.ssh/key_name -L 5901:${SmartCloud_VM}:5901 idcuser@${SmartCloud_VM}

然后运行 vncviewer localhost:1start /opt/google/chrome/google-chrome 验证它是否运行。

图 14. 在 SmartCloud 实例中启动 Chrome
在 SmartCloud 实例中启动 Chrome

关闭 Google Chrome。对于您想要持久化到该实例的部分进行进一步手动更改,然后退出该示例。


捕获一个映像

现在,临时实例按预期运行,将该实例捕获为一个映像,以避免在稍后的部署过程中重新安装 Google Chrome。

  1. 在 ICCT 中单击 Capture 按钮。ICCT GUI 中的镜像状态进入正在同步。
    图 15. 在 ICCT 中使用 Capture 创建映像
    在 ICCT 中使用 Capture 创建映像
  2. 在 SmartCloud Portal 中,临时实例的 Instance 选项卡会得到镜像正在保存的通知。
    图 16. 映像保存通知
    映像保存通知

    这将启动一个对包含预先安装 Google Chrome 的新私有映像的捕获。

  3. 在 SmartCloud Portal 中的 Image 选项卡上,新私有 RHEL6WithGoogleChrome 映像处于被捕获状态。
    图 17. 在 SmartCloud 中捕获映像
    在 SmartCloud 中捕获映像

    一个新映像被捕获完成后,就可以直接从 SmartCloud Portal 捕获的映像创建一个新实例。ICCT 自动删除临时实例。

  4. 如果该映像显示状态为 Captured,刷新 Control Panel,返回到 Images 选项卡并选择已捕获的映像查看该映象的软件包。映像成功捕获之后,当 ICCT 更新 RAM 映像资源的 Semantic Topology 文件时软件包将被更新。
    图 18. SmartCloud 提供的映像
    SmartCloud 提供的映像

    包含预安装 Google Chrome 的映像现在可供创建新实例。

  5. 在 ICCT 中单击 Refresh 图标时,应该可以看到映像状态为 Capture Complete。
    图 19. ICCT 捕获完成
    ICCT 捕获完成
  6. 您可以在 RAM 中查看 RHEL6WithGoogleChrome 映像(Template Topology 资产)的详细信息。
    图 20. RAM 中 Template Topology 资产的一般细节信息
    RAM 中 Template Topology 资产的一般细节信息
  7. 看一下这个拓扑文件 Rhel6.1_x64.topology,可以看到 GoogleChrome SoftwareBundle 资产链接以及 RAM UUID 和版本。
    图 21. 资产语义拓扑文件
    资产语义拓扑文件
    清单 1. 资产语义拓扑文件
    <core:unit uuid="_z79cOWSIEeG4Dsea31AM7A" name="bundle_455977"
     goalInstallState="installed" initInstallState="installed">
        <core:capability uuid="_z79cOmSIEeG4Dsea31AM7A" name="cap" linkType="any">
          <core:extendedAttribute uuid="_dZzakWSpEeG4Dsea31AM7A" name="symbolicName">
            <core:data xsi:type="xsd:string" uuid="_z79cO2SIEeG4Dsea31AM7A">
             <strong>com.google.chrome</strong>
            </core:data>
          </core:extendedAttribute>
          <core:extendedAttribute uuid="_dZzakmSpEeG4Dsea31AM7A" name="version">
            <core:data xsi:type="xsd:string" uuid="_z79cPGSIEeG4Dsea31AM7A">
             1.0.0
            </core:data>
          </core:extendedAttribute>
          <core:extendedAttribute uuid="_dZzak2SpEeG4Dsea31AM7A" name="bundleName">
            <core:data xsi:type="xsd:string" uuid="_z79cPWSIEeG4Dsea31AM7A">
             <strong>GoogleChrome</strong>
            </core:data>
          </core:extendedAttribute>
          <core:extendedAttribute uuid="_dZzalGSpEeG4Dsea31AM7A" name="bundleRepoId">
            <core:data xsi:type="xsd:string" uuid="_z79cPmSIEeG4Dsea31AM7A">
             <strong>ryo-asset://07356E0D-3868-1709-0F95-AD9FF0355FF4_1.0.0@
             https://www-147.ibm.com/cloud/enterprise/ram.ws</strong>
            </core:data>
          </core:extendedAttribute>
        </core:capability>
  8. 使用 REST API 检索附加到捕获映像的 SwBundles 清单:
    清单 2. 使用 REST API 检索 SwBundles 清单
    curl -k -H 'Accept: application/json' -u <userid7gt;:<password>
     https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/
      offerings/image/${imageId}/swbundle
    where imageId is  20045166
    
    {"SwBundleImageDetails":
     [
      {"SwBundleNum":1,"SwBundlePricingDetails":
      {"rate":0,"unitOfMeasure":"UHR","countryCode":"897","effectiveDate":1313107200000,
       "currencyCode":"USD","pricePerQuantity":1},
      "RamUuid":"07356E0D-3868-1709-0F95-AD9FF0355FF4",
      "RamVersion":"1.0.0","name":"GoogleChrome","id":"2909","description":
      "Install Latest Google Chrome using yum"}
     ]
    }

创建一个实例

要使用捕获的映像创建一个实例:

  1. 连接到 SmartCloud Portal。在 Image 选项卡上选择该映像并单击 Create Instance
    图 22. 在 SmartCloud 中创建实例
    在 SmartCloud 中创建实例
    图 23. 接受协议
    接受协议
  2. 注意协议页面中显示的映像名和软件包。单击 Submit
    图 24. 将实例请求提交到 SmartCloud
    将实例请求提交到 SmartCloud
  3. 实例配置后,就可以验证 Google Chrome 是否像之前验证的临时实例那样运行。注意,如果您不能在捕获之前关闭浏览器,可能需要删除 /home/idcuser/.config/google-chrome/SingletonLock。
    图 25. SmartCloud 上实例创建成功
    SmartCloud 上实例创建成功

最终的想法和考虑

软件专家必须确保 bash 脚本第一行指定 bash 解释器的位置,表示为 #!/bin/bash。触发配置执行并重置脚本的 Virtual System Activation Engine (VSAE) 要求指定解释器位置;否则,脚本不能执行。

如果软件专家选择在 Windows 平台上编写脚本,他们就必须确保在将脚本上传到 ICCT 之前该脚本上有一个 dos2unix 工具或类似工具在运行。

虚拟映像创建过程中软件包由 ICCT 下载并安装在一个实例上。配置过程中 Composable Software Bundle RAM 资产不能由 SmartCloud 自动复制到该实例;然而 SmartCloud 允许将文件从 Template Topology(映像)资产复制到该实例,因此可以通过更新 Template Topology 映像 RAM 资产追加手动自定义。

Google Chrome 映像不需要任何进一步定制。但是,如果您希望在配置过程中对该实例稍加修改,而无需使用 ICCT 重捕获一个新映像,可以创建该映像的一个副本和/或更新已捕获映像的 Template Topology 资产。

Template Topology 资产中的所有激活脚本必须打包到 IBM Rational 资产目录下该资产的 activation_scripts 文件夹中。该文件夹必须包含一个 scripts.txt 文件,描述构成该实例所需的其他文件以及它们的存储位置。scripts.txt 文件为激活脚本定义名称-值对,名称是您实际使用的文件名,值是完整路径和该实例上您想要的文件名。以下示例是 Linux NFS 服务器映像的 scripts.txt 文件:

run_once.txt=/etc/init.d/cloud-startup3.sh
config.txt=/etc/cloud/nfs_config.pl

实例启动之前,activation_scripts 文件夹中的脚本文件和 scripts.txt 引用的脚本文件将被复制到该实例的指定目录下,如果一些脚本文件在您映像的文件系统中已经存在,那么它将被 IBM Rational 资产目录中的这一文件覆盖。


结束语

这两篇文章中,您已经通过一个简单的示例学习了如何使用 IBM SmartCloud Enterprise 上的 ICCT 创建和维护一个软件包;您也看到了如何使用 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=842278
ArticleTitle=IBM SmartCloud Enterprise 管理,第 2 部分: 通过 ICCT 使用和维护软件包
publish-date=10232012