44
みみみみ Terraform み AWS みみみみみみみみみみみみみ 2016.7.19 酒酒酒酒

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

Embed Size (px)

Citation preview

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

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

2016.7.19酒井崇匡

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

自己紹介酒井崇匡所属

クラウドインテグレーション部 技術一課大阪オフィス勤務入社 3 ヶ月と 19 日目

2

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

今日の予定Terraform の実行環境作成Terraform 実行のための事前準備簡単なテンプレートの作成と実行まとめ

3

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

Terraformの実行環境作成

4

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

Windowsの人?

5

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

Macの人?

6

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

Linuxの人?

7

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

Terraformの実行環境作成バイナリをダウンロードZIP ファイルを解凍解凍したファイル群を設置パスを通す

8

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

バイナリをダウンロードURL はこちらhttps://www.terraform.io/downloads.html

OS に合わせてダウンロードしてください

9

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

ダウンロード待ってる間に質問

10

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

Terraform知っている人?

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

実際に使ったことある人

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

本番環境などで実際に使ってるよって人

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

Terraformとは

14

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

TerraformとはHashiCorp 社が作っているオーケストレーションツールAWS,Azure,GCP などのパブリッククラウドに対応Windows 、 OSX 、 Linux 用のバイナリが用意されているAWS などの環境をコマンド一発で作れる便利ツール

15

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

Cloudformationとの違い

16

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

CloudFormation

テンプレートは JSON で記入コメント入れるのは不可

マネジメントコンソールや CLI などから実行AWS 公式のサービスAWS がサンプルテンプレートを公開している要望などは AWS サポートから

17

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

対応している AWSのサービス

18

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

19

Amazon EMR AWS Data Pipeline

Amazon Elasticsearch Service

Amazon Kinesis

Amazon API Gateway

AmazonSQS

Amazon EC2

Auto Scaling

Amazon ECR Amazon ECS

AWS Elastic Beanstalk

Elastic Load Balancing

AWSLambda

AmazonDynamoDB

AmazonRDS

Amazon ElastiCache

Amazon Redshift

AWS CodeDeploy

AWS CodePipeline

AmazonWorkDocs

Amazon GameLift AWSCloudFormation

AWSCloudTrail

Amazon CloudWatch

AWSConfig

AWSOpsWorks

AmazonSNS Amazon

VPCAWS Directory

Service

AWS IAM AWS KMS AWS WAF Amazon CloudFront

Amazon EFS AmazonS3

Amazon EBS

AmazonRoute 53

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

Terraform

独自フォーマットで記述コメントも書けるJSON でも書ける

Terraform をインストールした端末から実行サードパーティーのツール要望などは Github の issue 、 pull-request で(英語

20

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

対応している AWSのサービス

21

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

22

Amazon Elasticsearch Service

Amazon Kinesis

Amazon API Gateway

AmazonSQS

Amazon EC2

Auto Scaling

Amazon ECR Amazon ECS

AWS Elastic Beanstalk

Elastic Load Balancing

AWSLambda

AmazonDynamoDB

AmazonRDS

Amazon ElastiCache

Amazon Redshift

AWS CodeDeploy

AWSCloudFormation

AWSCloudTrail

Amazon CloudWatch

AWSOpsWorks

AmazonSNS Amazon

VPCAWS Directory

Service

AWS IAM AWS KMS Amazon CloudFront

Amazon EFS AmazonS3

Amazon EBS

AmazonRoute 53

AWS CodeCommit

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

と言ったところでダウンロード終わりましたか?

26

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

ZIPファイルを展開OS の標準機能等を使って解凍展開すると terraform_0.6.16_darwin_amd64 といったような感じのディレクトリができるバージョンや OS 、アーキテクチャによってterraform 以下の文字列は変わってくる一旦 terraform にディレクトリをリネームする

27

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

バイナリファイルを設置Windows の人は C ドライブの直下に terraform ディレクトリを移動OSX,Linux の人は /opt に terraform ディレクトリを移動させる

28

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

パスを通すWindows の人はコマンドプロンプトを起動してコマンドを実行set PATH=%PATH%;C:\terraform

OSX,Linux の人はターミナルを起動してコマンドを実行export PATH=$PATH:/opt/terraform

29

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

動作確認パスが通せたらコマンドを実行terraform --version

バージョンが表示されてば完了

30

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

Terraform実行のための事前準備

31

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

キーペアの作成AWS のマネジメントコンソールにログインEC2 の管理画面を開くキーペアの一覧を表示キーペアを作成

32

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

IAMユーザの作成IAM の管理画面に移動ユーザーの作成クレデンシャル情報をダウンロードして保管AmazonEC2FullAccess のポリシーをアタッチ

33

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

簡単なテンプレートの作成と実行

34

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

テンプレートファイルのダウンロード今回は時間の都合上 1 から作ることはできません半完成品にパラメータを割り当ててもらい実行していただきます。物足りないよって思う人ごめんなさい。https://github.com/nullpop/terraform-hands-on.git

こちらのレポジトリを clone してください。

35

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

今日作る構成

36

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

VCPの CIDRを入力VPC 内で理想するプライベート IP アドレスの CIDRを指定/16 から /28 の範囲で指定可能後から変更できないので大きめに取っておくと変更があった場合にも対応しやすい

37

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

サブネットの CIDRを入力VPC に指定した CIDR の中からさらに細かく分割して利用する/16 から /28 までの間で設定可能当然だけど VPC に指定した CIDR とまったく違うCIDR を指定することはできないサブネット内に何台起動させたいかで決めるネットワークアドレスとブロードキャストアドレス以外にも AWS が予約しているアドレスがあるのでその分使えないので注意

38

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

キーペアの指定SSH ログインに使うキーペアの指定EC2 で WindowsServer を使うときは administrator のパスワードをマネジメントコンソールから取得するときに使う秘密鍵は作成時しかダウンロードできないので注意

39

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

インスタンスタイプの指定起動したいインスタンスタイプを指定今回のような検証目的だと t2.micro とかで十分用途に合わせて適切なものを指定もしスペック不足だとか過剰スペックだとなった場合は一旦停止することでインスタンスタイプを変更可能仮想化方式や 64bitOS か 32bitOS で一部指定できないインスタンスタイプもあるので注意

40

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

Nameタグの設定英数の文字列を入力マネジメントコンソールなどからどういうインスタンスかわかりやすい名前をつけることをお勧め

41

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

全て入力完了したら以下のコマンドを実行terraform plan

正常に完了すれば作成予定の一覧が表示されますエラーが出た場合はどこかに不具合があるので挙手お願いします

42

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

plan が通ったらいよいよ実行以下のコマンドを実行すると作成が開始されますterraform apply

エラーなく終了すると URL が表示されますその URL にアクセスして WEB が見れれば完了です

43

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

terraform.tfstateファイルってなんやねんTerraform が管理しているリソースの ID などが記載されているJSON フォーマットで記述されている手動で編集するのは非推奨複数人で管理する場合はこのファイルをうまく共有する必要がある

44

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

最後に環境の削除以下のコマンドを実行すれば作成された AWS リソースが綺麗に削除されますterraform destroy

本当にいいの?と聞かれるので yes と入力これ以降は消えていくのを眺めるしかないので本番環境を扱う環境だと注意!!!

45

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

まとめ

46

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

まとめTerraform では可読性の高いテンプレートが作成可能テンプレートの中で変数を利用することで環境毎に異なる値を変更しやすくすることができる複数人で管理する場合は terraform.tfstate の扱いに注意するAWS のクレデンシャルキーをうっかり公開しないように注意

47