0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

terraformを使ってAWS上にVPCを構築する。docker-composeを知った時と同じくらいの感動を覚えている。

Last updated at Posted at 2023-11-01

注意

特になし

環境

  • 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環境変数に含まれている場所にシンボリックリンクとして対象ディレクトリを加える方法です。

次に、下記のコマンドを実行してください。今回は、terraformのバージョンとして、1.6.0を使用しました。

$ 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環境変数が引き継がれないので、今度はそれが原因でエラーになることがあります。 その場合、PATH環境変数を引き継ぎつつ、sudo権限で実行するために、「sudo -E」をつけて実行して下さい。

main.tf
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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?