创建实例模板
您可以创建实例模板来定义实例详细信息,以便为一个或多个虚拟服务器进行配置。 创建实例模板时,可以使用该模板来供应单个虚拟服务器实例,也可以在实例组中同时供应多个实例。
使用 UI 创建实例模板
实例模板定义根据模板创建的虚拟服务器实例的详细信息。 例如,指定映像模板的概要文件 (vCPU 和内存),映像,连接的卷和网络接口。
要创建实例模板,请完成以下步骤。
- 在 IBM Cloud 控制台,单击 导航菜单 图标
> 基础架构
> 计算 > 实例模板。
- 点击“新建实例模板”,并输入表1中的信息。
- 完成信息后,单击 创建实例模板。
创建实例模板时,将执行验证步骤以确保可以使用模板来供应虚拟服务器实例。
| 字段 | 值 |
|---|---|
| 地区 | 位置由区域(特定地理区域)和专区(区域内的容错数据中心)组成。 选择您希望创建虚拟服务器实例的地理位置、区域和分区。 |
| 姓名 | 虚拟服务器实例的名称是必需的。 |
| 资源组 | 为实例选择资源组。 |
| 图像 |
单击 更改图像 以选择图像。 在“选择映像”页面上,可以选择库存映像,定制映像,目录映像,快照或现有卷。 如果配置实例的地理位置支持该架构,则可以选择 x86 或 s390x 架构。 选择图像后,单击 保存。
|
| 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 图标 |
| 用户数据 | 您可以添加自动执行公共配置任务或运行脚本的用户数据。 有关更多信息,请参阅用户数据。 |
| 元数据 | 默认情况下已禁用,可让从该模板创建的实例收集自身的元数据。 单击切换打开元数据服务。 更多信息,请参阅 关于 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 |
列出所有放置组 |
使用以下命令确定创建实例模板所需的信息。
-
列出与您的账户关联的地区。
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 -
切换到目标区域。
ibmcloud target -r <region-name> -
列出与目标区域关联的区域。
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 -
列出与帐户关联的 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 参考。 -
列出可用于创建实例模板的可用配置文件。
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 -
列出与 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 文档。 -
列出可用于创建实例模板的可用映像。
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 -
列出可以与实例关联的可用 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 密钥入门。
-
列出所有可与您的实例关联的可用放置组。
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 规范文档 |
|---|---|---|
| VPC | GET /vpcs |
列出所有 VPC |
| 区域 | GET /regions/<region>/zones |
列出区域中的所有专区 |
| Profile | GET /instance/profiles |
列出所有实例概要文件 |
| 子网 | GET /subnets |
列出所有子网 |
| 图像 | GET /images |
列出所有图像 |
| 键 | GET /keys |
列出所有密钥 |
| 放置组 | GET /placement_groups |
列出所有放置组 |
使用以下命令确定创建实例模板所需的信息。
-
列出与帐户关联的 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。 -
列出与您的账户关联的地区。
curl -X GET "$vpc_api_endpoint/v1/regions?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token" -
列出与该区域相关的区域。
curl -X GET "$vpc_api_endpoint/v1/regions/$region_name/zones?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token" -
列出可用于创建实例模板的配置文件。
curl -X GET "$vpc_api_endpoint/v1/instance/profiles?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token" -
列出与 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-创建子网。 -
列出可用于创建实例模板的可用图像。
curl -X GET "$vpc_api_endpoint/v1/images?version=2023-07-13&generation=2" -H "Authorization: Bearer $iam_token" -
列出可以与实例关联的可用 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 密钥入门。
-
列出所有可与您的实例关联的可用放置组。
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 实例模板详细信息。
| 实例模板详细信息 | 列表块 | 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 块收集以下信息。
-
收集实例概要文件详细信息。 对您选择的配置文件运行以下代码块。 请参阅 x86 实例概要文件,以获取可用概要文件的列表。 有关更多信息,请参阅 ibm_is_instance_profiles 上的 Terraform 文档。 要使用实例配置文件,请参考实例配置文件数据源。 有关更多信息,请参阅 ibm_is_instance_profile 上的 Terraform 文档。
data "ibm_is_instance_profile" "example_profile" { name = "bx2-2x8" } -
列出可用于创建实例的映像。 您可以使用库存映像,帐户中的定制映像或专用目录中与帐户共享的映像。 有关详细信息,请参阅 Terraform 文档 ibm_is_image。 如果计划使用从私有目录共享的映像,请参阅有关 ibm_cm_version 或 ibm_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 中的专用目录中使用跨帐户映像引用。
-
创建 VPC 资源或通过引用 VPC 数据源来使用现有 VPC。 有关更多信息,请参阅有关数据源 ibm_is_vpc 或资源 ibm_is_vpc 的 Terraform 文档。
data "ibm_is_vpc" "example_vpc" { name = "example-vpc" } -
创建子网资源或通过引用子网数据源来使用现有子网。 有关更多信息,请参阅有关数据源 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" } -
要使用现有的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 参考。
后续步骤
创建实例模板后,可以供应单个虚拟服务器实例,也可以在实例组中同时供应多个实例。 (可选) 您可以为实例组设置自动缩放策略,以动态添加虚拟服务器实例或从组中除去虚拟服务器实例。 有关更多信息,请参阅以下主题: