terraform学习(一)

警告
本文最后更新于 2022-04-23 18:31,文中内容可能已过时。

Providers: 提供与不同云厂商的交互 支持的Providers: https://registry.terraform.io/browse/providers

初体验

目录结构如下

03887-ldcedko4p3.png
03887-ldcedko4p3.png

一、声明Provider

这里以阿里云为例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# file: versions.tf
terraform {
  # 指定terraform的版本号
  required_version = "1.1.9"
  # 声明我们要用的peovider列表,这里的内容可以通过官方文档获取
  required_providers {
    alicloud = {
      source = "aliyun/alicloud"
      version = "1.164.0"
    }
  }
}

required_version可以通过terraform version查看,注意版本号不带v

二、配置Provider

上面我们声明了我们要使用阿里云,下面需要配置阿里云认证的相关参数

1
2
3
4
5
6
# file: main.tf
provider "alicloud" {
  access_key = "${var.ali_access_key}"
  secret_key = "${var.ali_secret_key}"
  region     = "${var.ali_region}"
}

我们通过环境变量来读取所需要的信息,环境变量需要以TF_VAR_开头 例如: TF_VAR_ali_access_key=xxx、TF_VAR_ali_secret_key=xxx、TF_VAR_ali_region=xxx

声明变量类型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# variables.tf
variable "ali_access_key" {
    type = string
}

variable "ali_secret_key" {
    type = string
}

variable "ali_region" {
    type = string
}

三、声明资源

这里指定我们要创建一个VPC网络,并且还会创建一个交换机

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# file: ali_vpc.tf
# 定义一个资源
# 格式 resource "资源类型" "资源名称"
resource "alicloud_vpc" "vpc" {
  vpc_name   = "tf_test_foo"
  cidr_block = "172.16.0.0/12"
}

# 交换机属于vpc,所以可以顺带创建了
resource "alicloud_vswitch" "vsw" {
  # 引用上面的vpc资源,通过`资源类型.资源名称.id`获取
  vpc_id     = alicloud_vpc.vpc.id
  vswitch_name = "tf_test_foo-a"
  cidr_block = "172.16.0.0/24"
  zone_id    = "cn-shanghai-a"
}

四、初始化terraform

1
2
cd tf-example
terraform init 

init含义: Terraform 使用tf-example作为工作目录,并且还会创建.terraform目录来存储设置信息、缓存插件和模块,状态数据。

五、检查计划

检查计划用来检查我们的配置,并不会真正的创建资源

1
terraform plan

可以看到提示我们有两个新增

31336-y4hqq014v2.png
31336-y4hqq014v2.png

六、创建资源

1
terraform apply

可以看到vpc和交换机都成功创建了

17300-s0bdlth6xec.png
17300-s0bdlth6xec.png

请我喝杯水
SoulChild 微信号 微信号
SoulChild 微信打赏 微信打赏
0%