运维开发网

Terraform 学习笔记(1)

运维开发网 https://www.qedev.com 2021-02-23 09:31 出处:51CTO 作者:beanxyz
Terraform的安装很容易,从官方网站下载二进制文件解压之后就可以直接使用了。https://www.terraform.io/以windows为例的话,我为了在cmd里面直接使用,需要把下载解压后的文件加入到环境变量Path里面。使用的话,直接先看两个简单的例子。例1在指定的AWS账号里面创建一个新的EC2实例,他有多种验证的方式,这里我们使用最简单的静态密码验证(非常不安全)https:/

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", 他就会自动下载对应的插件。我这里没有指定插件的版本,那么他会自动下载最新版本。

官方推荐,在使用的时候应该尽量明确地定义版本号

Terraform 学习笔记(1)

执行init 之后的效果

Terraform 学习笔记(1)

初始化之后,然后执行 terraform plan, 他会检测tf文件,然后告诉你哪些资源进行了改变

Terraform 学习笔记(1)

如果检测无误,可以执行 terraform apply, 那么他就开始配置了

Terraform 学习笔记(1)

配置成功

Terraform 学习笔记(1)

例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 学习笔记(1)

当我们执行上面的操作时候,他会自动创建、更新一个terraform.tfstate的文件

Terraform 学习笔记(1)

这个文件会自动保存我们所创建资源的相关信息和属性,以便于追踪

Terraform 学习笔记(1)

如果说我们对tf文档进行了修改,比如说我把上面的t2.micro 改成 t2.small,然后重新执行 terraform plan, terraform apply

Terraform 学习笔记(1)

可以看见对应的tfstate文件内容也变更了

Terraform 学习笔记(1)

如果我们想删除创建的资源,可以用 terraform destory 来删除,如果只打算删除部分资源,可以通过-target里指定。但是一般说来,一个比较好的习惯是把不同的资源放在不同的文件夹里面,这样避免互相冲突。

Terraform 学习笔记(1)

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号