使用Terraform管理阿里云资源

云命令行(Cloud Shell)中预装了Terraform。Terraform是一种开源工具,用于安全高效地预配和管理云基础结构。您可以通过Terraform管理阿里云资源。

启动Cloud Shell

选择一种方式启动云命令行:
  • 在控制台中运行

    单击控制台首页头部导航的命令行按钮,启动云命令行。

  • 独立运行

    在浏览器中输入https://shell.aliyun.com打开云命令行操作界面。

    您可以根据实际需要打开多个命令行窗口,但最多可同时打开5个云命令行窗口。

在启动云命令时,请注意:
  • 第一次连接云命令行时会为您创建虚拟机,会消耗一些时间,最长不超过30秒。

  • 打开多个云命令行窗口时,所有窗口都会连接到同一台虚拟机。虚拟机数量不会因您打开新的命令行窗口而增加。

管理云资源

  1. 在Cloud Shell中编写Terraform模板。

    您可以使用vim命令直接编写模板。

    执行如下命令创建一个工程目录及模板文件:

    mkdir terraform-project
    cd terraform-project 
    touch main.tf

    以下代码示例是一个创建ECS实例的Terraform模板,请将内容粘贴到main.tf中。Cloud Shell 可自动获取登录账号的身份认证信息,无需额外设置环境变量。

    provider "alicloud" {
      region = "cn-beijing"
    }
    
    data "alicloud_zones" "default" {
      available_disk_category     = "cloud_efficiency"
      available_resource_creation = "VSwitch"
    }
    
    resource "alicloud_vpc" "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"
      zone_id    = data.alicloud_zones.default.zones.0.id
    }
    
    resource "alicloud_security_group" "default" {
      name   = "default"
      vpc_id = alicloud_vpc.vpc.id
    }
    
    resource "alicloud_instance" "instance" {
      # cn-beijing
      availability_zone = data.alicloud_zones.default.zones.0.id
      security_groups   = alicloud_security_group.default.*.id
      # series III
      instance_type              = "ecs.n4.large"
      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"
    }
  2. 执行init命令初始化Terraform。

    terraform init
  3. 执行plan命令预览配置。

    terraform plan
  4. 执行apply命令创建ECS实例。

    terraform apply

切换 Terraform 版本

Cloudshell 中默认的 Terraform 版本为 0.12.31,如果需要更高的版本可以通过tfenv来切换。

  1. 查看Cloud Shell中内置的Terraform版本。

tfenv list
  1. 切换到需要的Terraform版本。

tfenv use <terraform_version>

相关文档