Softlayer API:如何使用指定的特定数据磁盘捕获图像? [英] Softlayer API: How to do image capture with specify certain data disk?

查看:58
本文介绍了Softlayer API:如何使用指定的特定数据磁盘捕获图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个磁盘为1,2,3,4的虚拟机,我想执行一些映像操作:

  • Q1:如何捕获仅包含系统磁盘和磁盘3的映像?
  • 第二季度:如果我实现了第一季度中所述的图像生成,我可以使用它吗? 映像安装或重新加载VM? SL api如何处理磁盘3中的 图片?
  • Q3:我可以仅为磁盘3制作快照映像吗?
  • 第4季度:如果我获得第3季度中所述的图像,该如何使用 快照以初始化磁盘?

解决方案

在创建图像模板时,您可以在图像模板中指定所需的块设备,可以使用API​​和门户来完成. >

这是使用API​​的示例

"""
Create image template.

The script creates a standard image template, it makes
a call to the SoftLayer_Virtual_Guest::createArchiveTransaction method
sending the IDs of the disks in the request.
For more information please see below.

Important manual pages:
https://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest
https://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/createArchiveTransaction
https://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest_Block_Device

License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer

# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'

# The virtual guest ID you want to create a template
virtualGuestId = 4058502
# The name of the image template
groupName = 'my image name'
# An optional note for the image template
note = 'an optional note'

"""
Build a skeleton SoftLayer_Virtual_Guest_Block_Device object
containing the disks you want to the image.
In this case we are going take an image template of 2 disks
from the virtual machine.
"""
blockDevices = [
    {
        "id": 4667098,
        "complexType": "SoftLayer_Virtual_Guest_Block_Device"
    },
    {
        "id": 4667094,
        "complexType": "SoftLayer_Virtual_Guest_Block_Device"
    }
]

# Declare a new API service object
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)

try:
    # Creating the transaction for the image template
    response = client['SoftLayer_Virtual_Guest'].createArchiveTransaction(groupName, blockDevices, note, id=virtualGuestId)
    print(response)
except SoftLayer.SoftLayerAPIError as e:
    """
    # If there was an error returned from the SoftLayer API then bomb out with the
    # error message.
    """
    print("Unable to create the image template. faultCode=%s, faultString=%s" % (e.faultCode, e.faultString))

您只需要获取块设备ID(或磁盘),就可以调用此方法:

http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getBlockDevices

对于块设备有一些规则:

  1. 只能捕获类型为disk的块设备.
  2. 交换类型的块设备不能不包括在要捕获的块设备列表中(这是磁盘号1).
  3. 必须包括包含OS的块设备(这是磁盘号0).
  4. 包含元数据的块设备不能包含在图像中.

使用此图像模板来装饰新设备时,请记住以下几点:

  1. 如果您使用placeOrder方法,则需要确保添加额外磁盘的价格.
  2. 如果使用createObject方法,则将从映像模板中获取磁盘数,因此不必指定额外的磁盘.

您也可以在重新加载中使用图像模板,但是重新加载仅影响包含操作系统的磁盘.因此,如果您有一台包含3个磁盘的Vitrual机器并执行重新加载,则即使映像模板具有3个磁盘,也会仅感染包含OS的磁盘.

如果由于磁盘容量不足或其他问题而导致订单中的错误,则在配置时会出现错误,并且不会配置VSI,可能会打开票证,并且一些softlayer员工会通知您有关那个.

致谢

I have a vm with disk 1,2,3,4, I want to do some image operations:

  • Q1: How can i capture the image only contain system disk and disk 3?
  • Q2: If I achieve the image production described in Q1, can I use this image install or reload a vm? How SL api to do with the disk 3 in the image ?
  • Q3: Can I make a snapshot image only for disk 3?
  • Q4: If I achieve the image described in Q3, how can I use this snapshot to init a disk ?

解决方案

at moment to create the image template you can specify the block devices that you want in the image template you can do that using the API and the portal.

this is an example using the API

"""
Create image template.

The script creates a standard image template, it makes
a call to the SoftLayer_Virtual_Guest::createArchiveTransaction method
sending the IDs of the disks in the request.
For more information please see below.

Important manual pages:
https://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest
https://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/createArchiveTransaction
https://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest_Block_Device

License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer

# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'

# The virtual guest ID you want to create a template
virtualGuestId = 4058502
# The name of the image template
groupName = 'my image name'
# An optional note for the image template
note = 'an optional note'

"""
Build a skeleton SoftLayer_Virtual_Guest_Block_Device object
containing the disks you want to the image.
In this case we are going take an image template of 2 disks
from the virtual machine.
"""
blockDevices = [
    {
        "id": 4667098,
        "complexType": "SoftLayer_Virtual_Guest_Block_Device"
    },
    {
        "id": 4667094,
        "complexType": "SoftLayer_Virtual_Guest_Block_Device"
    }
]

# Declare a new API service object
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)

try:
    # Creating the transaction for the image template
    response = client['SoftLayer_Virtual_Guest'].createArchiveTransaction(groupName, blockDevices, note, id=virtualGuestId)
    print(response)
except SoftLayer.SoftLayerAPIError as e:
    """
    # If there was an error returned from the SoftLayer API then bomb out with the
    # error message.
    """
    print("Unable to create the image template. faultCode=%s, faultString=%s" % (e.faultCode, e.faultString))

You only need to get the block devices ID (or disks), for that you can call this method:

http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getBlockDevices

There is some rules for the block devices:

  1. Only block devices of type disk can be captured.
  2. The block device of swap type cannot not be included in the list of block devices to capture.(this is is the disk number 1).
  3. The block device which contains the OS must be included (this is the disk number 0).
  4. The block devices which contain metadata cannot be included in the image.

When you are ordening a new device using this image template you need to keep in mind this:

  1. If you are using the placeOrder method you need to make sure that you are adding the prices for the extra disks.
  2. If you are using the createObject method, the number of disk will be taken from the image template, so it is not neccesary to specify the extra disks.

And also you can use the images templates in reloads, but the reload only afects to the disk wich contains the OS. so If you have a Vitrual machine which contains 3 disks and performs a reload only the disk which contains the OS is afected even if the image template has 3 disks.

In case there are errors in your order due to lack of disk capacity or other issues, at provisioning time there will be errors and the VSI will not be provisioned, likely a ticket will be opened and some softlayer employee will inform you about that.

Regards

这篇关于Softlayer API:如何使用指定的特定数据磁盘捕获图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆