早就聽說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 真是友善,可以快速部署,可以快速更新~