IBM Systems Director VMControl 资源生命周期管理: 第 2 部分

使用 VMControl REST API 执行远程虚拟设备生命周期管理

IBM® Systems Director 是一个平台管理解决方案,用于管理多系统环境中的物理和虚拟系统。该解决方案支持各种各样的虚拟化技术,以及跨 IBM 和非 IBM 平台的多种操作系统。IBM Systems Director VMControl 是 IBM Systems Director 的一个高级管理器,一组可免费拥有的平台管理工具。本教程是一个 VMControl 资源生命周期管理系列的一部分。本教程介绍使用 VMControl 具象状态传输 (REST) 应用程序编程接口 (API) 进行虚拟设备生命周期的管理。

Piyush Jain, 高级软件工程师, IBM China

http://www.ibm.com/developerworks/i/p-pjain.jpgPiyush Jain 是 IBM 的一名高级软件工程师,目前主要致力于 IBM Systems Director 中的 VMControl,这是 IBM 产品组合中的一个重要产品。他有 5 年的从业经验,从印度卡纳塔克邦的 IET Alwar 获得了信息技术工程学士学位。



Nicholas Schambureck, 咨询软件工程师, IBM China

/developerworks/aix/library/au-aix-vmcontrol-lifecycle-1/nick_64x80.jpgNick Schambureck 是一名咨询工程师,也是 IBM Systems Director VMControl 命令行界面和 REST API 团队的负责人。他自该项目一开始的时候就一直从事该项目的工作。



Poornima Soundararajan, 软件工程师, IBM China

/developerworks/aix/library/au-aix-vmcontrol-lifecycle-1/poornima_64x80.jpgPoornima Soundararajan 是一名软件工程师,从事 IBM Systems Director VMControl 高级管理器的开发。Poornima 在 Java/J2EE 技术方面拥有超过 7 年的工作经验。



Aparna Khare, 系统软件工程师, IBM China

/developerworks/aix/library/au-aix-vmcontrol-lifecycle-1/aparna_64x80.jpgAparna Khare 是一名系统软件工程师,从事 IBM Systems Director VMControl 高级管理器的开发工作。Aparna 在 Java/J2EE 技术方面拥有 4 年的工作经验。



2013 年 7 月 18 日

开始之前

了解您期望从本教程学到什么,以及如何充分利用本教程。

关于本系列

IBM Systems Director VMControl 高级管理器简化了跨多种虚拟化技术和硬件平台的虚拟环境的管理。VMControl 是一个领先的多平台虚拟化管理解决方案,包含在各种 IBM Systems Director 版本中。VMControl 支持 3 种类型的接口(GUI、CLI 和 REST API)。本系列通过 REST 探讨 VMControl 资源生命周期。

本系列包含以下生命周期:

  • 通过 VMControl REST API 执行虚拟服务器生命周期管理:介绍一个虚拟服务器的生命周期(创建、查看、编辑和删除)管理。其中着重强调了 VMControl Express Edition(VMControl 的免费部分)的功能。
  • 通过 VMControl REST API 执行虚拟设备(appliance)生命周期管理:介绍一个虚拟设备的生命周期管理。虚拟设备是一种操作系统映像和元数据的集合,能够远程安装(部署)在新的或现有的虚拟服务器上。
  • 通过 VMControl REST API 执行映像部署:介绍一种典型的部署流程,以及使用此部署流程创建的工作负载的生命周期管理。
  • 通过 VMControl REST API 执行服务器系统池生命周期管理:介绍一个服务器系统池的生命周期管理及其虚拟服务器重新部署功能。服务器系统池是一组类似的物理服务器(主机) - 一个由 VMControl 实现的云。VMControl 选择要部署到哪个主机,并允许在服务器系统池内重新部署虚拟服务器。

本系列将通过 REST 帮助所有 VMControl 用户理解 VMControl 功能。本系列还将帮助理解资源生命周期的详细流程。

关于本教程

本教程演示使用 VMControl REST API 的虚拟设备生命周期。虚拟设备的生命周期拥有以下主要功能:

  • 创建映像存储库来存储虚拟设备
  • 通过捕获(Capture)创建虚拟设备
  • 通过导入(Import)创建虚拟设备
  • 修改虚拟设备
  • 删除虚拟设备

图 1 通过不同的REST 请求顺序详细解释了虚拟设备生命周期。

图 1. 虚拟设备生命周期管理
虚拟设备生命周期管理

目标

本教程的主要目的是帮助用户理解使用 VMControl REST API 的虚拟设备生命周期管理。本教程将描述结合使用 VMControl REST API 与 IBM System Director VMControl 实现完整的生命周期管理。拥有虚拟设备和 IBM Systems Director VMControl 的基本知识的用户可轻松掌握本教程。

前提条件

阅读本教程之前,您应已在系统上安装了 IBM Systems Director V6.x.x。本教程假设您熟悉 IBM Systems Director 的使用。本文还假设您已适当地了解了 JavaScript Object Notation (JSON),以及如何使用您最熟悉的 HTTP 客户端执行 HTTP GETPOSTPUTDELETE 调用。

系统需求

您的系统上应拥有以下组件。

  • 一个已安装和配置的 IBM Systems Director
  • 已激活的 IBM Systems Director VMControl 高级管理器
  • 用于运行远程请求的 HTTP 客户端

创建映像存储库

要管理 IBM Systems Director VMControl 环境中的虚拟设备和工作负载,第一步是创建一个映像存储库。

  • 基于内核的虚拟机 (KVM) 允许在网络文件系统 (NFS) 的存储或存储区域网络 (SAN) 存储的基础上创建映像存储库。
  • 在 IBM AIX® 上,有两个选项:网络安装管理 (Network Installation Management, NIM) 映像存储库和虚拟 I/O 服务器 (Virtual I/O Server, VIOS) 映像存储库。可在一个 AIX 环境中设置一种类型或两种类型的组合,但只有 VIOS 映像存储库可通过 VMControl 创建。
  • 运行 Linux® 的 IBM i 或 IBM Power Systems 使用一个或多个 VIOS 映像存储库。
  • NIM 存储库和 IBM z/VM® 存储库在 IBM Systems Director VMControl 外部创建,且通过发现流程将其包含在内。

在尝试创建映像存储库之前,可能需要额外的设置。在尝试通过 VMControl REST API 创建存储库之前,按照 IBM Systems Director 信息中心中的设置说明操作。

列出已知的操作系统

这个示例在 IBM Power Systems™ 服务器上创建一个 VIOS 映像存储库。

第一步是获取可在创建映像存储库时使用的一个 VIOS 操作系统列表。从该列表中选择合适的操作系统并保存其对象 ID (OID) 属性的值。此值将在下一个请求中使用。

VIOS 映像存储库需要将 IBM Systems Director Common Agent 安装在 VIOS 上。这意味着对于以下列表中的操作系统,只有 v525400 是创建映像存储库的有效操作系统。

  • URL
    • https://myserver:port/{webContext}/resources/OperatingSystem?Props=ManagementSoftware
  • HTTP 方法
    • GET
  • 样例请求

    获取所有操作系统资源的列表:

    GET https://myserver:port/{webContext}/resources/OperatingSystem?Props=ManagementSoftware

    清单 1. 样例响应表示形式
    {
    
        "resources": [
            {
                "uri": "/ibm/director/rest/resources/OperatingSystem/3009",
                "OID": 14311,
                "ObjectType": "OperatingSystem",
                "Name": "v525400",
                "ResourceDefinition": "/ibm/director/rest/resourcedefinitions/Operating
    		System/com.ibm.usmi.systems.endpoint.SystemsManageableEndpointFactory",
                "Properties": {
                    "ManagementSoftware": [
                        "IBM-IBM Director Agent-v6.3.2",
                        "IBM-IBM Director Platform Agent-v6.3.2"
                    ]
                },
                "RelatedServices": "/ibm/director/rest/resources/OperatingSystem/3009/
    								relatedservices"
            },
            {
                "uri": "/ibm/director/rest/resources/OperatingSystem/13386",
                "OID": 13386,
                "ObjectType": "OperatingSystem",
                "Name": "rhel60pae201",
                "ResourceDefinition": "/ibm/director/rest/resourcedefinitions/Operating
    		System/com.ibm.usmi.systems.endpoint.SystemsManageableEndpointFactory",
                "Properties": {
                    "ManagementSoftware": [
                        "IBM-IBM Director Platform Agent-v6.3"
                    ]
                },
                "RelatedServices": "/ibm/director/rest/resources/OperatingSystem/13386/
    								relatedservices"
            },
            {
                "uri": "/ibm/director/rest/resources/OperatingSystem/18072",
                "OID": 18072,
                "ObjectType": "OperatingSystem",
                "Name": "rhel60e201c",
                "ResourceDefinition": "/ibm/director/rest/resourcedefinitions/Operating
    		System/com.ibm.usmi.systems.endpoint.SystemsManageableEndpointFactory",
                "Properties": {
                    "ManagementSoftware": [
                        "IBM-IBM Director Platform Agent-v6.3.1"
                    ]
                },
                "RelatedServices": "/ibm/director/rest/resources/OperatingSystem/18072/
    								relatedservices"
            }
        ]
    
    }

列出用于创建存储库的自定义参数

自定义参数是惟一的、特定于平台的属性,允许用户自定义正在执行的操作。自定义参数具有许多不同的类型,但都以一种类似的方式指定。使用来自上一步的操作系统 OID,对下面指定的 URL 创建一个 GET 请求。结果将是可用于创建存储库的自定义属性列表。

下列示例显示了用于在典型的 Power Systems 环境中创建存储库的自定义参数。其他平台(KVM、z/VM 等)的自定义参数将会有所不同。

备注:有关自定义参数的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心的 VMControl 编程主题章节。

  • URL
    • https://myserver:port/{webContext}/VMControl/repositories/customization?operatingSystem=14311
  • HTTP 方法
    • GET
  • 样例请求

    在使用具有惟一 OID 14311 的操作系统创建一个新存储库时,获取可用的自定义参数:

    GET https://myserver:port/{webContext}/VMControl/repositories/customization?operatingSystem=14311

    样例响应表示形式查看清单 2

创建存储库

下一步是请求创建一个映像存储库。创建存储库 是一种异步操作。第一步是填充请求的 JSON。使用上面列出的自定义参数创建一个 JSON 字符串,其中自定义属性 repositorystorage 使用指定的名称/值 对,以便选择将在其中创建存储库的存储区。

响应将包含两个 URL。Location 标头中的 URL 指向存储库的临时保存位置。因为存储库还未创建,所以在请求中选择的名称用作 ID 的占位符。消息中的 URL 指向创建存储库 任务的作业激活记录。作业激活记录将包含创建存储库 请求的状态,包括已完成百分比和任何状态或错误消息。

  • URL
    • https://myserver:port/{webContext}/VMControl/repositories
  • HTTP 方法
    • POST
  • 样例请求

    使用具有惟一 ID 14311 的操作系统创建一个新的映像存储库:

    POST https://myserver:port/{webContext}/VMControl/repositories

    清单 2. 样例请求表示形式
    {
        "repository":{
            "name":"createRepos",
            "description":"Newly Created Repository",
            "operatingSystem":"14311",
            "properties":[{
                    "name":"repositorystorage",
                    "value":"1"
                }
            ]
        }
    }
    清单 3. HTTP 响应:
    Status Code: 201 OK
    Accept-Ranges: bytes
    Cache-Control: no-store
    Content-Language: en-US
    Content-Length: 168
    Content-Type: application/json; charset=UTF-8
    Date:  Wed, 11 Jul 2012 08:23:35 GMT
    Location: https://9.9.9.9:8422/ibm/director/rest/VMControl/repositories/createRepos
    Server: Noelios-Restlet-Engine/1.1.4
    
    {
      "MessageText": "DNZEMW429I New job activation for creating the repository was 
    	started.\nRefer to the following URI for job activation status: 
    	/ibm/director/rest/jobs/324/activations/1",
      "MessageID": "DNZEMW429I"
    }

监视 “创建存储库” 作业

创建存储库的最后一步是监视其完成进度。监视存储库创建的推荐方法是使用作业激活记录。从上面可以看到,这个 URL 在 POST 请求的响应中的消息文本中返回。作业激活记录可通过轮询该 URL 进行监视,但推荐的方法是使用 Java™ Message Service (JMS) 提供程序。

IBM Systems Director 服务器包含一个 JMS 提供(provider)程序,用于向感兴趣的客户端应用程序传达事件和其他重要消息。该程序允许在两个或更多应用程序之间执行异步通信。作业激活记录可通过 Director.jobs.activation JMS 主题执行异步监视。

有关 JMS 的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 JMS Messaging Overview 页面。


通过捕获创建虚拟设备

可捕获各种不同的来源来创建虚拟设备。然后,可部署得到的虚拟设备来创建一个新的虚拟服务器,这个服务器包含一个全功能的操作系统和软件应用程序。可通过捕获以下任何来源创建虚拟设备:

  • 虚拟服务器
  • 工作负载
  • AIX mksysb 映像文件
  • AIX mksysb 资源
  • AIX lpp_source 资源
  • AIX lpp_source 目录

列出可用于存储虚拟设备的存储库

这个示例展示了如何通过捕获一个虚拟服务器来创建新虚拟设备。

创建虚拟设备的第一步是获取可用于存储虚拟设备或映像的映像存储库列表。从该列表中选择合适的存储库并保存其 OID 属性的值。这个值将在后续请求中使用。

  • URL
    • https://myserver:port/{webContext}/VMControl/repositories
  • HTTP 方法
    • GET
  • 样例请求

    获取所有存储库的列表:

    GET https://myserver:port/{webContext}/VMControl/repositories

    清单 4. 样例响应表示形式
    {
        "customization": {
            "uri": "/ibm/director/rest/VMControl/repositories/customization"
        },
        "repositories": [
            {
                "properties": {},
                "oid": 17621,
                "name": "Image_repo",
                "uri": "/ibm/director/rest/VMControl/repositories/17621"
            },
            {
                "properties": {},
                "oid": 27567,
                "name": "createRepos",
                "uri": "/ibm/director/rest/VMControl/repositories/27567"
            }
        ],
        "uri": "/ibm/director/rest/VMControl/repositories"
    }

列出可用于通过捕获创建虚拟设备的候选存储库

选择一个存储库后,下一步是选择一个要捕获的虚拟服务器。下面的请求将返回可供捕获的有效虚拟服务器和工作负载。从列表中选择合适的候选存储库并保存其 OID 属性的值。这个值将在下一个请求中使用。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances/candidates
  • HTTP 方法
    • GET
  • 样例请求

    获取所有候选存储库的列表:

    GET https://myserver:port/{webContext}/VMControl/virtualAppliances/candidates

    清单 5. 样例响应表示形式
    {
        "candidates": [
            {
                "customization": {
                    "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates
    							/13025/customization"
                },
                "type": "virtualServer",
                "oid": 13025,
                "name": "IP10-32-41-53_SLES11SP1_10g_mul",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates/13025",
                "system": {
                    "uri": "/ibm/director/rest/VMControl/virtualServers/13025"
                }
            },
            {
                "customization": {
                    "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates
    							/13030/customization"
                },
                "type": "virtualServer",
                "oid": 13030,
                "name": "IP10-32-41-10_AIX71D_10G_multi",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates/13030",
                "system": {
                    "uri": "/ibm/director/rest/VMControl/virtualServers/13030"
                }
            },
            {
                "customization": {
                    "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates
    							/13031/customization"
                },
                "type": "virtualServer",
                "oid": 13031,
                "name": "IP10-32-41-27_RHEL61_10G_multi",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates/13031",
                "system": {
                    "uri": "/ibm/director/rest/VMControl/virtualServers/13031"
                }
            },
            {
                "customization": {
                    "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates
    							/27501/customization"
                },
                "type": "virtualServer",
                "oid": 27501,
                "name": "ip-10-32-42-106",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates/27501",
                "system": {
                    "uri": "/ibm/director/rest/VMControl/virtualServers/27501"
                }
            },
            {
                "customization": {
                    "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates
    							/23791/customization"
                },
                "type": "virtualServer",
                "oid": 23791,
                "name": "ip-10-32-42-101",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates/23791",
                "system": {
                    "uri": "/ibm/director/rest/VMControl/virtualServers/23791"
                }
            }
        ],
        "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates"
    }

列出用于创建虚拟设备的自定义参数

自定义参数是惟一的、特定于平台的属性,允许用户自定义正在执行的操作。自定义参数具有许多不同的类型,但都以一种类似的方式指定。使用来自上一步的可捕获的 OID,对下面指定的 URL 创建一个 GET 请求。结果将是一个自定义属性列表,这些属性与将指定的候选虚拟服务器捕获到指定的存储库中相关。

下面的示例显示了典型的 Power Systems 环境中的自定义参数。其他平台(比如 KVM、z/VM 等)的自定义参数将会有所不同。

用于捕获的典型的自定义参数包括磁盘捕获选项、网络描述、操作系统类型和虚拟设备版本控制信息。我们的示例指定了所有这些参数,但虚拟设备版本控制信息除外。有关虚拟设备版本控制的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 virtualAppliances 资源页面。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances/{candidateOID}/customization
  • HTTP 方法
    • GET
  • 样例请求

    在具有 OID 27567 的存储库上创建一个新虚拟设备时,获取可用于 OID 为 27501 候选存储库的自定义属性:

    GET GET https://myserver:port/{webContext}/VMControl/virtualAppliances/candidates/27501/customization?repository=27567

    样例响应表示形式查看清单 7

创建虚拟设备

下一步是请求创建一个虚拟设备。创建虚拟设备是一种异步操作。第一步是填充请求的 JSON。使用所选的存储库、虚拟服务器和上面列出的自定义参数,创建一个 JSON 字符串,其中包含该虚拟设备的自定义属性的名称/值对。

下面的请求通过将具有惟一 OID 27501 的虚拟服务器捕获到具有惟一 OID 27567 的存储库中,创建一个名为 VirtualAppliance1 的新虚拟设备。虚拟服务器的磁盘和该磁盘上关联的数据都会被捕获。应使用的操作系统是 Linux (36)。

响应消息正文和 Location 标头将包含一个 URL,该 URL 指向所创建的虚拟设备。下一步是监视异步任务的完成进度。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances
  • HTTP 方法
    • PUT
  • 样例请求

    通过捕获具有惟一 OID 27501 的虚拟服务器,在具有惟一 OID 27567 的存储库中创建一个新虚拟设备:

    PUT https://myserver:port/{webContext}/VMControl/virtualAppliances

    清单 6. 样例请求表示形式
    {
        "virtualAppliance" : 
        {
            "capturable" : "27501",
            "name" : "VirtualAppliance1",
            "description" : "My Virtual Appliance",
            "repository" : 27567,
            "properties" : [
                {
                    "name": "capturedisks", 
                    "value": "[1]=capturedisk:true;image:true"
                },
                {
                    "name": "ostypecapture",
                    "value": "[12145]=osType:36"
                }
            ]
        }
    }
    清单 7. HTTP 响应:
    Status Code: 201 OK
    Cache-Control: no-store
    Content-Type: application/json; charset=UTF-8
    Content-Length: 300
    Date: Wed, 11 Jul 2012 11:41:38 GMT
    Location: https://9.9.9.9:8422/ibm/director/rest/VMControl/virtualAppliances/28906
    Accept-Ranges: bytes
    Server: Noelios-Restlet-Engine/1.1.4
    Content-Language: en-US
    
    {
        "MessageID": "DNZEMW349I",
        "MessageText": "DNZEMW349I Virtual Appliance \"28906\" is being captured: 
    	Capture/Import 'Virtual Appliance 1': My Virtual Appliance will capture/
    	import system '27501' into repository '27567' with customization 
    	[[ capturedisks[1], capturedisk:true;image:true ]] "
    }

监视创建虚拟设备 作业

创建虚拟设备的最后一步是监视其完成进度。捕获操作可通过轮询进度资源或监视捕获过程中创建的事件来进行监视。

可在 virtualAppliances/{virtualApplianceOID}/progress 上找到进度资源。该资源可在捕获过程中用于监视进度。也可在捕获完成和捕获失败时使用。如果捕获成功,那么进度资源就会被删除。

此外,还为被捕获的虚拟服务器对象创建了一个事件,该事件表明捕获的完成进度并指定捕获是否成功。这个事件可使用以下两种方法之一来获取:

  1. /ibm/director/rest/resources/Server/{serverOID}/events
  2. /ibm/director/rest/events?ComponentType=Server&ComponentCategory=ManagedElement.ManagedSystemElement.LogicalElement.System.ComputerSystem
  • URL
    • https://myserver:port/ibm/director/rest/resources/Server/{vsoid}/events
  • HTTP 方法
    • GET
  • 样例请求

    列出唯一 ID 为 55047 的服务器的所有成功和未成功的捕获事件:

    GET https://myserver:port/ibm/director/rest/resources/Server/24920/events

    清单 8. 样例请求表示形式
    {"events": [
      {
        "EventID": 10260,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    						System.ComputerSystem",
        "Severity": "Critical",
        "Mode": "ALERT",
        "EventText": "A Capture has failed for Virtual Server bt_nfsr1.\ncom.ibm.
    	director.im.common.exceptions.CaptureException: DNZVMK243E Unable to 
    	capture the virtual server to repository image_repos. The repository 
    	controller IBM 7870AC1 06N6242 does not have access to source disk 
    	location 9.12.29.159:/nfs/kvm/images/bt_nfsr2.dsk.",
        "uri": "/ibm/director/rest/events/10260",
        "ComponentInstance": null,
        "ComponentType": "Server"
      },
      {
        "EventID": 8273,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    						System.ComputerSystem",
        "Severity": "Harmless",
        "Mode": "RESOLUTION",
        "EventText": "A capture has been successful creating VirtualAppliance bt_sanr2.",
        "uri": "/ibm/director/rest/events/8273",
        "ComponentInstance": null,
        "ComponentType": "Server"
      }
    ]}
  • URL
    • https://myserver:port/ibm/director/rest/events?ComponentType=Server&ComponentCategory=ManagedElement.ManagedSystemElement.LogicalElement.System.ComputerSystem
  • HTTP 方法
    • GET
  • 样例请求

    列出其组件类型为 Server 且类别为 ManagedElement.ManagedSystemElement.LogicalElement.System.ComputerSystem 的所有服务器的所有成功和未成功的捕获事件:

    GET https://myserver:port/ibm/director/rest/events?ComponentType=Server&ComponentCategory=ManagedElement.ManagedSystemElement.LogicalElement.System.ComputerSystem

    清单 9. 样例请求表示形式
    {"events": [
      {
        "EventID": 10260,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    							System.ComputerSystem",
        "Severity": "Critical",
        "Mode": "ALERT",
        "EventText": "A Capture has failed for Virtual Server bt_nfsr1.\ncom.ibm.
    	director.im.common.exceptions.CaptureException: DNZVMK243E Unable to capture
    	 the virtual server to repository image_repos. The repository controller 
    	IBM 7870AC1 06N6242 does not have access to source disk location 9.22.22.22:
    	/nfs/kvm/images/bt_nfsr2.dsk.",
        "uri": "/ibm/director/rest/events/10260",
        "ComponentInstance": null,
        "ComponentType": "Server"
      },
      {
        "EventID": 8273,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    							System.ComputerSystem",
        "Severity": "Harmless",
        "Mode": "RESOLUTION",
        "EventText": "A capture has been successful creating VirtualAppliance bt_sanr2.",
        "uri": "/ibm/director/rest/events/8273",
        "ComponentInstance": null,
        "ComponentType": "Server"
      },
      {
        "EventID": 1684,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    							System.ComputerSystem",
        "Severity": "Harmless",
        "Mode": "RESOLUTION",
        "EventText": "A capture has been successful creating VirtualAppliance 
    			vs-18-05-2nd.",
        "uri": "/ibm/director/rest/events/1684",
        "ComponentInstance": null,
        "ComponentType": "Server"
      },
      {
        "EventID": 1629,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    							System.ComputerSystem",
        "Severity": "Critical",
        "Mode": "ALERT",
        "EventText": "A Capture has failed for Virtual Server VS_check-18-05.\ncom.ibm.
    	director.im.common.exceptions.CaptureException: DNZVMK209E Unable to store the
    	 virtual appliance in the repository.",
        "uri": "/ibm/director/rest/events/1629",
        "ComponentInstance": null,
        "ComponentType": "Server"
      }
    ]}

这些 URL 可被轮询,但推荐的方法是使用 JMS 提供程序订阅事件。

IBM Systems Director 服务器包含一个 JMS 提供程序,用于向感兴趣的客户端应用程序传达事件和其他重要消息。该提供程序允许在两个或更多应用程序之间执行异步通信。作业激活记录可通过 Director.jobs.activation JMS 主题执行异步监视。

有关 JMS 的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 JMS Messaging Overview 页面。


通过导入创建虚拟设备

可使用 IBM Systems Director VMControl REST API 从 Internet 或其他来源导入一个虚拟设备包,并存储这个包的组件文件来创建一个虚拟设备。然后可将该虚拟设备部署到您的数据中心中。

可以导入包含以下虚拟服务器映像的虚拟设备包:

  • 基于 IBM POWER® 处理器的逻辑分区的 AIX mksysb 映像
  • 基于 IBM POWER 处理器的逻辑分区的 AIX 原始磁盘映像
  • 基于 IBM POWER 处理器的逻辑分区的 IBM i 原始磁盘映像
  • 运行基于 IBM POWER 处理器的逻辑分区的 Linux 原始磁盘映像的 IBM Power Systems
  • Linux KVM 的 Linux 和 Microsoft® Windows® 映像
  • z/VM 的 Linux on System z® 映像

VMControl REST API 允许您导入一个开放虚拟设备 (OVA) 包或一个开放虚拟机格式 (OVF) 文件。OVA 包是一种磁带归档 (tar) 文件,包含操作系统映像和 OVF 文件。

除非您的 OVA 包很小或您拥有快速的网络连接,否则我们不推荐使用 VMControl REST API 导入 OVA 包。这是因为要使用 REST 导入 OVA 包,必须在请求正文中通过网络发送整个 OVA 包。

备注:VMControl 将仅验证 OVF 文件在句法上是否正确。确保 OVF 文件将支持成功部署映像是开发人员的责任。

列出可用于存储虚拟设备的存储库

创建虚拟设备的第一步是获取可用于存储虚拟设备或映像的映像存储库列表。从该列表中选择合适的存储库并保存其 OID 属性的值。这个值将在下一个请求中使用。

  • URL
    • https://myserver:port/{webContext}/VMControl/repositories
  • HTTP 方法
    • GET
  • 样例请求

    获取所有存储库的列表:

    GET https://myserver:port/{webContext}/VMControl/repositories

    清单 10. 样例响应表示形式
    {
        "customization": {
            "uri": "/ibm/director/rest/VMControl/repositories/customization"
        },
        "repositories": [
            {
                "properties": {},
                "oid": 17621,
                "name": "Image_repo",
                "uri": "/ibm/director/rest/VMControl/repositories/17621"
            },
            {
                "properties": {},
                "oid": 27567,
                "name": "createRepos",
                "uri": "/ibm/director/rest/VMControl/repositories/27567"
            }
        ],
        "uri": "/ibm/director/rest/VMControl/repositories"
    }

创建虚拟设备

下一步是请求创建一个虚拟设备。导入操作获取一个 OVF 描述符文件或一个 OVA 包。当导入 OVF 文件时,HTTP Content-Type 标头必须设置为 application/ovf+xml。要导入 OVA 包,该标头设置为 application/x-tar

导入操作是同步的,但有一个例外。这个例外就是在 ISDAPIVersion HTTP 标头设置为 6.3.2.0 或更高的值时导入 OVF。下面的示例执行此操作。

导入一个 OVF 文件时,该 OVF 文件引用的映像文件必须存在于 Systems Director 服务器上,或者必须由一个可从 Systems Director 服务器访问的 URL 引用。

要执行导入操作,可使用上一步中的存储库 OID,向 virtualAppliances resource 发出一个 POST 请求,按下面指定的方式传递 OVF 文件。

响应消息正文和 Location 标头将包含一个 URL,该 URL 指向创建虚拟服务器 任务的作业激活记录。作业激活记录包含创建虚拟设备 请求的状态,包括完成的百分比和任何状态或错误消息。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances
  • HTTP 方法
    • POST
  • 样例请求

    通过导入 OVF 文件,在具有惟一 OID 17621 的存储库中创建一个新虚拟设备:

    POST https://myserver:port/{webContext}/VMControl/virtualAppliances?repository=17621

    清单 11. 样例响应表示形式
    Status Code: 202 OK
     Cache-Control: no-store
     Content-Type: text/html; charset=UTF-8
     Set-Cookie: JSESSIONID_ibm_console_80=0000DMNZHEmiba05m3pvgMH8bZ4;Path=/; Secure; 
    								HTTPOnly
     Expires: Thu, 01 Dec 1994 16:00:00 GMT
     Content-Length:  196
     Date: Fri, 13 Jul 2012 13:43:46 GMT	
     Location: https://9.9.9.9:8422/ibm/director/rest/jobs/170/activations/1
     Accept-Ranges: bytes
     Server: Noelios-Restlet-Engine/1.1.4
     Content-Language: en-US
    
    {
        "MessageID": "DNZEMW456I",
        "MessageText": "DNZEMW456I New \"Import image \" job [1] started for [17621].
    	\nRefer to the following URI for status: /ibm/director/rest/jobs/170
    							/activations/1"
    }

监视创建虚拟设备 作业

创建虚拟设备的最后一步是监视其完成进度。监视存储库创建的推荐方法是使用作业激活记录。从上面可以看到,这个 URL 在 POST 请求的响应中的消息文本中返回。作业激活记录可通过轮询该 URL 来监视,但推荐的方法是使用 Java™ Message Service (JMS) 提供程序。

IBM Systems Director 服务器包含一个 JMS 提供程序,用于向感兴趣的客户端应用程序传达事件和其他重要消息。该提供程序允许在两个或更多应用程序之间执行异步通信。作业激活记录可通过 Director.jobs.activation JMS 主题执行异步监视。

有关 JMS 的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 JMS Messaging Overview 页面。


修改虚拟设备

列出可供修改的虚拟设备

修改虚拟设备的第一步是获取可用虚拟设备的列表。这可通过获取所有已知虚拟设备或获取存在于一个映像存储库之上的虚拟设备的列表来完成。这个示例获取所有虚拟设备。从该列表中选择合适的虚拟设备并保存其 OID 属性的值。这个值可在后续请求中使用。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances
  • HTTP 方法
    • GET
  • 样例请求

    获取所有虚拟设备的列表:

    GET https://myserver:port/{webContext}/VMControl/virtualAppliances

    清单 12. 样例响应表示形式
    {
        "candidates": {
            "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates"
        },
        "virtualAppliances": [
            {
                "properties": {},
                "oid": 28912,
                "name": "Virtual Appliance 1",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/28912"
            },
            {
                "properties": {},
                "oid": 29731,
                "name": "cap_nim",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/29731"
            },
            {
                "properties": {},
                "oid": 20495,
                "name": "cap_nim_aixmobb",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/20495"
            }
        ],
        "uri": "/ibm/director/rest/VMControl/virtualAppliances"
    }

获取虚拟设备的 OVF 描述符文件

您可选择自己的虚拟设备并提取当前为需要更新的虚拟设备定义的 OVF 描述符文件。使用上一步中的虚拟设备 OID,对下面指定的 URL 创建一个 GET 请求。

建议指定 Accept-Charset HTTP 标头来以导入时使用的格式获取 OVF 文件。如果 Accept-Charset 未指定,那么 VMControl 会尝试以 UTF-8 格式获取该文件。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances/{virtualApplianceOID}.ovf
  • HTTP 方法
    • GET
  • 样例请求

    获取虚拟设备 28912 的 OVF 描述符文件:

    GET https://myserver:port/{webContext}/VMControl/virtualAppliances/28912.ovf

    • 样例响应表示形式
      实际的 OVF 文件。

修改虚拟设备

最后,是时候创建修改虚拟设备 请求了。修改从前一步获取的 OVF 描述符文件,以添加或删除信息。将该文件作为 PUT 请求的正文传递,指定您的 Content-Type HTTP 标头的 application/ovf+xml

备注:VMControl 将仅验证 OVF 文件在句法上是否正确。确保 OVF 文件将支持成功部署映像是开发人员的责任。

响应包含修改虚拟设备 请求的状态,包含错误消息。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances/{virtualApplianceOID}
  • HTTP 方法
    • PUT
  • 样例请求

    修改具有惟一 ID 28912 的虚拟设备:

    PUT https://myserver:port/{webContext}/VMControl/virtualAppliances/28912

    • 样例请求表示形式
      更新的 OVF XML 和 Content-Type 应为 application/ovf+xml
    清单 13. 样例响应
    Status Code: 200 OK
    Accept-Ranges: bytes
    Cache-Control: no-store
    Content-Language: en-US
    Content-Length: 966
    Content-Type: application/json; charset=UTF-8
    Date: Wed, 11 Jul 2012 12:24:21 GMT
    Server: Noelios-Restlet-Engine/1.1.4
    
    {
        "MessageID": "DNZEMW440E",
        "MessageText": "DNZEMW440E Update OVF request for virtual appliance: 
    						\"28912\" succeeded."
    }

删除虚拟设备

列出可删除的虚拟设备

删除虚拟设备的第一步是获取可用虚拟设备的列表。这可通过获取所有已知虚拟设备或获取存在于一个映像存储库上的虚拟设备列表来完成。这个示例可获取所有虚拟设备。从该列表选择合适的虚拟设备并保存其 OID 属性的值。这个值将用在后续请求中。

  • URL
    • https://myserver:port/{webContext}/VMControl/virtualAppliances
  • HTTP 方法
    • GET
  • 样例请求

    获取所有虚拟设备的列表:

    GET https://myserver:port/{webContext}/VMControl/virtualAppliances

    清单 14. 样例响应表示形式
    {
        "candidates": {
            "uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates"
        },
        "virtualAppliances": [
            {
                "properties": {},
                "oid": 28912,
                "name": "Virtual Appliance 1",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/28912"
            },
            {
                "properties": {},
                "oid": 29731,
                "name": "cap_nim",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/29731"
            },
            {
                "properties": {},
                "oid": 20495,
                "name": "cap_nim_aixmobb",
                "uri": "/ibm/director/rest/VMControl/virtualAppliances/20495"
            }
        ],
        "uri": "/ibm/director/rest/VMControl/virtualAppliances"
    }

删除虚拟设备

下一步是请求删除虚拟设备。删除虚拟设备是一种异步操作。

响应将包含同一个 URL 的两个副本。Location 标头中的 URL 和响应消息中的 URL 都指向 “删除虚拟设备” 任务的作业激活记录。作业激活记录包含删除虚拟设备 请求的状态,包含已完成的百分比和任何状态或错误消息。

  • URL
    • https://myappliance:port/{webContext}/VMControl/virtualAppliances/{vaOID}
  • HTTP 方法
    • DELETE
  • 样例请求

    删除具有惟一 ID 28912 的虚拟设备:

    DELETE https://myappliance:port/{webContext}/VMControl/virtualAppliances/28912

    清单 15. 样例响应表示形式
    Status Code: 200 OK
    Accept-Ranges: bytes
    Cache-Control: no-store
    Content-Language: en-US
    Content-Length: 195	
    Content-Type: application/json; charset=UTF-8
    Date: Wed, 11 Jul 2012 12:34:45 GMT
    Location: https://9.9.9.9:8422/ibm/director/rest/jobs/540/activations/1
    Server: Noelios-Restlet-Engine/1.1.4
    
    {
        "MessageID": "DNZEMW299I",
        "MessageText": "DNZEMW299I New \"Delete Virtual Appliance\" job [1] 
    	started.\nRefer to the following URI for status: /ibm/director/rest/
    	jobs/540/activations/1"
    }

监视删除虚拟设备 作业

删除虚拟设备的最后一步是监视其完成进度。监视虚拟设备删除的推荐方式是使用作业激活记录。从上面可以看到,这个 URL 在 DELETE 请求的响应中返回。作业激活记录可通过轮询该 URL 来监视,但推荐的方法是使用 JMS 提供程序。

IBM Systems Director 服务器包含一个 JMS 提供程序,用于向感兴趣的客户端应用程序传达事件和其他重要消息。该提供程序允许在两个或更多应用程序之间执行异步通信。作业激活记录可通过 Director.jobs.activation JMS 主题执行异步监视。

有关 JMS 的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 JMS Messaging Overview 页面。

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球网站上的 英文原文
  • IBM Systems Director
  • JavaScript Object Notation (JSON)
  • RESTful Web 服务
  • How to test REST APIs for IBM Systems Director using Java
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

获得产品和技术

讨论

条评论

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=AIX and UNIX, Linux
ArticleID=937638
ArticleTitle=IBM Systems Director VMControl 资源生命周期管理: 第 2 部分
publish-date=07182013