Terraform 的安装很容易,从官方网站下载二进制文件解压之后 就可以直接使用了。
https://www.terraform.io/
以windows为例的话,我为了在cmd里面直接使用,需要把下载解压后的文件加入到环境变量Path里面。
使用的话,直接先看两个简单的例子。
例1 在指定的AWS 账号里面创建一个新的EC2 实例,他有多种验证的方式,这里我们使用最简单的静态密码验证(非常不安全)
https://registry.terraform.io/providers/hashicorp/aws/latest/docs
provider "aws" { region = "us-west-2" access_key = "AK2342LKSDFJKSLFSDFX" secret_key = "fwssdjk22342lkshdsiwerwl1FaK82Fkz9"}resource "aws_instance" "myec2" { ami = "ami-0e999cbd62129e3b1" instance_type = "t2.micro}
相关的文档可以在这里看见
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
把这个文件保存为一个first_ec2.tf 文件。
然后切换到这个目录下面,执行 terraform init, 他会自动我们下载我们在tf文档里面定义的provider 的 插件,在上面的例子里面,我定义的是 "aws", 他就会自动下载对应的插件。我这里没有指定插件的版本,那么他会自动下载最新版本。
官方推荐,在使用的时候应该尽量明确地定义版本号
执行init 之后的效果
初始化之后,然后执行 terraform plan, 他会检测tf文件,然后告诉你哪些资源进行了改变
如果检测无误,可以执行 terraform apply, 那么他就开始配置了
配置成功
例2 配置一个github的repository,他的方式和EC2 很类似,只不过是验证的方式略有不同
https://registry.terraform.io/providers/integrations/github/latest/docs
provider "github" {
token = "574e72342kklfsfsf2d1359064f76ca85aac1"
}
resource "github_repository" "example" {
name = "terraform"
description = "terraform test "
visibility = "public"
}
https://registry.terraform.io/providers/integrations/github/latest/docs/resources/repository
同样的操作,可以看见成功创建了repository
当我们执行上面的操作时候,他会自动创建、更新一个terraform.tfstate的文件
这个文件会自动保存我们所创建资源的相关信息和属性,以便于追踪
如果说我们对tf文档进行了修改,比如说我把上面的t2.micro 改成 t2.small,然后重新执行 terraform plan, terraform apply
可以看见对应的tfstate文件内容也变更了
如果我们想删除创建的资源,可以用 terraform destory 来删除,如果只打算删除部分资源,可以通过-target里指定。但是一般说来,一个比较好的习惯是把不同的资源放在不同的文件夹里面,这样避免互相冲突。