早就听说Terraform 可以对aws 进行集成,今天实践了一把:
1:下面开始编写配置文件:config.tf:
- provider "aws" {
- access_key = "aws的accesskey"
- secret_key = "aws的secretkey"
- region = "aws地区代码"
}
编写好以后,开始执行terraform init. 这个初始化,需要有点耐心,要花点时间:(生成好以后,会在文件夹下面生成.terraform 文件夹)
2: terraform plan
该terraform plan命令用于创建执行计划。除非明确禁用,否则Terraform会执行刷新,然后确定要实现配置文件中指定的所需状态需要执行哪些操作。
该命令是检查一组更改的执行计划是否符合您的期望而不对实际资源或状态进行任何更改的便捷方法。例如,terraform plan可以在将更改提交到版本控制之前运行,以建立对其将按预期方式运行的信心。
3开始定义VPC:
resource "aws_vpc" "myvpc" {
cidr_block = "10.10.0.0/24"
enable_dns_hostnames = true
enable_dns_support = true
instance_tenancy = "default"
tags = {
Name = "myvpc"
}
}
4: 下面看一下执行效果:
5: 下面开始执行这个创建 vpc 的操作: terraform apply:
6: 下面登入到aws 的界面去检查一下,果然建立好了:
8: 好,先记录下上面VPC 的ID: vpc-0f436026f5a83e26b, 开始创建子网:
resource "aws_subnet" "mysubnt-a1" {
vpc_id = "vpc-0f436026f5a83e26b"
cidr_block = "10.10.0.0/25"
availability_zone = "ap-northeast-1a"
map_public_ip_on_launch = false
tags = {
Name = "mysubnt-a1"
}
}
结果总是报如下的错:
原因查了一下资料,原来:tag 后面要加 “=”, 上面的source 是修改后的,后面就可以成功了:
9:下面记录一下subnet 的ID: subnet-0954ed0bd8652ab41 (上面图的最下方就给出了)。
开始建EC2: ec2.tf
resource "aws_instance" "myinstance" {
ami = "ami-0992fc94ca0f1415a"
instance_type = "t2.micro"
key_name = "shp"
subnet_id = "subnet-0954ed0bd8652ab41"
private_ip = "10.10.0.101"
tags = {
Name = "myinstance"
}
}
上面 ke_name 要是要来就没有的话,建的时候是会报错的,可以先把这个key 的设置去掉,等key 创建好了以后,再加上来,我就实践了一把:
原来的key 是没有的:
我后来把key_name 加到ec2.tf 里面重新terraform apply 了一下,发现是把原来的intance destroy, 再重新create:
10: 发现后来的key 就有了,这样的话,就可以连上去啦,话说,还有给个public IP.
11: 为了删除原来建的资源,可以先看一下用terraform 建了哪些资源: terraform show, 可以看到刚才建的资源,然后可以terraform destroy 一下,再看一下:
11, 最后总结一下terraform 真是方便,可以快速部署,可以快速更新~