使用Terraform在AWS上构建VPC,让我感到像当初了解docker-compose时一样激动不已
请留意
没有特别要求
环境
-
- AWS
-
- WSL2
- terraform 1.6.0
背景:
背景翻译后即是指某人或某事的历史、环境、起源或前因,通常出现在介绍或解释中。
我想使用 Terraform 为VPC设计带有再现性的结构。
结论可以得出一个结论
在工作目录中创建main.tf文件。然后执行terraform apply等命令。
本次我们将在VPC中放置一个EC2实例。
使用Terraform进行VPC设计
梗概
在WSL2上安装Amazon CLI,并使用terraform在AWS上构建VPC。
在WSL2中安装Amazon CLI的步骤。
公式文件如下所示。
如果是第一次安装的情况
请执行以下命令。
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
如果进行升级的情况下 (如果進行升級的情況下)
如果要进行升级,请执行以下命令,而不是使用“sudo ./aws/install”。首先,使用前两个命令来确定目录的位置,然后对其进行升级操作。
$ which aws
/usr/local/bin/aws
$ ls -l /usr/local/bin/aws
lrwxrwxrwx 1 root root 37 Oct 31 16:39 /usr/local/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws
$ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
设置访问密钥
设置访问密钥。
$ aws configure
AWS Access Key ID: YourKeyID
AWS Secret Access Key: YourAccessKey
Default region name: ap-northeast-1
Default output format: json
$ cat ~/.aws/credentials
...
$ cat ~/.aws/config
...
确认安装
确认是否已正确安装。
$ aws --version
$ aws ec2 describe-instances | grep InstanceId
在WSL2上,安装terraform管理软件(tfenv)的步骤是什么?
以下是官方文件。
安装
请执行下面的命令。
$ git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
$ echo 'export PATH=$PATH:$HOME/.tfenv/bin' >> ~/.bashrc
$ source ~/.bashrc #ターミナルを開き直すか、このコマンドを使うことでPATH環境変数がリロードされる。
不需要通过「echo ‘export PATH=\$PATH:$HOME/.tfenv/bin’ >> ~/.bashrc」来修改,通过「ln -s ~/.tfenv/bin/* /usr/local/bin」也是可以的。前者是直接将目标目录添加到PATH环境变量中的方法,而后者是将目标目录作为符号链接添加到已经包含在PATH环境变量中的地方的方法。
请执行以下命令。本次使用了1.6.0作为terraform的版本。
$ tfenv --version
$ tfenv list-remote
$ tfenv install 1.6.0
$ tfenv list
$ tfenv use 1.6.0
$ terraform --version
使用Terraform管理软件(tfenv)在WSL2上构建VPC的步骤。
请将main.tf文件放置在项目的工作目录中,并执行terraform apply等命令。
terraform apply等命令可能会由于权限问题导致错误。这种情况下,请附加“sudo”。然而,添加“sudo”将不会继承当前会话的PATH环境变量,可能会导致错误。在这种情况下,请使用“sudo -E”命令以继承PATH环境变量并以sudo权限执行。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.22.0"
}
}
}
provider "aws" {
region = "ap-northeast-1"
}
resource "aws_vpc" "my_vpc" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "my-vpc"
}
}
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.my_vpc.id
cidr_block = "10.0.1.0/24"
tags = {
Name = "my-subnet"
}
}
resource "aws_instance" "my_instance" {
ami = "ami-09a81b370b76de6a2"
instance_type = "t2.micro"
subnet_id = aws_subnet.my_subnet.id
tags = {
Name = "my-instance"
}
}
~/terraform_practice$ ls -l
total 16
-rw-r--r-- 1 root root 684 Oct 31 18:44 main.tf
~/terraform_practice$ terraform init
~/terraform_practice$ terraform plan
~/terraform_practice$ terraform apply
销毁VPC
请使用以下命令销毁VPC。
~/terraform_practice$ terraform destory
未来的展望
下一步,我想尝试使用Amazon EKS(Kubernetes)。
仅需要一个选项,请将以下内容以中文母语人士的方式表达:
– 参考
-
- https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
-
- https://github.com/tfutils/tfenv
-
- https://qiita.com/onishi_820/items/18f2f8cc61f6b54f9433
- https://qiita.com/If_it_bleeds-we_can_kill_it/items/1ecf36e87a8b616e0c4c