IBM Cloud Docs
创建实例模板

创建实例模板

您可以创建实例模板来定义实例详细信息,以便为一个或多个虚拟服务器进行配置。 创建实例模板时,可以使用该模板来供应单个虚拟服务器实例,也可以在实例组中同时供应多个实例。

使用 UI 创建实例模板

实例模板定义根据模板创建的虚拟服务器实例的详细信息。 例如,指定映像模板的概要文件 (vCPU 和内存),映像,连接的卷和网络接口。

要创建实例模板,请完成以下步骤。

  1. IBM Cloud 控制台,单击 导航菜单 图标菜单图标 > 基础架构 VPC 图标 > 计算 > 实例模板
  2. 点击“新建实例模板”,并输入表1中的信息。
  3. 完成信息后,单击 创建实例模板

创建实例模板时,将执行验证步骤以确保可以使用模板来供应虚拟服务器实例。

实例模板选择
字段
地区 位置由区域(特定地理区域)和专区(区域内的容错数据中心)组成。 选择您希望创建虚拟服务器实例的地理位置、区域和分区。
姓名 虚拟服务器实例的名称是必需的。
资源组 为实例选择资源组。
图像

单击 更改图像 以选择图像。 在“选择映像”页面上,可以选择库存映像,定制映像,目录映像,快照或现有卷。 如果配置实例的地理位置支持该架构,则可以选择 x86s390x 架构。 选择图像后,单击 保存

  • 库存图像: 您可以从可用库存图像中进行选择。 有关更多信息,请参阅 x86 虚拟服务器映像s390x 虚拟服务器映像
  • 定制映像: 定制映像可以是您定制并上载到 IBM Cloud Object Storage的映像,然后可以将其导入到 IBM Cloud VPC中。 您还可以使用从引导卷创建的定制映像。 有关定制映像的更多信息,请参阅 定制映像入门
  • 目录映像: 目录映像是导入到专用目录中的定制映像。 有关目录映像的更多信息,请参阅 在专用目录中使用定制映像时的 VPC 注意事项
  • 快照: 您可以从可用快照中进行选择。 有关更多信息,请参阅 关于 Block Storage Snapshots for VPC
  • 现有卷: 您可以从现有卷中进行选择。 指定的卷必须处于未连接状态,并且必须具有与实例概要文件具有相同体系结构的操作系统。
Profile 单击 更改配置文件,从所有可用的 vCPU 和 RAM 组合中进行选择。 配置文件家族包括:Flex、Balanced、Compute、Memory、Ultra High Memory、Very High Memory、GPU 以及 Confidential Compute。 有关更多信息,请参阅概要文件
SSH 密钥 必须选择现有公用 SSH 密钥,或者单击 创建 SSH 密钥 以创建新的 SSH 密钥。 只能创建 RSA SSH 密钥。 对于 ED25519 SSH 密钥,必须上传密钥信息。 有关创建 SSH 密钥的更多信息,请参阅 使用 UI 创建 SSH 密钥。 在实例处于运行状态后,SSH 密钥用于安全地连接到实例。

注:字母数字组合限制为100个字符。 SSH 密钥可以是 RSA 或 Ed25519 密钥。 仅当操作系统支持此密钥类型时,才能使用 Ed25519。 ED25519 不能与Windows或 VMware 图像一起使用。

有关更多信息,请参阅 开始使用 SSH 密钥

引导卷 所有概要文件的缺省引导卷大小均为 100 GB。 根据映像允许的内容,可以指定更大的引导卷容量 (最多 250 GB)。 您还可以指定用户标记。
数据卷 供应实例时,可以添加要包含的一个或多个辅助数据卷。 要添加卷,请单击 创建。 您可以为卷指定客户管理的加密和用户标记。
虚拟私有云 指定要在其中创建实例的 IBM Cloud VPC。 您可以使用现有的VPC,也可以创建新的VPC。 要创建新的 VPC,请单击 新建 VPC
网络接口 定义进入 IBM Cloud VPC 的网络连接。 缺省情况下,将为实例模板选择新选项 具有虚拟网络接口的网络连接。 或者,您可以选择旧选项 实例网络接口。 在供应虚拟服务器时选择的任何类型的网络接口选项都将在虚拟服务器的生命周期内持久存在。 选择网络接口类型后,可以单击 Edit 图标 Edit 图标 更新网络接口的详细信息,例如子网或相关安全组。
用户数据 您可以添加自动执行公共配置任务或运行脚本的用户数据。 有关更多信息,请参阅用户数据
元数据 默认情况下已禁用,可让从该模板创建的实例收集自身的元数据。 单击切换打开元数据服务。 更多信息,请参阅 关于 VPC 的元数据
添加到专用主机 您可以将虚拟服务器实例添加到专用主机,在单租户空间中创建实例。 要供应专用实例,您必须具有可用的专用主机,或者 创建一个
添加到放置组 您可以为实例选择一个放置组。 要启用放置组,请单击切换开关。 然后,选择或创建实例的放置组。 如果添加布置组,那么将根据布置组策略来布置实例。 有关更多信息,请参阅 关于布置组
动态音量带宽分配 单击切换按钮,启用附加数据卷 的池化卷带宽分配。 部分 计算配置文件 支持此功能。
主机故障自动重新启动 缺省情况下启用该设置。 要禁用主机故障自动重新启动,请单击切换开关。 有关更多信息,请参阅 主机故障恢复策略

使用 CLI 创建实例模板

实例模板定义根据模板创建的虚拟服务器实例的详细信息。 例如,指定实例模板的概要文件 (vCPU 和内存),映像,连接的卷和网络接口。 您可以使用命令行界面 (CLI) 在 IBM Cloud VPC 中创建一个或多个实例模板。

有关使用从专用目录共享的定制映像创建虚拟服务器实例的更多信息,请参阅 从专用目录映像供应

准备工作

确保设置 IBM Cloud® CLI 环境IBM Cloud VPC

收集信息以创建实例模板

准备创建实例模板了吗? 在运行 ibmcloud is instance-template-create 命令之前,您必须收集需要包含在实例模板和命令选项中的详细信息。 例如,您需要 VPC 的 ID 或名称,以及要创建实例模板的区域名称。 您还需要提供要使用的实例配置文件的名称,以及要创建模板的子网的 ID 或名称。

收集以下必需的实例模板详细信息。

所需实例模板详细信息
实例模板详细信息 列示命令 VPC CLI 参考文档
VPC ibmcloud is vpcs 列出所有 VPC
区域 ibmcloud is zones 列出区域中的所有区域
Profile ibmcloud is instances 列出所有虚拟服务器实例
子网 ibmcloud is subnets 列出所有子网
图像 ibmcloud is image 列出所有图像
密钥 ibmcloud is keys 列出所有密钥
放置组 ibmcloud is placement-groups 列出所有放置组

使用以下命令确定创建实例模板所需的信息。

  1. 列出与您的账户关联的地区。

    ibmcloud is regions
    

    请参阅以下示例。

    $ ibmcloud is regions
    Listing regions under account Test Account as user test.user@ibm.com...
    Name       Endpoint                              Status
    au-syd     https://au-syd.iaas.cloud.ibm.com     available
    br-sao     https://br-sao.iaas.cloud.ibm.com     available
    ca-tor     https://ca-tor.iaas.cloud.ibm.com     available
    eu-de      https://eu-de.iaas.cloud.ibm.com      available
    eu-es      https://eu-es.iaas.cloud.ibm.com      available
    eu-gb      https://eu-gb.iaas.cloud.ibm.com      available
    jp-osa     https://jp-osa.iaas.cloud.ibm.com     available
    jp-tok     https://jp-tok.iaas.cloud.ibm.com     available
    us-east    https://us-east.iaas.cloud.ibm.com    available
    us-south   https://us-south.iaas.cloud.ibm.com   available
    
  2. 切换到目标区域。

    ibmcloud target -r <region-name>
    
  3. 列出与目标区域关联的区域。

    ibmcloud is zones
    

    在下面的示例中,该命令在 us-south 区域内运行,输出显示该区域内可用的可用区。

    $ ibmcloud is zones
    Listing zones in target region us-south under account Test Account as user test.user@ibm.com...
    Name         Region     Status
    us-south-1   us-south   available
    us-south-2   us-south   available
    us-south-3   us-south   available
    
  4. 列出与帐户关联的 IBM Cloud VPC。

    ibmcloud is vpcs
    

    在此示例中,您将看到类似于以下输出的响应。

    ID                                          Name                         Status      Classic access   Default network ACL                   Default security group                 Resource group
    r006-0d37163a-701d-4ad6-9ece-a3e34cf28935   cdl                          available   false            acl-test-1                            pedicure-budding-providing-excluded    Default
    r006-212def4b-93f0-4b9a-a331-94178b99d474   cli-test-1                   available   false            surprise-pacifier-cubicle-demystify   foyer-alongside-rug-zen                Default
    

    如果没有现成的,你可以使用 ibmcloud is vpc-create 命令 IBM Cloud VPC 创建一个。 有关创建 IBM Cloud VPC 的更多信息,请参阅 IBM Cloud VPC CLI 参考

  5. 列出可用于创建实例模板的可用配置文件。

    ibmcloud is instance-profiles
    

    命令输出类似于以下示例。

    Name               vCPU Manufacturer   Architecture   Family              vCPUs   Memory(GiB)   Bandwidth(Mbps)   Volume bandwidth(Mbps)   GPUs   Storage(GB)
    bx2-2x8            intel               amd64          balanced            2       8             4000              1000                     -      -
    bx2d-2x8           intel               amd64          balanced            2       8             4000              1000                     -      1x75
    bx2-4x16           intel               amd64          balanced            4       16            8000              2000                     -      -
    bx2d-4x16          intel               amd64          balanced            4       16            8000              2000                     -     1x150
    bx2-8x32           intel               amd64          balanced            8       32            16000             4000                     -      -
    bx2d-8x32          intel               amd64          balanced            8       32            16000             4000                     -     1x300
    bx2-16x64          intel               amd64          balanced            16      64            32000             8000                     -      -
    bx2d-16x64         intel               amd64          balanced            16      64            32000             8000                     -      1x600
    
  6. 列出与 IBM Cloud VPC 关联的子网。

    ibmcloud is subnets
    

    命令输出类似于以下示例。

    ID                                          Name                       Status      Subnet CIDR       Addresses   ACL                                   Public Gateway   VPC                     Zone         Resource group
    0717-cd4f74f1-bfae-423a-886b-9163256ec4a9   subnet-south-1             available   10.240.0.0/24     124/256     acl-test-1                            -                cdl                     us-south-1   Default
    0727-9447a2c3-efb8-44d2-a180-115531e0b0d3   cdl                        available   10.240.64.0/24    238/256     acl-test-1                            -                cdl                     us-south-2   Default
    

    要获得实例组的最佳性能,请确保使用 32 或更大的子网大小。

    如果没有可用子网,您可以使用 命令 ibmcloud is subnet-create 创建一个。 有关创建子网的更多信息,请参阅 CLI 参考 IBM Cloud VPC 文档。

  7. 列出可用于创建实例模板的可用映像。

    ibmcloud is images
    

    命令输出类似于以下示例。

    ID                                          Name                                                Status       Arch    OS name                              OS version                                               File size(GB)   Visibility   Encryption   Resource group   Catalog Offering User Data Format   Remote Account ID
    r006-3fa3bea4-7f9c-4eeb-8248-ab1f6e03185b   my-test-image                                       available    amd64   centos-7-amd64                       7.x - Minimal Install                                    1               private      none         Default          -                cloud_init
    r006-c55167af-ea8c-4c27-871f-ccc9c868753e   ibm-centos-stream-8-amd64-1                         available    amd64   centos-stream-8-amd64                8                                          2               public       none         Default          -                cloud_init       811f8abfbd32425597dc7ba40da98fa6
    
  8. 列出可以与实例关联的可用 SSH 密钥。

    ibmcloud is keys
    

    命令输出类似于以下示例。

    ID                                          Name     Type   Length   FingerPrint          Resource group
    r006-89ec781c-9630-4f76-b9c4-a7d204828d61   my-key   rsa    4096     gtnf+pdX2PYI9Ofq..   Default
    

    若您尚未拥有SSH密钥,可通过执行 [ibmcloud is key-create](/docs/vpc?topic=vpc-vpc-reference#key-create) 命令创建SSH密钥。

    RSA 和 ED25519 是您可以使用的两种 SSH 密钥类型。 然而,您无法在 Windows 或 VMware 映像中使用 SSH ED25519 密钥类型。 只能将 RSA SSH 密钥用于这些映像。 有关更多信息,请参阅 SSH 密钥入门

  9. 列出所有可与您的实例关联的可用放置组。

    ibmcloud is placement-groups
    

    命令输出类似于以下示例。

    Listing placement groups for generation 2 compute in all resource groups and region us-east under account vpcdemo as user    yaohaif@cn.ibm.com...
    ID                                            Name                             State    Strategy       Resource Group
    c5f1f366-b92a-4080-991a-aa5c2e33d96b          placement-group-region-us-east   stable   power_spread       5018a8564e8120570150b0764d39ebcc
    placement-group-cccc-cccc-cccc-cccccccccccc   vsi-placementGroup1              stable   host_spread    5018a8564e8120570150b0764d39ebcc
    placement-group-bbbb-bbbb-bbbb-bbbbbbbbbbbb   vsi-placementGroup2              stable   power_spread     5018a8564e8120570150b0764d39ebcc
    placement-group-aaaa-aaaa-aaaa-aaaaaaaaaaaa   vsi-placementGroup3              stable   power_spread   1d18e482b282409e80eff354c919c6a2
    

通过 CLI 创建实例模板

了解这些数值后,请使用它们来运行该 instance-template-create 命令。 您还必须指定实例的名称。

ibmcloud is instance-template-create INSTANCE_TEMPLATE_NAME VPC ZONE_NAME PROFILE_NAME SUBNET --image IMAGE

下面的示例命令在 VPC 中创建了一个名为 my-instance-template 的实例模板,该实例模板由 ID 指定 r006-6e8fb140-5668-45b8-b98a-d5cb0e0bf39b. 模板在 us-south-3 区域中创建,并使用 bx2-2x8 配置文件。 子网由其 ID 0726-298acd6c-e71e-4204-a04f-fe4a4dd89805. IMAGE 由其 ID 指定 r006-534ef2ac-6158-45b3-9657-57629fa85305.

ibmcloud is instance-template-create my-instance-template r006-6e8fb140-5668-45b8-b98a-d5cb0e0bf39b us-south-3 bx2-2x8 0076-2249dabc-8c71-4a54-bxy7-953701ca3999 --image r006-534ef2ac-6158-45b3-9657-57629fa85305 --placement-group r006-953db18c-068c-4a11-9b07-645684b444b2
Creating instance template my-instance-template under account Test Account as user test-user@ibm.com...

ID                          0727-0fdac0fb-ad59-4d7b-9f03-604ddc1db002
Name                        my-instance-template
CRN                         crn:v1:bluemix:public:is:us-south-2:a/a1234567::instance-template:0727-0fdac0fb-ad59-4d7b-9f03-604ddc1db002
Resource group              Default
Image                       r006-3fa3bea4-7f9c-4eeb-8248-ab1f6e03185b
VPC                         r006-212def4b-93f0-4b9a-a331-94178b99d474
Zone                        us-south-2
Profile                     bx2-2x8
Boot volume                 Name   Capacity   Profile           IOPS   Attachment name                      Auto delete   Tags
                            -      100        general-purpose   0      illude-education-spotted-reanalyze   true          -

Primary Network Interface   Name      Subnet ID                                   Security Groups                             Allow source IP spoofing   Reserved IP Address   Reserved IP ID   Reserved IP Name   Reserved IP Auto Delete
                            primary   0727-944126da-e46d-4104-8ba4-ab5a5832864b   r006-2295f00e-8af0-4736-be11-94677955b6b2   false                      -                     -                -                  -

Placement                   ID
                            r006-9994e3ab-18ae-49a7-95cf-25c77e09fa76

Created                     2023-03-29T22:02:59+05:30

下面的示例创建了一个实例模板,其名称为 my-gen3-instance-template 的实例模板。r006-6e8fb140-5668-45b8-b98a-d5cb0e0bf39b. 模板在 us-south-3_ ZONE 中创建,并使用 cx3d-8x20 配置文件。 子网由其 ID 00726-298acd6c-e71e-4204-a04f-fe4a4dd89805. IMAGE 由其 ID 指定 r006-534ef2ac-6158-45b3-9657-57629fa85305. 当所选 计算配置文件 支持数据卷的池化带宽分配时,您还可以包含该 --storage_qos_modes 选项。

ibmcloud is instance-template-create my-gen3-instance-template r006-6e8fb140-5668-45b8-b98a-d5cb0e0bf39b us-south-3 cx3d-8x20 00726-298acd6c-e71e-4204-a04f-fe4a4dd89805 --image r006-534ef2ac-6158-45b3-9657-57629fa85305 --storage_qos_modes pooled

有关 ibmcloud is instance-template-create 命令的更多示例,请参阅 VPC CLI 参考

创建实例模板时,将执行验证步骤以确保可以使用模板来供应虚拟服务器实例。 需要更多帮助吗? 您可以运行该 ibmcloud is help instance-template-create 命令来显示帮助信息。

使用 API 创建实例模板

实例模板定义根据模板创建的虚拟服务器实例的详细信息。 例如,指定实例模板的概要文件 (vCPU 和内存),映像,连接的卷和网络接口。 您可以使用应用程序编程接口 (API),在 IBM Cloud VPC 中创建一个或多个实例模板。

有关使用从专用目录共享的定制映像创建虚拟服务器实例的更多信息,请参阅 从专用目录映像供应

准备工作

定义 IAM 令牌、API 端点和 API 版本的变量。 有关指示信息,请参阅设置 API 和 CLI 环境

请确保您拥有所需的访问权限。 要调用这些方法,必须根据列出的任何条件为您分配一个或多个包含以下操作的 IAM 访问角色。 您可以通过转至 Cloud Identity and Access Management 仪表板的“用户”页面来检查您的访问权。

要了解有关 API 的更多信息,一个好办法是在 IBM Cloud 控制台中的供应页面上单击获取样本 API 调用。 您可以查看正确的 API 请求序列,并更好地了解操作及其依赖项。

收集信息以创建实例模板

准备创建实例模板了吗? 在使用 POST 方法发出 /instance/templates 请求之前,您需要知道实例模板要包含的详细信息。 例如,您需要提供虚拟私有云(VPC)的ID或名称,以及要创建实例的区域名称。 您还需要指定要使用的实例配置文件名称,以及要创建模板的子网ID或名称。 通过发出以下 API 调用来收集以下必需实例模板详细信息:

所需的 API 实例模板详情
实例详细信息 列表方法 API 规范文档
VPC GET /vpcs 列出所有 VPC
区域 GET /regions/<region>/zones 列出区域中的所有专区
Profile GET /instance/profiles 列出所有实例概要文件
子网 GET /subnets 列出所有子网
图像 GET /images 列出所有图像
GET /keys 列出所有密钥
放置组 GET /placement_groups 列出所有放置组

使用以下命令确定创建实例模板所需的信息。

  1. 列出与帐户关联的 IBM Cloud VPC。

    curl -X GET "$vpc_api_endpoint/v1/vpcs?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    

    如果没有可用资源,那么可以使用 POST /vpcs 方法创建 IBM Cloud VPC。 有关创建 IBM Cloud VPC的更多信息,请参阅 IBM Cloud API Docs-创建 VPC

  2. 列出与您的账户关联的地区。

    curl -X GET "$vpc_api_endpoint/v1/regions?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    
  3. 列出与该区域相关的区域。

    curl -X GET "$vpc_api_endpoint/v1/regions/$region_name/zones?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    
  4. 列出可用于创建实例模板的配置文件。

    curl -X GET "$vpc_api_endpoint/v1/instance/profiles?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    
  5. 列出与 IBM Cloud VPC 关联的子网。

    curl -X GET "$vpc_api_endpoint/v1/subnets?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    

    要获得实例组的最佳性能,请确保使用 32 或更大的子网大小。

    如果没有可用的子网,那么可以使用 POST /subnets 方法来创建子网。 有关创建 IBM Cloud VPC的更多信息,请参阅 IBM Cloud API Docs-创建子网

  6. 列出可用于创建实例模板的可用图像。

    curl -X GET "$vpc_api_endpoint/v1/images?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    
  7. 列出可以与实例关联的可用 SSH 密钥。

    curl -X GET "$vpc_api_endpoint/v1/keys?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    

    若您尚未拥有SSH密钥,可通过执行 [ibmcloud is key-create](/docs/vpc?topic=vpc-vpc-reference#key-create) 命令创建SSH密钥。

    如果没有可用的 SSH 密钥,那么可以使用 POST /keys 方法创建一个 SSH 密钥。 有关创建 IBM Cloud VPC的更多信息,请参阅 IBM Cloud API 文档-创建密钥

    RSA 和 ED25519 是您可以使用的两种 SSH 密钥类型。 然而,您无法在 Windows 或 VMware 映像中使用 SSH ED25519 密钥类型。 只能将 RSA SSH 密钥用于这些映像。 有关更多信息,请参阅 SSH 密钥入门

  8. 列出所有可与您的实例关联的可用放置组。

    curl -X GET "$vpc_api_endpoint/v1/placement_groups?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token"
    

使用 API 创建实例模板

了解这些值后,使用它们通过 /instance/templates 方法发出 POST 请求。 您还必须指定实例的名称。

下面的示例创建了一个名为 my-instance-template 的实例模板。us-south-1 并使用 bx2-2x8 配置文件。

curl -X POST "$vpc_api_endpoint/v1/instance/templates?version=2023-07-13&generation=2"
  -H "Authorization: Bearer $iam_token"
  -d '{
    "zone": {"name": "us-south-1"},
    "resource_group": {"id": "db8e8d865a83e0aae03f25a492c5b39e"},
    "name": "my-instance-template",
    "vpc": {"id": "r006-6e8fb140-5668-45b8-b98a-d5cb0e0bf39b"},
    "user_data": "",
    "profile": {"name": "bx2-2x8"},
    "keys": [{"id": "r006-68f8333a-1169-42da-ba01-75268bac8362"}],
    "volume_attachments": [],
    "boot_volume_attachment": {
      "volume": {
        "name": "my-instance-template-boot-1720804230000",
        "capacity": 100,
        "profile": {"name": "general-purpose"}},
      "delete_volume_on_instance_delete": true
    },
    "metadata_service": {
      "enabled": true,
      "protocol": "https",
      "response_hop_limit": 1},
    "primary_network_attachment": {
      "name": "eth0",
      "virtual_network_interface": {
        "allow_ip_spoofing": false,
        "auto_delete": true,
        "enable_infrastructure_nat": true,
        "primary_ip": {"auto_delete": true,
        "subnet": {"id": "0726-298acd6c-e71e-4204-a04f-fe4a4dd89805"},
        "security_groups": [{"id": "r006-ccdd1f58-f0f2-4ea0-8774-a24bbe61b5d9"}],
        "protocol_state_filtering_mode": "auto"}
    },
    "network_attachments": [],
    "image": {"id": "r006-534ef2ac-6158-45b3-9657-57629fa85305"}}`

下面的示例创建了一个名为 my-gen3-instance-template 的实例模板,并使用 us-south-3 并使用 cx3d-8x20 配置文件。 当所选 计算配置文件 支持为数据卷分配池带宽时,也可包含属性 --storage_qos_modes

curl -X POST "$vpc_api_endpoint/v1/instance/templates?version=2024-07-12&generation=2"
  -H "Authorization: Bearer $iam_token"
  -H "Content-Type: application/json" \
  -H "accept: application/json" \
  -d '{
  "zone": {"name": "us-south-3"},
  "resource_group": {"id": "db8e8d865a83e0aae03f25a492c5b39e"},
  "name": "my-gen3-instance-template",
  "vpc": {"id": "r006-6e8fb140-5668-45b8-b98a-d5cb0e0bf39b"},
  "user_data": "",
  "profile": {"name": "cx3d-8x20"},
  "keys": [{"id": "r006-68f8333a-1169-42da-ba01-75268bac8362"},
  "volume_attachments": [
    {"volume": {
        "name": "my-data-volume-1",
        "capacity": 3000,
        "profile": {"name": "5iops-tier"}},
      "delete_volume_on_instance_delete": false},
    {"volume": {
        "name": "my-data-volume-2",
        "capacity": 3000,
        "profile": {"name": "5iops-tier"}},
      "delete_volume_on_instance_delete": false},
    {"volume": {
        "name": "my-data-volume-3",
        "capacity": 3000,
        "profile": {"name": "5iops-tier"}},
      "delete_volume_on_instance_delete": false}
  ],
  "boot_volume_attachment": {
    "volume": {
      "name": "my-gen3-instance-template-boot-1720803726000",
      "capacity": 100,
      "profile": {"name": "general-purpose"}
    },
    "delete_volume_on_instance_delete": true
  },
  "metadata_service": {
    "enabled": false,
    "response_hop_limit": 1},
  "primary_network_attachment": {
    "name": "eth0",
    "virtual_network_interface": {
      "allow_ip_spoofing": false,
      "auto_delete": true,
      "enable_infrastructure_nat": true,
      "primary_ip": {"auto_delete": true},
      "subnet": {"id": "0726-298acd6c-e71e-4204-a04f-fe4a4dd89805"},
      "security_groups": [
        {"id": "r006-ccdd1f58-f0f2-4ea0-8774-a24bbe61b5d9"}],
      "protocol_state_filtering_mode": "auto"}
  },
  "network_attachments": [],
  "image": {"id": "r006-534ef2ac-6158-45b3-9657-57629fa85305"},
  "enable_secure_boot": false
  "storage_qos_modes": "pooled"
}'

有关 /instance/templates 方法的更多示例,请参阅 创建实例模板 API 文档。

使用 Terraform 创建实例模板

您可以使用 Terraform 在 IBM Cloud VPC 中创建一个或多个实例模板。

有关使用从专用目录共享的定制映像创建虚拟服务器实例的更多信息,请参阅 使用 Terraform 创建实例

准备工作

确保设置 Terraform for VPC

收集信息以创建实例模板

准备创建实例模板了吗? 在配置中包含 ibm_is_instance_template 资源之前,您需要了解要在实例模板中包含的详细信息。 例如,您需要提供虚拟私有云(VPC)的ID或名称,以及要创建实例模板的区域名称。 您还需要指定要使用的实例配置文件名称,以及要创建模板的子网ID或名称。

收集以下必需的 Terraform 实例模板详细信息。

所需的 Terraform 实例模板详细信息
实例模板详细信息 列表块 VPC Terraform 数据源参考文档
实例概要文件 ibm_is_instance_profiles ibm_is_instance_profiles
图像 ibm_is_images ibm_is_images
VPC ibm_is_vpc ibm_is_vpc
子网 ibm_is_subnets ibm_是_子网
区域 ibm_is_zone ibm_is_区域
密钥 ibm_is_ssh_keys ibm_is_ssh_keys
放置组 ibm_is_placement_groups ibm_is_安置_组

请使用以下指南来确定创建实例模板所需的信息。

使用 DataSource 块收集以下信息。

  1. 收集实例概要文件详细信息。 对您选择的配置文件运行以下代码块。 请参阅 x86 实例概要文件,以获取可用概要文件的列表。 有关更多信息,请参阅 ibm_is_instance_profiles 上的 Terraform 文档。 要使用实例配置文件,请参考实例配置文件数据源。 有关更多信息,请参阅 ibm_is_instance_profile 上的 Terraform 文档。

    data "ibm_is_instance_profile" "example_profile" {
       name = "bx2-2x8"
    }
    
  2. 列出可用于创建实例的映像。 您可以使用库存映像,帐户中的定制映像或专用目录中与帐户共享的映像。 有关详细信息,请参阅 Terraform 文档 ibm_is_image。 如果计划使用从私有目录共享的映像,请参阅有关 ibm_cm_versionibm_cm_offering_instance 的 Terraform 文档。

    • 从实例的帐户中选择股票映像或定制映像。
    data "ibm_is_image" "example_image" {
       name = "ibm-centos-7-6-minimal-amd64-2"
    }
    
    • 选择从实例的专用目录共享的映像。 有关更多信息,请参阅 ibm_is_images 上的 Terraform 文档。
    data "ibm_is_images" "example_images" {
       catalog_managed = true
    }
    

    如果选择属于其他帐户的目录映像,那么需要查看更多注意事项和限制。 请参阅 在 Terraform 中的专用目录中使用跨帐户映像引用

  3. 创建 VPC 资源或通过引用 VPC 数据源来使用现有 VPC。 有关更多信息,请参阅有关数据源 ibm_is_vpc 或资源 ibm_is_vpc 的 Terraform 文档。

    data "ibm_is_vpc" "example_vpc" {
       name = "example-vpc"
    }
    
  4. 创建子网资源或通过引用子网数据源来使用现有子网。 有关更多信息,请参阅有关数据源 ibm_is_subnet 或资源 ibm_is_subnet 的 Terraform 文档。

    data "ibm_is_subnet" "example_subnet" {
       name            = "example-subnet"
       vpc             = ibm_is_vpc.example_vpc.id
       zone            = "us-south-1"
       ipv4_cidr_block = "10.240.0.0/24"
    }
    
  5. 要使用现有的SSH密钥,请参考SSH密钥数据源 ib m_is_ssh_key。 如果没有任何可用的 SSH 密钥,请使用资源 ibm_is_ssh_key 来创建一个 SSH 密钥。

    RSA 和 ED25519 是您可以使用的两种 SSH 密钥类型。 然而,您无法在 Windows 或 VMware 映像中使用 SSH ED25519 密钥类型。 只能将 RSA SSH 密钥用于这些映像。 有关更多信息,请参阅 SSH 密钥入门

    resource "ibm_is_ssh_key" "example_sshkey" {
       name       = "example-sshkey"
       public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR"
    }
    

使用 Terraform 创建实例模板

了解这些值后,使用它们编写 ibm_is_instance_template 资源块。 您还必须指定实例的名称。

下面的示例创建了一个实例_模板_,在 us-south-1 并使用 bx2-8x32 配置文件。

resource "ibm_is_instance_template" "my-instance-template" {
  name    = "my-instance-template"
  image   = r006-3fa3bea4-7f9c-4eeb-8248-ab1f6e03185b
  profile = "bx2-8x32"

  primary_network_interface {
    subnet            = 0727-944126da-e46d-4104-8ba4-ab5a5832864b
    allow_ip_spoofing = true
  }

  placement_group = r006-9994e3ab-18ae-49a7-95cf-25c77e
  vpc             = r006-212def4b-93f0-4b9a-a331-94178b99d474
  zone            = "us-south-1"
  keys            = [363f6d70-0000-0001-0000-00000013b96c]

  boot_volume {
    name                             = "example-boot-volume"
    delete_volume_on_instance_delete = true
  }
}

下面的示例创建了一个名为 my-gen3-instance-template 的实例模板,并使用 us-south-3 并使用 cx3d-8x20 配置文件。 当所选 计算配置文件 支持为数据卷分配池带宽时,也可包含 storage_qos_modes 选项。

resource "ibm_is_instance_template" "example" {
  name                = "my-gen3-instance-template"
  image               = r006-534ef2ac-6158-45b3-9657-57629fa85305
  profile             = "cx3d-8x20"
  primary_network_interface {
    subnet            = 0d933c75-492a-4756-9832-1200585dfa79
    allow_ip_spoofing = true
  }
  vpc                 = r006-6e8fb140-5668-45b8-b98a-d5cb0e0bf39b
  zone                = "us-south-3"
  keys                = [363f6d70-0000-0001-0000-00000013b96c]
  storage_qos_modes   = [pooled]
  boot_volume {
    name                             = "example-boot-volume"
    delete_volume_on_instance_delete = true
  }
  volume_attachments {
    delete_volume_on_instance_delete = false
    name                             = "example-data-vol-01"
    volume_prototype {
      profile = "5iops-tier"
      capacity = 3000
    }
  }
  volume_attachments {
    delete_volume_on_instance_delete = false
    name                             = "example-data-vol-02"
    volume_prototype {
      profile = "5iops-tier"
      capacity = 3000
    }
  }
}

有关 ibm_is_instance_template 的更多示例,请参阅 ibm_is_instance_template Terraform 参考。

后续步骤

创建实例模板后,可以供应单个虚拟服务器实例,也可以在实例组中同时供应多个实例。 (可选) 您可以为实例组设置自动缩放策略,以动态添加虚拟服务器实例或从组中除去虚拟服务器实例。 有关更多信息,请参阅以下主题: