本文以ECS产品为例,为您进行介绍如何创建、更新和删除产品。

前提条件

请确保您已经为管理员授予服务目录管理员侧的权限。具体操作,请参见为管理员授权

背景信息

产品是服务目录专有概念,底层是基于Terraform构成的云资源模板。根据Terraform的定义,可以是单个云资源,也可以是多个云资源的组合。管理员可以定义合规产品,并管理产品的多个版本。

管理员通过产品对资源编组,以实现统一的生命周期管理。本文示例场景中,企业A的多个业务人员均需要管理ECS实例的生命周期,此时可以通过创建产品的方式,定义ECS相关资源,然后将产品添加到产品组合并为多个业务人员授权,从而实现统一管理的诉求,降低管理成本。创建产品后,管理员也可以按需为产品创建产品版本,并定义推荐信息,以便后续基于不同产品版本灵活管理产品。

说明 关于Terraform模板的更多信息,请参见模板语法

创建产品

方式一:选择入门示例模板创建产品

  1. 管理员登录服务目录控制台
  2. 在左侧导航栏,选择管理员 > 产品管理
  3. 产品管理页面,单击创建产品
  4. 创建产品页面,设置以下参数,然后单击确定
    参数 说明 示例
    名称 产品的名称。 ECS产品
    提供者 产品的提供者。当您对Terraform模板有疑问时,可以联系产品的提供者进行解答。 Alice
    产品描述 产品的详细说明。 创建ECS。
    版本名称 产品版本的名称。用于标记具体的产品版本。 1.0.0
    版本描述 产品版本的详细说明。 ECS产品初始版本。
    版本内容
    1. 选择入门示例
    2. 选择云服务器ECS
    云服务器ECS

方式二:编写Terraform模板创建产品

创建产品时,有时需要手动编写Terraform模板(例如:create_ecs),然后将模板文件夹上传到服务目录控制台。

模板示例中包含main.tf和variables.tf两个文件。其中,resource定义要创建的资源(专有网络、交换机、安全组和ECS实例)、output定义实例创建以后用户可以看到的输出内容(专有网络ID、交换机ID和ECS实例ID),variable通过AllowedValues定义了可选的ECS实例规格。

说明
  • main.tf中instance_type = var.instance_type表示ECS实例规格引用了variables.tf中的规格参数。
  • main.tf中定义的可用区为cn-beijing-h,有权限的终端用户启动产品时需要选择实例所在的地域为华北2(北京),避免可用区和地域不一致导致实例创建失败。
  • main.tf

    
    resource "alicloud_vpc" "vpc" {
      name       = "tf_test_foo"
      cidr_block = "172.16.0.0/12"
    }
    
    resource "alicloud_vswitch" "vsw" {
      vpc_id            = alicloud_vpc.vpc.id
      cidr_block        = "172.16.0.0/21"
      availability_zone = "cn-beijing-h"
    }
    
    resource "alicloud_security_group" "default" {
      name = "default"
      vpc_id = alicloud_vpc.vpc.id
    }
    
    resource "alicloud_instance" "instance" {
      # cn-beijing
      availability_zone = "cn-beijing-h"
      security_groups = alicloud_security_group.default.*.id
      # series III
      instance_type        = var.instance_type
      system_disk_category = "cloud_efficiency"
      image_id             = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
      instance_name        = "test_foo"
      vswitch_id = alicloud_vswitch.vsw.id
      internet_max_bandwidth_out = 10
    }
    
    resource "alicloud_security_group_rule" "allow_all_tcp" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "1/65535"
      priority          = 1
      security_group_id = alicloud_security_group.default.id
      cidr_ip           = "0.0.0.0/0"
    }
    
    output "vpc_id" {
      value       = alicloud_vpc.vpc.id
      description = "The ID of the VPC."
    }
    
    output "vswitch_id" {
      value       = alicloud_vswitch.vsw.id
      description = "The ID of the switch."
    }
    
    output "instance_id" {
      value       = alicloud_instance.instance.id
      description = "The ECS instance ID."
    }
  • variables.tf

    variable "instance_type" {
      type = string
      description = <<EOT
      {
        "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
        "AllowedValues": ["ecs.s6-c1m1.small", "ecs.s6-c1m2.small", "ecs.s6-c1m2.large", "ecs.s6-c1m2.xlarge", "ecs.s6-c1m2.2xlarge"],
        "Label": "ECS实例规格"
      }
      EOT
    }

编写模板完成后,您可以按照以下步骤创建产品。

  1. 管理员登录服务目录控制台
  2. 在左侧导航栏,选择管理员 > 产品管理
  3. 产品管理页面,单击创建产品
  4. 创建产品页面,设置名称提供者产品描述等基本信息。
    参数 说明 示例
    名称 产品的名称。 ECS产品
    提供者 产品的提供者。当您对Terraform模板有疑问时,可以联系产品的提供者进行解答。 Alice
    产品描述 产品的详细说明。 创建ECS。
  5. 创建产品页面,设置版本名称版本描述版本内容等初始版本信息。
    参数 说明 示例
    版本名称 产品版本的名称。用于标记具体的产品版本。 1.0.0
    版本描述 产品版本的详细说明。 ECS产品初始版本。
    版本内容
    1. 选择自定义
    2. 单击上传文件夹
    3. 选中已编写的模板示例所在的文件夹。
    create_ecs
  6. 单击确定

更新产品

  1. 在左侧导航栏,选择管理员 > 产品管理
  2. 产品管理页面,单击目标产品(VPC产品)操作列的编辑
  3. 修改产品信息对话框,更新名称提供者描述
  4. 单击确定

删除产品

说明 删除产品前请确保该产品已不再使用,否则终端用户将无法正常管理该产品的资源。如果产品已经添加到产品组合,删除操作将同步在产品组合中生效,请谨慎操作。
  1. 在左侧导航栏,选择管理员 > 产品管理
  2. 产品管理页面,单击目标产品(VPC产品)操作列的删除
  3. 删除产品对话框,确认目标产品信息无误后,单击确定