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

Post on 14-Apr-2017

806 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

みんなの 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

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

Terraform

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

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

20

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

21

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

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

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

top related