更新时间:2024-07-11 GMT+08:00

创建资源栈

进入资源栈列表页面单击页面右上角的“创建资源栈”,进入创建资源栈页面 如图1

图1 创建资源栈

步骤:

  1. 选择模板:
    此处有两种方式可以选择模板,一是通过Obs模板的URL指定模板,二是选择上传本地文件,三是在我的模板中获取模板,如图2
    图2 创建资源栈-选择模板

    此处以上传模板为例,模板文件类型支持.tf格式和.tf.json格式。

    创建虚拟私有云VPC和弹性云服务器ECS的.tf模板示例如下:

    terraform {
        required_providers {
          huaweicloud = {
            source  = "huawei.com/provider/huaweicloud"
            version = "1.41.0"
          }
        }
      }
    
      provider "huaweicloud" {
        cloud     = "myhuaweicloud.com"
        endpoints = {
          iam = "iam.cn-north-4.myhuaweicloud.com"
        }
        insecure   = true
        region     = "cn-north-4"
        auth_url   = "https://iam.cn-north-4.myhuaweicloud.com:31943/v3"
      }
    
      variable "vpc_name" {
        type        = string
        description = "vpc name"
        default     = "rf_teststack_vpc"
        sensitive   = true
        nullable    = false
      }
    
      variable "subnet_name" {
        type        = string
        description = "subnet name"
        default     = "rf_teststack_subnet"
      }
    
      variable "ecs_name" {
        type        = string
        description = "ecs name"
        default     = "rf_teststack_ecs"
      }
    
      variable "ecs_admin_passwd" {
        type        = string
        description = "ecs passwd"
      }
    
      resource "huaweicloud_vpc" "rf_doc_vpc" {
        name   = var.vpc_name
        cidr   = "192.168.0.0/16"
      }
    
      resource "huaweicloud_vpc_subnet" "rf_doc_subnet" {
        name       = var.subnet_name
        vpc_id     = huaweicloud_vpc.rf_doc_vpc.id
        cidr       = "192.168.1.0/24"
        gateway_ip = "192.168.1.1"
      }
    
      resource "huaweicloud_compute_instance" "rf_doc_ecs" {
        name               = var.ecs_name
        flavor_id          = "c7.large.2"
        admin_pass         = var.ecs_admin_passwd
        image_id           = "cecc4bcf-b055-4d35-bd5f-693d4412eaef"
        network {
          uuid = huaweicloud_vpc_subnet.rf_doc_subnet.id
        }
        system_disk_type   = "SAS"
        system_disk_size   = 100
        stop_before_destroy = false
        delete_disks_on_termination = true
        charging_mode      = "postPaid"
        auto_renew         = false
      }
    
      output "ecs_address" {
        value = huaweicloud_compute_instance.rf_doc_ecs.access_ip_v4
        description = "The ecs private address."
      }
    
      output "ecs_id" {
        value = huaweicloud_compute_instance.rf_doc_ecs.id
        description = "The ecs resource id."
      }

    创建虚拟私有云VPC和弹性云服务器ECS的.tf.json模板示例如下:

    {
        "terraform": {
          "required_providers": {
            "huaweicloud": {
              "source": "huawei.com/provider/huaweicloud",
              "version": "1.41.0"
            }
          }
        },
        "provider": {
          "huaweicloud": {
            "cloud": "myhuaweicloud.com",
            "endpoints": {
              "iam":"iam.cn-north-4.myhuaweicloud.com"
            },
            "insecure": true,
            "region": "cn-north-4",
            "auth_url": "https://iam.cn-north-4.myhuaweicloud.com:31943/v3"
          }
        },
        "variable": {
          "vpc_name": {
            "type": "string",
            "description": "vpc name",
            "default": "rf_teststack_vpc",
            "sensitive": true,
            "nullable": false
          },
          "subnet_name": {
            "type": "string",
            "description": "subnet name",
            "default": "rf_teststack_subnet"
          },
          "ecs_name": {
            "type": "string",
            "description": "ecs name",
            "default": "rf_teststack_ecs"
          },
          "ecs_admin_passwd": {
            "type": "string",
            "description": "ecs passwd"
          }
        },
        "resource": {
          "huaweicloud_vpc": {
            "rf_doc_vpc": {
              "name": "${var.vpc_name}",
              "cidr": "192.168.0.0/16"
            }
          },
          "huaweicloud_vpc_subnet": {
            "rf_doc_subnet": {
              "name": "${var.subnet_name}",
              "vpc_id": "${huaweicloud_vpc.rf_doc_vpc.id}",
              "cidr": "192.168.1.0/24",
              "gateway_ip": "192.168.1.1"
            }
          },
          "huaweicloud_compute_instance": {
            "rf_doc_ecs": {
              "name": "${var.ecs_name}",
              "flavor_id": "c7.large.2",
              "admin_pass": "${var.ecs_admin_passwd}",
              "image_id": "cecc4bcf-b055-4d35-bd5f-693d4412eaef",
              "network": {
                "uuid": "${huaweicloud_vpc_subnet.rf_doc_subnet.id}"
              },
              "system_disk_type": "SAS",
              "system_disk_size": 100,
              "stop_before_destroy": false,
              "delete_disks_on_termination": true,
              "charging_mode": "postPaid",
              "auto_renew": false
            }
          }
        },
        "output": {
          "ecs_address": {
            "value": "${huaweicloud_compute_instance.rf_doc_ecs.access_ip_v4}",
            "description": "The ecs private address."
          },
          "ecs_id": {
            "value": "${huaweicloud_compute_instance.rf_doc_ecs.id}",
            "description": "The ecs resource id."
          }
        }
      }

    示例模板中包含收费资源,请用户使用前确认是否需要开通该资源。

    模板详解:主要分为五个部分:

    1. 虚拟私有云VPC,“resource”中“huaweicloud_vpc”为VPC创建信息。
    2. 在VPC中定义一个子网,子网是VPC的IP地址范围内的一个区段,

      “resource”中“huaweicloud_vpc_subnet”为子网创建信息。

    3. 在模板中定义弹性云服务器ECS,“resource”中“huaweicloud_compute_instance”为ECS创建信息。
    4. “variable”中定义了参数,用户可以在创建和部署时将自定义参数值输入模板来指定自定义的内容
    5. “output”中定义了模板的输出,在资源栈创建完成后会按照定义生成输出,在输出页会展示输出的信息
  2. 配置参数

    选择好模板以后单击“下一步”,来到配置参数页面,在此页面中,您可以修改资源栈名称和资源栈描述,如图3

    资源栈名称: 资源栈名称以中文或英文开始,支持中文、大小写英文、数字、下划线、中划线,128个字符之内。 资源栈名称不能重名。

    资源栈描述: 由任意字符组成, 字符数量需要控制在1024个字符之内。

    图3 创建资源栈-配置参数

    配置参数的填写,如果参数名称之前有红色“*”标记则为必填参数,所有必填参数填写完毕,满足设定规则。

    如果存在不满足配置规则的参数如:图4,值所在列会出现红框标记,此时单击下一步不会出现页面跳转

    图4 创建资源栈-不满足条件展示

    配置成功后可以单击“下一步”进入资源栈设置页面。

    如果资源栈名称或资源栈描述为地址栏URL传入,如存在特殊字符, 特殊字符需符合http的规则转义之后传入;

    另外需要到对应服务控制台确认在此页面默认的VPC、子网和ECS的名称是否已经有同名的资源实例存在,如果存在则需要更改名称,防止创建失败。

  3. 资源栈设置
    配置好参数以后单击下一步来到“高级配置”页面,如图5
    图5 创建资源栈-资源栈设置

    *必选项:

    IAM权限委托:选择权限委托可明确定义RFS服务在资源栈上可执行的所有操作(如创建、更新、删除资源栈等),如果委托权限不足,有可能导致后续操作失败。

    非必选项:

    单击“删除保护”按钮,可以防止资源栈被意外删除,创建后可单击资源栈操作列的更新按钮更新;

    单击“回滚设置”按钮,会切换回滚设置的开关状态,开启回滚表示操作失败时,会自动回滚至系统所保存的上一个成功的资源状态。

    配置完毕后可以单击“下一步”进入确认配置页面。

  4. 确认配置

    此时有两种途径可以操作,分别是单击“创建执行计划”和“直接部署资源栈”:

    1. 单击“直接部署资源栈”,出现弹框确认
      图6 直接部署资源栈
      单击“确定”会发现有新的资源栈生成,状态为“正在部署”,如图7
      图7 正在部署

      稍后,状态更新为“部署成功”,如图8

      图8 部署成功
    2. 单击“创建执行计划”,页面弹出创建执行计划弹出框,您可以借此设置执行计划的名称与描述,如图9
      图9 创建执行计划弹出框

      单击“确定”页面跳转到资源栈详情中的“执行计划”页面

      等待执行计划生产完毕,并且刷新页面,可以看到执行计划的状态更新为“创建成功,待部署”,如图10

      图10 执行计划创建成功

      此时返回资源栈列表页,资源栈的状态为“创建成功,待部署”,如图11
      图11 资源栈列表

      “创建执行计划”可以预览整个资源栈的资源属性的变化,评估造成的影响。评估执行计划符合您的预期,您就可以对计划单击“执行”。 创建执行计划不会产生费用,只有您对计划进行了执行操作时,系统才会对您的资源栈进行更改。

      单击执行计划操作列的“部署”,对执行计划进行部署,如图12

      图12 执行计划确认框

      单击弹出框中的“执行”,页面右上角弹出“正在部署”的提示框,此时返回资源栈列表页,可以看到有新的资源栈生成,状态为“正在部署”,如图13

      图13 资源栈资源正在部署

      稍后,资源栈状态更新为“部署成功”如图14

      图14 资源栈资源部署成功

      此时,进入资源栈详情中的“执行计划”页面,执行计划的状态为“已执行部署”,如图15

      图15 执行计划已执行部署

      此时,单击导航栏中的“事件”,可以看到资源栈资源已经部署成功,如图16

      图16 资源已经部署成功

      您可以去对应的云服务中查看,详细如下:

      1. 在总控制台的服务列表中找到并单击“弹性云服务器”,进入弹性云服务器页面,可以看到刚部署的弹性云服务器如图17
        图17 弹性云服务器

        至此,资源栈资源均部署成功。