在 IBM SmartCloud Enterprise 上创建解决方案: 最佳实践和工具

更有效地管理云企业 IT

软件包是软件安装文件、配置文件和元数据的集合,可以在虚拟机实例上进行部署。在本系列的第一篇文章中,作者提供了有关软件包和镜像管理概念的概述,解释了资源模型,对这个平台与其他软件包管理平台进行了比较,讨论了用例,并调查了可用的工具。本文使用一个能源计算器应用程序示例对相关概念进行了描述。

此系列文章描述了如何在 IBM SmartCloud Enterprise® 上使用软件包、镜像管理和其他工具来解决企业级 IT 管理中的实际问题。

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

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



Alexei Karve, 研究科学家, IBM

Alexei 是 SmartCloud Enterprise 设计团队的成员,专攻云业务支持系统的软件包、ICON 和 VPN/VLAN。他目前在美国。



Andrzej Kochut, 博士及高级研究成员, IBM

Andrew 是 SmartCloud Enterprise 设计团队的成员,专攻云业务支持系统。他目前在美国。



Hidayatullah Shaikh, 高级技术人员, IBM

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



Qiangguo Tong, 资深软件工程师, IBM

Qiang Guo Tong 是一位资深软件工程师,在 Web 开发领域拥有 5 年丰富经验。他是在 IBM 使用的多个全球性工具研发工作的技术领导。



Randy Rendahl, 高级工程师, IBM

Randy 是发明大师兼 SmartCloud Enterprise 设计团队成员。他目前专攻业务支持服务中的计费和收费、业务流程支撑和 BSS 数据模型设计领域。他目前在北卡罗来纳州三角研究园工作。即 1989 年加入 IBM 以来,他长年在系统管理领域的丰富经历为 Randy 在跨云 BSS 技术方面的丰富知识奠定了基础。



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

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



2012 年 4 月 23 日

云计算的目标之一就是让云的消费者能够有丰富的工作资源可以选择;另一个目标则是将镜像团队和软件开发人员的支持任务保持在可管理的水平上。从表面看来,这两个目标似乎互相排斥的,但是本系列文章(参阅 系列概述)将展示如何通过有效地利用和管理软件包和镜像资源同时实现这两个目标。

本文:

  • 提供了软件包和镜像管理概念的概述。
  • 解释了资源模型。
  • 对这个模型与其他软件包管理平台进行了比较。
  • 讨论了用例。
  • 调研了可用工具。

本文将使用一个能源计算器应用程序来阐述相关概念。学习如何实现一个简单的解决方案,包含极少量 Python 代码以及构建 RPM 软件包的指令。请阅读如何在云上的虚拟机中部署该软件包。本系列后续文章将使用同一个示例应用程序更加详细地研究每个工具、API 和用例。

本文适合于那些希望了解如何以可持续方式有效管理云资源的云用户和计划人员。不需要有关编程知识。虽然提供了一些非常短小的脚本示例,但对所需的背景知识都会加以解释。此示例使用了 Linux® 系统,但可能很容易迁移到 Windows® 系统上使用。

此系列文章将描述如何在 IBM SmartCloud Enterprise 上使用软件包、镜像管理,以及其他工具来解决企业级 IT 管理中的实际问题;并使用一个简单的能源计算器示例应用程序演示了可用的不同特性和工具。

未来的主题包括:

  • IBM SmartCloud Enterprise 中的软件包和镜像管理概述。
  • 将镜像导入 IBM SmartCloud Enterprise。
  • 用 ICCT 在 IBM SmartCloud Enterprise 中进行软件包管理。
  • 用 IBM SmartCloud Enterprise API 进行软件包管理。
  • 用 CohesiveFT 在 IBM SmartCloud Enterprise 中进行软件包管理。
  • 用 IBM Workload Deployer 在 IBM SmartCloud Enterprise 中启用企业级服务支撑。
  • 软件包和镜像管理用例总结。
  • 从 IBM SmartCloud Enterprise 复制镜像。
  • 在 IBM SmartCloud Enterprise 上创建企业级服务。

开始前的背景知识

在 IBM SmartCloud Enterprise 的上下文环境中,软件包指的是一组可以在虚拟机实例上进行部署的一组软件安装文件、配置文件和元数据的集合。

在 SmartCloud Enterprise 中,您可以使用 IBM Image Construction and Composition Tool (ICCT)、SmartCloud Enterprise REST API 和第三方工具在创建和管理软件包。

虚拟机镜像中的软件通常是由镜像开发人员预先安装和配置好的。这种 “冷冻” 做法出现的一个问题是,您可能无法找到一个能与您所要软件组合的镜像,因此不得不采取 DIY 方法,即选择一个现成的虚拟机镜像,并在这基础上安装自己的软件。这种做法会造成虚拟机镜像泛滥,在 IT 周期中称为虚拟机镜像蔓延

另一个问题是,为特定用例设计的虚拟机镜像对于镜像开发人员所准备之外的场景没有太大用途。SmartCloud Enterprise 使用虚拟机参数、激活脚本和软件包在 SmartCloud Enterprise 上创建模板镜像,来弥补 “冷冻” 方法和 DIY 方法间的空档。

另一个移植性更好的解决方案是 IBM Image Construction and Composition Tool (ICCT),它是一个独立的工具,可以向虚拟机中添加软件。IBM Workload Deployer 3.1、IBM SmartCloud Provisioning 1.2 和 IBM SmartCloud 现在均包含 ICCT。ICCT 将镜像存储为 Open Virtual Format Archive OVA 软件包,此软件包可以用 IBM Workload Deployer 3.1、IBM SmartCloud Enterprise 和 VMware 产品进行部署。

虚拟机镜像可以包含:

  • 操作系统
  • 中间件
  • 应用程序
  • 特定于用户的配置

往镜像添加更多的内容,镜像的重用性就越差;单个镜像的重用性越差,最终就越有可能生成更多的镜像。这个概念虽然很浅显,但却是一个重要的概念,往镜像包含越少的内容,对于云用户来说您的镜像用处就越低。

决定要在镜像中包含什么内容以及如何将其制作成镜像模板,是镜像开发艺术的两个基本任务。


SmartCloud Enterprise 资源模型

图 1 显示了一个简化的逻辑资源模型。

图 1. 镜像和软件包资源模型
镜像和软件包资源模型

表 1 描述了资源、属性和关系。

表 1. 资源描述、属性和关系
资源描述属性和关系
镜像二进制文件,可以存储并实例化为虚拟机实例和描述它的元数据。镜像存储在一个 “位置”。状态指示它是否可用或者正在进行某种转变。可以将镜像实例化以创建一个实例。
位置存储物理机器的数据中心或位置。镜像、实例和 VLAN 必须协同定位。
实例虚拟机。配置流程采用一个镜像、一个 InstanceType,以及(可选的)地址和卷作为输入,以创建运行实例。状态指示它是否处于运行状态或其他状态。
InstanceType与虚拟机相关联的资源模板。虚拟 CPU 数量、内存、磁盘和架构(32 位或 64 位)。
SoftwareBundle安装与激活脚本,以及(可选的)可安装的二进制文件和其他资源。可以添加到镜像的 SoftwareBundle。实例化镜像时,将 SoftwareBundle 和激活脚本插入虚拟机文件系统。
虚拟块的存储设备,可以用来存储数据和镜像。卷可以在配置或稍后运行中附加到实例。只有卷附加到实例上,才能访问卷上的数据。
地址代表可以作为独立资源管理的 IP 地址。地址可附加到实例上。地址总与某个 VLAN 关联。
VLAN虚拟局域网或子网。VLAN 可以是公共的,也可以是私有的,但只允许通过 VLAN 或多宿主虚拟机进行连接。
密钥代表一个 SSH 密钥;密钥应由用户保管;云提供公钥,并允许用户在需要时生成新密钥。密钥会在配置时和启动前嵌入虚拟机。

软件包管理系统

管理软件包是计算系统管理的关键方面,云系统的管理也包含在内。在云上下文环境中,软件包管理比较特殊,因为与之交互的是动态配置虚拟机实例。在这种情况下,既能够动态地配置其他软件,又会让用户产生系统 “工作正常” 的期望。

云软件包管理系统在概念上与软件包管理系统类似,可以看成是与操作系统和一些软件开发平台包的软件包管理系统。

本节简要介绍 Linux 软件包管理系统,并将它应用到云系统。本节采用了一个简单示例,用 Python 创建一个软件模块,将此软件模块包为 RPM,然后在配置时将其插入到基于云的虚拟机。

RPM 和 YUM 软件包管理

Red Hat Package Manager (RPM) 是由 Red Hat 于 20 世纪 90 年代开发的,它是 Linux 标准基础的组成部分。此外,它还被移植到了其他操作系统上,例如 IBM AIX®:

  • 它有助于维持软件包之间的一致性
  • 可以用来获得已安装的软件包的信息
  • 使用密码签名对软件包进行身份验证
  • 更新已经安装的软件包
  • 可以从 Internet 获取软件包

RPM 有多个前端,包括 Yellow Dog Updater Modified (YUM)、up2date、Zypper 以及 Smart Package Manager。RPM 主要用在 Red Hat Enterprise Linux、CentOS 和 Fedora 上。基于 Debian 的系统(包括 SUSE 和 Ubuntu)均使用了 Debian 软件包管理。

YUM 是杜克大学为管理 Red Hat Linux 系统而开发的 RPM 前端。YUM 为 RMP 提供了额外的功能,例如自动更新与依赖项管理,而且使用中央软件包存储库。虽然 RPM 可以理解依赖项,但并不能解决依赖项。YUM 为这个问题提供了极大的帮助。

要使用 rpm 命令安装软件包,请使用 -i 选项:

# rpm -i <package-name>

如果有必需的依赖项,则 rpm 命令会失败。必须有 root 权限才能安装、删除或更新软件包。

要用 YUM 安装软件包,请使用 yum 命令和 install 选项。例如,要安装 dos2unix

# yum install dos2unix

如果存在依赖项,则 YUM 会自动安装依赖项。

Debian 软件包管理

Advanced Packaging Tool (APT) 是 Debin 系统使用的软件包管理系统,其中多包括 SUSE 和 Ubuntu。正如 RPM 和 YUM 一样,软件包数据也存储在中央数据库中。

您可以使用 apt-get install 命令安装软件包。要安装 dos2unix 软件包:

# apt-get install dos2unix

apt-get 在远程存储库中查找软件包信息,确定依赖项,下载软件包,并安装软件包。

Python 模块

Python 拥有模块分布和安装的内置功能。从安装和使用 Python 软件的角度看,这个功能很容易使用,只要下载一个模块,进行解压缩,并执行设置命令即可。对于演示示例软件的分布和管理流程来说,Python 是一种方便的语言。对于理解本文来说,除了本节介绍的内容之外,对 Python 不需要有其他任何了解。

在开始之前,我们先列出一些基本的 Python 代码重用术语,如表 2 所示。

表 2. Python 代码重用术语
术语说明
模块Python 中的可重用代码单元。
纯 Python 模块使用 Python 编写的模块,包含在名为 “module.py” 的文件中。
软件包包含一个或多个纯 Python 模块以及一个 __init__.py 初始化文件的目录。
扩展模型使用 C/C++ 或 Java™ 代码为 Jython 编写的模块。
分布模块作为单一资源的分布模块集合。这个概念相当于其他许多平台上的软件包,是一般通用术语。

要安装一个 Python 模块:

# python setup.py install

安装通常由 root 进行,模块通常安装在 {INSTALL_ROOT}//site-packages 目录下,例如 /usr/lib/python2.6/site-packages。除此之外,您也可以以常规用户身份使用下列命令将 Python 模块安装在用户主目录树中:

$ python setup.py install --user

Python 提供了 Distutils 工具包来帮助模块作者分布他们的软件,使他们的软件支持这些命令。


示例代码:一个 Python 分布模型

让我们创建一个 Python 模块,一个安装脚本,并安装模块以进行测试。此软件包是一个名为 ecalc 的能源计算器,只包含一个 energy_calculator 模块以及 EnergyCalculator 类。在这个简单的示例中,代码只是输出一些样例数据;但是,很容易将相同的概念应用到对高度组织的软件包管理系统有需求的更复杂场景中。

EnergyCalculator 类的代码如下所示:

# energy_calculator.py
"""
energy_calculator module for computing energy usage
"""

class EnergyCalculator:
    """EnergyCalculator class"""

    def __init__(self):
        self._base = 200

    def energy_used(self):
        return self._base

要从能源计算器的客户端调用它:

#!/usr/bin/python
# energy_client.py

""" EnergyCalculator client """

from energy_calculator import EnergyCalculator

ec = EnergyCalculator()
print("You used {0} kJ today".format(ec.energy_used()))

在调用时,示例输出为:

$ ./energy_client.py
You used 200 kJ today

首先,创建设置脚本:

# setup.py
# Setup script for libenery

from distutils.core import setup
setup(name='libenergy',
      version='0.1',
      py_modules=['energy_calculator'],
      )

接下来,创建分布模块:

$ python setup.py sdist

上述示例中的设置脚本命令创建一个源分布包。它会创建一个 dist 目录,内含一个可以用来安装包的压缩文件 libenergy-0.1.tar.gz。其中不包含客户端脚本 energy_client.py。它会警告遗漏了作者、URL、README 等信息。此命令还在 TAR 文件中的 MANIFEST 文件里创建一个清单。要将 libenergy-0.1.tar.gz 文件复制到目标计算机,请使用安全复制命令:

$ scp -i ${key} libenergy-0.1.tar.gz idcuser@${vm}:libenergy-0.1.tar.gz

此命令假设您的工作环境为 Linux。在 Windows 工作环境也一样,但需要安装 scp 命令。该命令包含在 OpenSSH 中。它使用 SSH 密钥 ${key} 将文件复制到带有主机名称或 IP 地址的虚拟机 ${vm},作为 idcuser。定义 Shell 变量,以避免重复输入这些值。然后在 dist 目录中执行此命令进行远程解绑和安装:

$ ssh -i ${key} idcuser@${vm} 'gunzip libenergy-0.1.tar.gz; 
 tar -xvf libenergy-0.1.tar; cd libenergy-0.1; sudo python setup.py install'

此 SSH 脚本进行远程执行,以解压缩包,并使用 sudo 命令以 root 身份安装它。远程命令括在单引号内,以分号 (;) 进行分隔。

现在您已经在目录计算机上安装了 energy_calculator 模块,接下来就可以用下面的脚本在客户端程序中调用模块:

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

这些命令首先复制客户端脚本,然后执行客户端脚本。请在包含客户端脚本的目录中执行这些命令。

对于刚刚取得的成绩,我们稍做总结:

  • 编写了一个 Python 示例模块,一个执行示例模块的客户端脚本。
  • 创建了模块的安装包。
  • 使用 SSH 在一台虚拟机上远程安装了这个模块。
  • 使用客户端脚本在虚拟机上远程调用了这个模块。

还不错,尤其是目前为止您正在这个示例中编写和使用 “您” 自己的软件。但是,这是一个简单的示例,有许多明显的不足之处:

  1. 使用者必须知道如何安装 Python 模块。我们希望能够使用同样的方法来安装以其他语言编写的软件包。
  2. 对于 Python 程序员之外的人来说,找到它和更新它都不太方便。
  3. 它没有说明前提条件,例如需要何种类型和级别的操作系统和 Python。
  4. 为避免镜像蔓延问题,我们希望从云控制台来安装它,并将软件包插入虚拟机中。至少,除了编写看起来复杂的 bash 脚本之外,还应该有其他选项,例如这个示例中的作法。

在理想情况下,您应该能够在虚拟机配置时或在您需要执行自动更新时将这个能源计算器模块插入虚拟机中。


用 RPM 安装 Python 模块

Python 拥有一些附加工具,可以帮助您创建 Red Hat Package Management (RPM)、Windows 以及其他格式的安装包,以克服我们刚提及的前 3 项缺点。在编写激活和启动脚本时,这些格式更为方便。

本文介绍如何编写激活脚本,以测试是否已经安装了能源计算器。如果没有安装,则可以使用 rpm 命令进行安装。

要创建一个 RPM 软件包:

$ python setup.py bdist_rpm

此命令在 dist 目录中创建了一个 RPM 软件包 libenergy-0.1-1.noarch.rpm。请使用 scp 命令将它复制到目标虚拟机:

$ scp -i ${key} libenergy-0.1-1.noarch.rpm idcuser@${vm}:/tmp/libenergy-0.1-1.noarch.rpm

安装能源计算器模块:

$ sudo rpm -i /tmp/libenergy-0.1-1.noarch.rpm

rpm 命令检查模块是否安装,再次运行以上命令不会进行重复安装。

通过运行能源计算器客户端 energy_client.py 检查模块是否已经安装。接下来,在云中配置虚拟机时,您可以使用此 RPM 文件和命令将能源计算器模块插入到虚拟机中。


用 SmartCloud Web 门户克隆镜像

手动创建软件包的过程不像使用 ICCT 之类的工具这样简单,但手动过程确实详细地展示了软件包的过程,但使用 SmartCloud Enterprise API 可以将这个过程变成自动过程。鉴于此,我们将首先讨论手动过程。

第一步所要做的是,创建一个属于自己的镜像。这需要编辑元数据并添加文件,这些文件会在虚拟机根据镜像进行配置时插入虚拟机中。这里有两种方法可以实现此目标:

  1. 启动一个虚拟机实例,根据自己的需要进行定制,包括安装需要的软件。
  2. 克隆现有镜像。

之所以介绍镜像克隆,因为它是自动化和构建镜像管理工具最适宜的方法。

要克隆一个镜像:

  1. 单击 Control Panel | Images 页面上的 Add Image 按钮,打开基镜像窗口。
    图 2. 在 SmartCloud Web 门户中克隆镜像
    在 SmartCloud Web 门户中克隆镜像
  2. 单击 Next 按钮,打开向导的第 2 步。
    图 3. 克隆镜像向导的第 2 步
    克隆镜像向导的第 2 步
  3. 为克隆的镜像输入名称和说明。在向导的第 3 步确认数据无误,单击 Next 按钮。
  4. 同意第 4 步提出的条款,单击 Submit 按钮。镜像克隆需要几分钟完成,然后显示在控制面板的资产目录中。

资产目录中镜像资产的内容看起来与图 4 类似。

图 4. 包含在资产存储库中的克隆镜像文件
包含在资产存储库中的克隆镜像文件

这些文件中包括一个 parameters.xml,该文件描述了建模镜像拓扑结构的输入参数和文件。您最感兴趣的是 activation_scripts 文件夹,如图 5 所示。

图 5. activation_scripts 文件夹中的文件
activation_scripts 文件夹中的文件

在配置期间将安装脚本插入虚拟机

前一节克隆的镜像内容在资产目录中的样子如下图所示:

图 6.资产存储库中克隆镜像的文件
资产存储库中克隆镜像的文件

这些文件中包括一个 parameters.xml,该文件描述了建模镜像拓扑结构的输入参数和文件。您最感兴趣的是 activation_scripts 文件夹,如图 7 所示。

图 7. activation_scripts 文件夹中的文件
activation_scripts 文件夹中的文件

在配置期间将文件插入虚拟机的关键是 scripts.txt 文件。这是来自克隆 RHEL 6 镜像的 scripts.txt 文件:

cloud-startup3.txt=/etc/init.d/cloud-startup3.sh
activate.txt=/etc/cloud/activate.sh

结果是,cloud-startup3.txt 文件被插入到虚拟机作为 /etc/init.d/cloud-startup3.sh,activate.txt 文件作为 /etc/cloud/activate.sh。

要将自己的文件插入虚拟机:

  1. 下载 activation_scripts 文件夹中的文件,将它们放在一个同名文件夹中。
  2. 将 libenergy-0.1-1.noarch.rpm 文件添加到文件夹。
  3. 创建 libenergy-activate.sh 脚本:
    /usr/bin/logger 'installing libenergy-0.1'
    rpm -i /tmp/libenergy-0.1-1.noarch.rpm  2> /tmp/energy.log
    /usr/bin/logger < /tmp/energy.log
  4. 在使用 UNIX 样式的行分隔符或运行 dos2unix 实用工具时要小心。您希望将这个脚本复制到虚拟机,并在启动时执行。为此,请将它添加到 activation_scripts 文件夹。请按下面编辑 scripts.txt 文件:
    cloud-startup3.txt=/etc/init.d/cloud-startup3.sh
    activate.txt=/etc/cloud/activate.sh
    libenergy-0.1-1.noarch.rpm=/tmp/libenergy-0.1-1.noarch.rpm
    libenergy-activate.sh=/home/idcuser/libenergy-activate.sh
  5. 从云启动脚本 cloud-startup3.sh 中调用脚本。请编辑 cloud-startup3.sh 脚本,并添加粗体代码行,如下所示:
        start)
            echo "== Cloud Starting"
            if [ ! -e /etc/cloud/idcuser_pw_randomized ]; then
                echo "Randomizing idcuser password"
                echo idcuser:'< /dev/urandom tr -dc _A-Z-a-z-0-9 |head -c16' | 
    			 /usr/sbin/chpasswd
                touch /etc/cloud/idcuser_pw_randomized
            fi
            /sbin/restorecon -R -v /home/idcuser/.ssh
            chmod +x /home/idcuser/libenergy-activate.sh
            /home/idcuser/libenergy-activate.sh
            ;;
  6. 压缩这个文件夹,调用生成文件 activation_scripts。编辑克隆镜像的镜像资产并上载 ZIP 文件。文件会在上载过程中解压缩。

要测试克隆和修改过的镜像,请根据克隆镜像配置一个虚拟机;通过运行能源计算器客户端 energy_client.py 来检查模块是否已安装,如下所示:

$ scp -i ${key} energy_client.py idcuser@${vm}:energy_client.py
$ ssh -i ${key} idcuser@${vm} './energy_client.py'
You used 200 kJ today

如果没有看到输出 You used 200 kJ today,那么请在消息日志文件 /var/log/messages 中查找错误。

目前为止,您已经学习了如何在不安装运行虚拟机的情况下将软件模块插入虚拟机。这里只是启动了虚拟机来验证结果。从云的镜像管理自动化角度来说,这是一大飞跃,是帮助用户管理虚拟机镜像工具的基础。

下一节将介绍如何使用其中一些工具,以及如何使用 API 更有效地执行自动化。另外需要注意的是,前面并没有在云中创建一个独立的软件包资源,只是直接将 RPM 安装文件和安装脚本与资产存储库中的虚拟镜像元数据合并。下面我们要讨论基于云的软件包资源。


创建组合软件包

要创建组合软件包。请下载并修改 SmartCloud 资产目录提供的模板之一。在资产目录中,请在左侧 Composable Software Bundles 栏中寻找搜索链接(见图 8)。浏览返回的搜索结果。

图 8. 组合软件包的部分搜索结果
组合软件包的部分搜索结果

有许多不同的包可用作模板。请使用 Asset Manager Clone 按钮克隆和修改包。这样就可帮助您创建可用在您自己自动化工具中实现虚拟镜像共享的资源,但是这些资源只有您自己能看见。要创建广泛重用的软件包,您需要使用 ICCT 或其他工具注册它们。


使用 ICCT 管理软件包

ICCT 包含在 IBM SmartCloud Enterprise 镜像目录中,能够运行在云上。要使用 ICCT,请打开 SmartCloud Enterprise 控制面板:

  1. 选择 Instance,单击 Add Instance 按钮。
  2. 选择一个数据中心,从目录中选择 ICCT 镜像,使用配置向导配置一个新实例。
  3. 输入 ICCT 用户名和密码。配置虚拟机实例后,您可以使用 Getting Started 页面中的链接登录。
  4. 登录 ICCT 后,单击 Build and Manage Software Bundles 链接。
  5. 左侧面板有一个名为 Enablement Bundle for SmartCloud Enterprise 的包。如果您计划使用 ICCT 或 SmartCloud Enterprise 软件包 API,您应该扩展这个包以创建您自己的软件包。

结束语

在本文中,我们通过一个简单的示例大致了解了 IBM SmartCloud Enterprise 中的镜像和软件包功能。在后续的文章中,我们将使用具有其他功能的工具在这个示例基础上构建更加复杂版本的示例,并自动化这里所执行的许多手动任务。

参考资料

学习

获得产品和技术

  • 查看在 IBM SmartCloud Enterprise 上可用的 产品镜像

讨论

条评论

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, Linux
ArticleID=811480
ArticleTitle= 在 IBM SmartCloud Enterprise 上创建解决方案: 最佳实践和工具
publish-date=04232012