尝试使用Terraform
我想尝试使用Terraform。
由于有机会在公司内部介绍Terraform的简单使用方法,为了准备起见,我在此做出以下备忘录。
创建AWS账户
我会使用免费帐户来创建。
首次登陆的注意事项
使用Root用户的电子邮件进行登录。
预算的设定
如果您不想因为疏忽而持续付费EC2,可以选择AWS Billing→Budgets并设置预算。只需设置大约10美元,就可以避免不必要的连续付费。
区域设置
请在左上角的屏幕用户名称右侧更改为东京(ap-northeast-1)。如果忘记更改,资源将被创建在俄亥俄州等其他地区。尽管本身并没有问题,但是无法看到其他区域的资源,所以无论在哪个区域创建资源都要确保记住自己创建在哪个区域。作为其中一部分,更改为东京区域并创建资源。
创建资源
准备好
建立一个用于运行terraform的EC2实例。
VPC和子网都已经在默认设置下创建完成,ING也是同样的情况。
创建EC2
亚马逊 Linux 2
t2.micro
只需一种选择的话,可以这样转述:
只要确保安全组从家庭网络的回路IP地址访问即可。
EIP 的分配
从亚马逊获取EIP,并分配给创建的EC2实例。
请注意如果不进行分配而仅保持借用状态会产生费用。
EC2的初始设置
创建用户
设置密码
赋予sudo权限
如果想要这样做的人,可以将/etc/ssh/sshd_config文件中的PasswordAuthentication设置为yes,这样就可以使用密码认证登录了。
我不会去做
创建IAM用户
到目前为止,我一直在使用管理帐号进行操作,但如果要在terraform中做一些事情,就需要一个具有权限的用户来进行。请使用IAM创建您自己的帐户,并完成首次登录。只要有AdministratorAccess权限,就没有任何问题。
创建用户后,需在认证信息选项卡中生成访问密钥。生成的访问密钥和秘密访问密钥都是terraform所必需的。由于秘密访问密钥只能在生成时确认,因此请记下来。
引入terraform
需要下载并解压unzip工具,但通常这个工具都是默认安装的。如果没有,可以使用yum命令安装。
terraform本身可以通过zip文件获取。
在终端中执行以下命令来下载terraform 0.13.0版本:
$ wget https://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip
你也可以根据需要修改其中的0.13.0/terraform_0.13.0_linux_amd64.zip部分。
请以中国文的方式将以下内容改写成中文,只需要一种方式:
“`
$ sudo unzip ./terraform_0.13.0_linux_amd64.zip -d /usr/local/bin/
“`
使用”terraform -v”命令进行验证。
[yamanashi@ip-172-31-46-224 ~]$ terraform -v
Your version of Terraform is out of date! The latest version
is 0.13.5. You can update by downloading from https://www.terraform.io/downloads.html
Terraform v0.13.0
可以的
土地配置
创建工作目录
[yamanashi@ip-172-31-46-224 test01]$ pwd
/home/yamanashi/terraform/test01
提供者.tf
写入AWS的区域和使用账户等信息。
[yamanashi@ip-172-31-46-224 test01]$ cat provider.tf
provider "aws" {
version = "~> 2.0"
region = "ap-northeast-1"
access_key = "AKIXXXXXXXXXXXXXXXX"
secret_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
请将access_key/secret_key写入通过创建的IAM用户生成的内容。
开始
terraform init是在第一次执行时使用的命令。它会自动获取所需的组件。
只要provider.tf配置正确,它会帮助我们获取与AWS相关的模块。
[yamanashi@ip-172-31-46-224 test01]$ terraform init
Initializing the backend...
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 2.0"...
- Installing hashicorp/aws v2.70.0...
- Installed hashicorp/aws v2.70.0 (signed by HashiCorp)
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
vpc.tf的中文翻译:虚拟私有云.tf
[yamanashi@ip-172-31-46-224 test01]$ cat vpc.tf
resource "aws_vpc" "test-vpc" {
cidr_block = "10.40.0.0/16"
instance_tenancy = "default"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "test-main"
}
}
resource "aws_subnet" "test-subnet" {
vpc_id = aws_vpc.test-vpc.id
cidr_block = "10.40.0.0/24"
availability_zone = "ap-northeast-1a"
#map_public_ip_on_launch = true
tags = {
Name = "test-subnet"
}
}
ec2.tf 的中文翻译如下:
电脑.tf
[yamanashi@ip-172-31-46-224 test01]$ cat ec2.tf
resource "aws_instance" "terraform-ec2-01" {
ami = "ami-034968955444c1fd9"
availability_zone = "ap-northeast-1a"
instance_type = "t2.micro"
key_name = "test-key"
subnet_id = aws_subnet.test-subnet.id
#vpc_security_group_ids = ["sg-62486b04"]
associate_public_ip_address = false
private_ip = "10.40.0.74"
root_block_device {
volume_type = "gp2"
volume_size = 8
delete_on_termination = true
}
tags = {
"Name" = "terraform-ec2-01"
}
}
resource "aws_instance" "terraform-ec2-02" {
ami = "ami-034968955444c1fd9"
availability_zone = "ap-northeast-1a"
instance_type = "t2.micro"
key_name = "test-key"
subnet_id = "subnet-953190dd"
associate_public_ip_address = false
private_ip = "172.31.46.10"
root_block_device {
volume_type = "gp2"
volume_size = 8
delete_on_termination = true
}
tags = {
"Name" = "terraform-ec2-02"
}
}
terraform-ec2-01是在terraform代码中创建的VPC中构建的。
terraform-ec2-02是在默认VPC中搭建的,并进行了SSH设置以便进入。
使用此命令连接至主机:ssh -i ./test-key.pem ec2-user@172.31.46.10
创建一个虚拟私有云(VPC)
请给我名字
CIDR块为10.*.0.0/16
创建子网
指定先是我們剛剛建立的 VPC,CIDR 區塊為 10.*.0.0/24。
创建IGW
为了建立SSH连接而创建。
创建后,从操作中将创建的VPC附加上。