使用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
广告
将在 10 秒后关闭
bannerAds