Terraform快速入门

1.入门案例准备

  • 拥有阿里云账号且余额大于100RB
  • 开通AK/SK,并且具有完全访问管理权限
  • 安装Terraform,https://www.terraform.io/

2.案例代码

Terraform的配置文件以.tf为后缀,例如main.tf等

#定义云厂商
provider "alicloud" {
  region     = "cn-shanghai"
  access_key = "xxxx"       #修改成自己的ak
  secret_key = "xxx" #修改成自己的sk
}


#创建vpc
resource "alicloud_vpc" "vpc" {
  vpc_name   = "vpc_1"
  cidr_block = "10.0.0.0/16"
}

# 创建vswitch
# alicloud_vswitch是阿里云的资源字段,vsw_1字段是tf文件中的自定义唯一资源名称,vswitch_name字段是在阿里云上的自定义备注名
resource "alicloud_vswitch" "vsw_1" {
  vswitch_name = "vsw_aliyun1"
  vpc_id       = alicloud_vpc.vpc.id
  cidr_block   = "10.0.0.0/24"
  zone_id      = var.region
}

#新建安全组
resource "alicloud_security_group" "nsg1" {
  name   = "lyc_aliyun_nsg1"
  vpc_id = alicloud_vpc.vpc.id
}

#将nsg_rule1、nsg_rule2加入安全组lyc_aliyun_nsg1中
resource "alicloud_security_group_rule" "nsg_rule1" {
  type              = "ingress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "1/65535"
  priority          = 1
  security_group_id = alicloud_security_group.nsg1.id
  cidr_ip           = "0.0.0.0/0"
}

#创建ECS实例
resource "alicloud_instance" "instance" {
  # cn-shanghai
  availability_zone          = var.region
  security_groups            = ["${alicloud_security_group.nsg1.id}"]
  instance_type              = "ecs.n1.small"
  system_disk_category       = "cloud_ssd"
  image_id                   = "centos_7_9_x64_20G_alibase_20220824.vhd"
  instance_name              = "lyc-kevin"
  vswitch_id                 = alicloud_vswitch.vsw_1.id
  internet_max_bandwidth_out = 1
  password                   = "5jejYWzSjZhWQc7G22"
}

上述案例首先定义了云厂商, Provider 可以理解为各个云厂商提供的与云资源交互的后端驱动,不同的基础设施提供商都需要提供一个Provider来实现对自家基础设施的统一管理,例如我们熟知的 Azure,AWS,GCP,Kubernetes,Aliyun等等

2.1语法

在文件中除了定义provider之后,还需要配置一些资源,例如VPC、交换机、安全组以及定义实例等

resource "azurerm_resource_group" "example" {
  name = "Web_Test_TF_RG"
  location = "East Asia"
}

其中azurerm_resource_group为创建的资源类型,这个可以在Terraform提供的文档中查找(alicloud|docs),example是定义的资源名称。中括号里面的参数也是Terrform提供的文档中可以查看属性。

2.2 Terraform状态管理

执行Terraform apply命令后,会在Terraform文件下生成terraform.tfstate和terraform.tfstate.lock.info的文件

  • terraform.tfstate文件:记录Terraform执行apply后的部署状态信息。
  • terraform.tfstate.lock.info文件:字面理解就是加锁,保证安全性。
  • 其中terraform.tfstate.backup文件:记录上一次的执行情况

在这里插入图片描述

3.变量

Terraform允许用户定义输入变量、输出变量。变量语法:

varible "NAME" {
  [CONFIG ...]
}

变量声明包含三个参数:

  • description:描述参数的使用说明
  • default:设置默认值,如果在配置或者命令行中设置了参数的值,那么会使用参数的值,如果没有设置那么会使用默认的值。这里如果在命令行:terraform plan -var “NAME” =“属性值”
  • type: 对用户输入的变量类型强制约束,包括string、number、bool、list、map、set、等类型。如果输入的属性值与设定的类型不匹配,则会报错。

输出变量output

output "<NAME>" {
    value = <VALUE>
    [CONFIG]
}

包含value属性和其他的属性,比如description属性,用于对属性进行说明。
一般在执行apply才会显示输出的变量内容。
可直接使用命令terraform output NAME直接查看变量内容

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值