LoginSignup
3
2

More than 5 years have passed since last update.

Terraform、始めました

Last updated at Posted at 2019-01-28

0.はじめに

Terraformを触ってEC2インスタンスを構築したので、その備忘録としてき書きました。ドがつくほど初心者なので、間違えていることを言っていたらご指摘ください。
また今回はセットアップ中心なのでGUIの操作も多いですが、今後はどんどんTerraformの本来の力を発揮させていきたいと思います。

1.Terraformとは

TerraformはHashiCorp社が開発したOSSでインフラの構築を自動化するCIツールです。VirtualBoxにVMを構築する際にその自動化を行うVagrantもHashiCorp社が手がけている。

1-1.何をするのか

インフラの構築や変更、バージョニングを行う際に、処理をコード化して実行するためのツールで、下記のようなメリットがある。

  • コンソール画面からいちいち必要事項をポチポチしなくて済む
  • 同じ構成のリソースを複製する場合に即時行える
  • 履歴が残る(コンソール画面からだと残すのが難しい)

1-2.対象インフラ

まだ試していないけど、次のようなインフラの構築を管理できるらしい(参考)。

  • 仮想マシン
  • ストレージ
  • ネットワーク
  • ロードバランサー
  • DNS
  • データベース
  • SaaS

2.とりあえず触ってEC2を構築してみる

早く触ってみたいという思いもあり、EC2インスタンス、作成してみました。

2-1.準備

MacOSでHomebrewが入っていたので、下記コマンドでインストールできました。

brew cask install terraform

2-2.AWSコンソール側での準備

ざっと下記の手順でAWSコンソール画面側で準備しました。

1.IAM(AWS Identity and Access Management)でユーザー作成
2.作成したユーザーにEC2インスタンスを作成できる権限を付与
3.AWSのCLIをインストールし、アクセスキー等必要な認証情報を保管

2-2-1.IAM(AWS Identity and Access Management)でユーザー作成
  • まずIAM管理画面にアクセスします。

図1.png

  • 次にユーザーを作成します。
    図2.png

  • 「プログラムによるアクセス」にチェックをつけて次に進みます(CLIのインストールは後述)
    図3.png

2-2-2.作成したユーザーにEC2インスタンスを作成できる権限を付与
  • グループを作成します。

図4.png

  • 作成したグループに権限を付与します。今回はAmazonEC2FullAccessを付与しました。

図5.png

  • あとは作成したユーザーを先ほど作成したグループに帰属させて、ユーザー作成します。作成してから得られたアクセスキーとシークレットアクセスキーはcsv ダウンロードするなどして控えます。

図5.png

2-2-3.AWSのCLIをインストールし、アクセスキー等必要な認証情報を保管
  • AWSのCLIインストールはこちらのサイトを参考にしました。下記のコマンドが実行できればOKです。
$ aws --version
aws-cli/1.16.96 Python/2.7.10 Darwin/17.4.0 botocore/1.12.86
  • aws configure でアクセスキーなど先ほど控えたものを記入します。regionはどこでも大丈夫です。東京だったらap-northeast-1。私の場合output formatはjsonにしました。
$ aws configure
AWS Access Key ID:

長くなりましたがこれで準備完了です。

2-3.EC2インスタンス構築

適当なフォルダを作り、ec2.tfファイルとvariables.tfを編集します。

ec2.tf
resource "aws_instance" "fukkui" {
  count         = 2
  ami           = "ami-0d7ed3ddb85b521a6" # Amazon Linux 2 AMI (HVM), SSD Volume Type
  instance_type = "t2.micro"

  tags {
    Name = "${format("fukkui-%02d", count.index + 1)}"
  }
}

amiのidや、instance_typeはAWSコンソールからEC2のインスタンスを作成する画面で確認できます。コード作成はこちらの記事を参考にしました。

図7.png

variables.tf
provider "aws" {
 region = "ap-northeast-1"
}

書くまでもないですが構成はこんな感じです。

$ tree
.
├── ec2.tf
└── variables.tf

続いてterraform initを実行します。

$ terraform init

・
・
Terraform has been successfully initialized!
・

実行前にterraform planでチェックできます。

$ terraform plan

・
・
Plan: 2 to add, 0 to change, 0 to destroy.
・
・

問題なければ実際にAMIを作成します。

$ terraform apply

・
・
aws_instance.fukkui[0]: Creation complete after 34s (ID: i-0ed880dc87ef1df93)
aws_instance.fukkui[1]: Creation complete after 34s (ID: i-0bbde800bac609a7d)

terraform showでインスタンスの状態を確認できます。


$ terraform show
aws_instance.fukkui.0:
・
・
aws_instance.fukkui.1:
・
・

コンソール画面からもインスタンスが作成できていることがわかります。
図6.png

3
2
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
3
2