LoginSignup
5
6

More than 1 year has passed since last update.

Terraformの環境構築から、EC2の作成までやってみよう!

Posted at

はじめに

udemyを使ってTerraformの勉強をしたので、Terraformの環境構築からAWSリソースの作成ができるまでをまとめた、学習備忘録です。

目的

インフラ構築をコード化/自動化(Iac)できるようになること

Instracture as Code(IaC)とは

インフラ構築をコード化することで、人のミスを防ぎ品質とスピードを上げること

IaCのメリット

  • 環境のコピーが容易になる
  • 変更点がコード管理されるので、gitで管理することができる

HashiCorp社とは

  • Mitchell HashimotoとArmon Dadgarによって2012年に設立された会社
  • 今回使用する、Terraformを開発した

Terraformとは

  • Terraformは、IaCを実現するツール
  • Terraformではインフラの構成をコードで宣言し、自動でデプロイすることができまる
  • 複数のクラウドサービスに対応している(GCP, Azure, AWS)

環境構築

AWS CLIのインストール

最初にAWS CLIをインストールします。
インストール方法は公式ドキュメントがあるので公式を参考にインストールします。

インストールが完了すると、awsコマンドが使えるようになります。

$ aws --version
$ aws-cli/2.8.2 Python/3.10.7 Darwin/21.6.0 source/x86_64 prompt/off

IAMユーザー作成

AWSのIAMでTerraform用のIAMユーザーを作成します。

名前は、任意で、「アクセスキー・プログラムにアクセス」を選択します。
スクリーンショット 2022-10-12 12.01.45.png

権限は、Administratorを付与し、IAMユーザーを作成します。(タグ等は任意で付与する)
スクリーンショット 2022-10-12 12.01.57.png

ユーザーが作成できたらaws configureの設定をします。

$ aws configure --profile terraform
AWS Access Key ID [None]:作成したもの
AWS Secret Access Key [None]:作成したもの
Default region name [None]:ap-northeast-1
Default output format [None]:json

プロファイルを指定して、S3バケットが見えればOK

$ aws s3 ls --profile terraform

Terraformのインストール

Terraformは、バージョンによって変更があることが多いため、Terraformのバージョン管理ツールのtfenvをインストールします。

tfenvのインストール

私はanyanvを使用しているため、anyenv経由でtfenvをインストールします。

# tfenv をインストール
$ anyenv install tfenv

# コマンドを実行して正常にインストールできているか確認
$ tfenv
tfenv 3.0.0-18-g1ccfddb
Usage: tfenv <command> [<options>]

brewでもインストール可能です。

$ brew install tfenv

Terraformのインストール

Terraformのインストール可能なバージョンを表示します。

$ tfenv list-remote

最新をインストールします。

$ tfenv install 1.3.2
$ tfenv use 1.3.2

# バージョン確認でインストールが成功したことを確認
$ terraform version
Terraform v1.3.2
on darwin_amd64

git-secretsをインストール

AWSアクセスキーとシークレットキーを誤ってコミットするのを防いでくれるツールです。

$ brew install git-secrets

各gitリポジトリに対して、git secrets --installを行うことで、git-secretsに対応させます。

$ git secrets --install
# AWSのIAMで利用されているクレデンシャルのパターンを弾く専用のオプションを設定します。
$ git secrets --register-aws

VSCodeのプラグインをインストール

HashiCorpから提供さているプラグインをインストールします。

はじめてのTerraform

EC2の作成

新しくフォルダを作成し、main.tfファイルを作成します。

スクリーンショット 2022-10-12 12.59.51.png

# プロバイダーの設定
provider "aws" {
profile = "terraform"
region = "ap-northeast-1"
}

# EC2の設定
# amiは、awsのコンソールから確認します。
resource "aws_instance" "hello-world" {
    ami           = "ami-0ce107ae7af2e92b5"
    instance_type = "t2.micro"
}

terraformが使えるように初期化します。

$ terraform init

terraformを実行します。

$ terraform apply

AWSのコンソールを確認し、EC2が作成されていればOKです。

tfstateとは

$ terraform applyを実行すると、terraform.tfstateファイルが作成されます。
tfstateファイルとは、terraformを使って構築したクラウドの状態情報が全て記録されます。

先ほど作成されたtfstateの中を見ると、作成されたec2のidが書いてあり、AWSに起動したEC2のIDと一致します。

EC2のタグ追加(再作成なし)

先程書いたコードにtagsを追加し、EC2のタグ追加を追加します。

provider "aws" {
    profile = "terraform"
    region = "ap-northeast-1"
}

resource "aws_instance" "hello-world" {
    ami           = "ami-0ce107ae7af2e92b5"
    instance_type = "t2.micro"
    tags = {
        Name = "HelloWorld"
    }
}

terraform applyを実行すると、タグが追加されていることを確認することができます。

$ terraform apply

EC2にNGINXのインストール(再作成あり)

nginxをユーザーデータに追加します。user_dataにnginxのインストール記載します。

provider "aws" {
    profile = "terraform"
    region = "ap-northeast-1"
}

resource "aws_instance" "hello-world" {
    ami           = "ami-0ce107ae7af2e92b5"
    instance_type = "t2.micro"
    tags = {
        Name = "HelloWorld"
    }

user_data = <<EOF
#!/bin/bash
amazon-linux-extras install -y nginx1.12
systemctl start nginx
EOF
}

EC2の削除

下記のコマンドを行うと、terraformで作成したリソースを削除することができます。

$ terraform destroy

AWSのコンソールを見ると、先程の作成したEC2が削除されていることが確認できます。

基本コマンド

# 実行計画の確認
$ terraform plan

# 変更の適用
$ terraform apply

# 管理インフラ環境の構築
$ terraform destroy

# 構文チェック
$ terraform validate

# フォーマット
$ terraform fmt 

以上です。Terraformを使うと簡単にクラウドリソースの作成ができますね。

5
6
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
5
6