みんなのTerraformで
AWSをテラフォーミングさせるぜ
2016.7.19
酒井崇匡
自己紹介
酒井崇匡
所属
クラウドインテグレーション部 技術一課
大阪オフィス勤務
入社3ヶ月と19日目
2
今日の予定
Terraformの実行環境作成
Terraform実行のための事前準備
簡単なテンプレートの作成と実行
まとめ
3
Terraformの実行環境作成
4
Windowsの人?
5
Macの人?
6
Linuxの人?
7
Terraformの実行環境作成
バイナリをダウンロード
ZIPファイルを解凍
解凍したファイル群を設置
パスを通す
8
バイナリをダウンロード
URLはこちら
https://www.terraform.io/downloads.html
OSに合わせてダウンロードしてください
9
ダウンロード待ってる間に質問
10
Terraform知っている人?
実際に使ったことある人
本番環境などで
実際に使ってるよって人
Terraformとは
14
Terraformとは
HashiCorp社が作っているオーケストレーション
ツール
AWS,Azure,GCPなどのパブリッククラウドに対応
Windows、OSX、Linux用のバイナリが用意されてい
る
AWSなどの環境をコマンド一発で作れる便利ツール
15
Cloudformationとの違い
16
CloudFormation
テンプレートはJSONで記入
コメント入れるのは不可
マネジメントコンソールやCLIなどから実行
AWS公式のサービス
AWSがサンプルテンプレートを公開している
要望などはAWSサポートから
17
対応しているAWSのサービス
18
19
Amazon EMR AWS Data
Pipeline
Amazon Elasticsearch
Service
Amazon
Kinesis
Amazon API
Gateway
Amazon
SQS
Amazon
EC2
Auto
Scaling
Amazon ECR Amazon ECS
AWS Elastic
Beanstalk
Elastic Load
Balancing
AWS
Lambda
Amazon
DynamoDB
Amazon
RDS
Amazon
ElastiCache
Amazon
Redshift
AWS
CodeDeploy
AWS
CodePipeline
Amazon
WorkDocs
Amazon GameLift AWS
CloudFormation
AWS
CloudTrail
Amazon
CloudWatch
AWS
Config
AWS
OpsWorks
Amazon
SNS
Amazon
VPC
AWS Directory
Service
AWS IAM AWSKMS AWS WAF Amazon
CloudFront
Amazon EFS Amazon
S3
Amazon EBS
Amazon
Route 53
Terraform
独自フォーマットで記述
コメントも書ける
JSONでも書ける
Terraformをインストールした端末から実行
サードパーティーのツール
要望などはGithubのissue、pull-requestで(英語
20
対応しているAWSのサービス
21
22
Amazon Elasticsearch
Service
Amazon
Kinesis
Amazon API
Gateway
Amazon
SQS
Amazon
EC2
Auto
Scaling
Amazon ECR Amazon ECS
AWS Elastic
Beanstalk
Elastic Load
Balancing
AWS
Lambda
Amazon
DynamoDB
Amazon
RDS
Amazon
ElastiCache
Amazon
Redshift
AWS
CodeDeploy
AWS
CloudFormation
AWS
CloudTrail
Amazon
CloudWatch
AWS
OpsWorks
Amazon
SNS
Amazon
VPC
AWS Directory
Service
AWS IAM AWSKMS Amazon
CloudFront
Amazon EFS Amazon
S3
Amazon EBS
Amazon
Route 53
AWS
CodeCommit
と言ったところでダウンロード
終わりましたか?
26
ZIPファイルを展開
OSの標準機能等を使って解凍
展開するとterraform_0.6.16_darwin_amd64といった
ような感じのディレクトリができる
バージョンやOS、アーキテクチャによって
terraform以下の文字列は変わってくる
一旦terraformにディレクトリをリネームする
27
バイナリファイルを設置
Windowsの人はCドライブの直下にterraformディレ
クトリを移動
OSX,Linuxの人は/optにterraformディレクトリを移動
させる
28
パスを通す
Windowsの人はコマンドプロンプトを起動してコマ
ンドを実行
set PATH=%PATH%;C:terraform
OSX,Linuxの人はターミナルを起動してコマンドを
実行
export PATH=$PATH:/opt/terraform
29
動作確認
パスが通せたらコマンドを実行
terraform --version
バージョンが表示されてば完了
30
Terraform実行の
ための事前準備
31
キーペアの作成
AWSのマネジメントコンソールにログイン
EC2の管理画面を開く
キーペアの一覧を表示
キーペアを作成
32
IAMユーザの作成
IAMの管理画面に移動
ユーザーの作成
クレデンシャル情報をダウンロードして保管
AmazonEC2FullAccessのポリシーをアタッチ
33
簡単なテンプレートの
作成と実行
34
テンプレートファイルのダウンロード
今回は時間の都合上1から作ることはできません
半完成品にパラメータを割り当ててもらい実行し
ていただきます。
物足りないよって思う人ごめんなさい。
https://github.com/nullpop/terraform-hands-on.git
こちらのレポジトリをcloneしてください。
35
今日作る構成
36
VCPのCIDRを入力
VPC内で理想するプライベートIPアドレスのCIDRを
指定
/16 から /28の範囲で指定可能
後から変更できないので大きめに取っておくと変
更があった場合にも対応しやすい
37
サブネットのCIDRを入力
VPCに指定したCIDRの中からさらに細かく分割して
利用する
/16から/28までの間で設定可能
当然だけどVPCに指定したCIDRとまったく違うCIDR
を指定することはできない
サブネット内に何台起動させたいかで決める
ネットワークアドレスとブロードキャストアドレ
ス以外にもAWSが予約しているアドレスがあるので
その分使えないので注意
38
キーペアの指定
SSHログインに使うキーペアの指定
EC2でWindowsServerを使うときはadministratorのパ
スワードをマネジメントコンソールから取得する
ときに使う
秘密鍵は作成時しかダウンロードできないので注
意
39
インスタンスタイプの指定
起動したいインスタンスタイプを指定
今回のような検証目的だとt2.microとかで十分
用途に合わせて適切なものを指定
もしスペック不足だとか過剰スペックだとなった
場合は一旦停止することでインスタンスタイプを
変更可能
仮想化方式や64bitOSか32bitOSで一部指定できない
インスタンスタイプもあるので注意
40
Nameタグの設定
英数の文字列を入力
マネジメントコンソールなどからどういうインス
タンスかわかりやすい名前をつけることをお勧め
41
全て入力完了したら
以下のコマンドを実行
terraform plan
正常に完了すれば作成予定の一覧が表示されます
エラーが出た場合はどこかに不具合があるので挙
手お願いします
42
plan が通ったらいよいよ実行
以下のコマンドを実行すると作成が開始されます
terraform apply
エラーなく終了するとURLが表示されます
そのURLにアクセスしてWEBが見れれば完了です
43
terraform.tfstateファイルってなんやねん
Terraformが管理しているリソースのIDなどが記載さ
れている
JSONフォーマットで記述されている
手動で編集するのは非推奨
複数人で管理する場合はこのファイルをうまく共
有する必要がある
44
最後に環境の削除
以下のコマンドを実行すれば作成されたAWSリソー
スが綺麗に削除されます
terraform destroy
本当にいいの?と聞かれるのでyesと入力
これ以降は消えていくのを眺めるしかないので本
番環境を扱う環境だと注意!!!
45
まとめ
46
まとめ
Terraformでは可読性の高いテンプレートが作成可
能
テンプレートの中で変数を利用することで環境毎
に異なる値を変更しやすくすることができる
複数人で管理する場合はterraform.tfstateの扱いに注
意する
AWSのクレデンシャルキーをうっかり公開しないよ
うに注意
47

みんなのTerraformで AWSをテラフォーミングさせるぜ