Upload
takamasa-sakai
View
796
Download
2
Embed Size (px)
Citation preview
みんなの 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