LINEで送る
Pocket

最近Terraformに入門しました!!!!!
友人のインフラエンジニア(くにしー)が

「あだちんクラウドインフラエンジニアなら
最近バグも少なくなってきたTerraformやろうよ?
やらないの?
え、インスタンス手動で今更作ってるの?
え、自動化好きでしょ?」

とよく煽られるので、この際チャレンジしてみました。


■Terraformってなに

HashiCorpが作っているインフラ構築や設定をコード化し自動化するためのツール。
今回はAWSですが、他のクラウドにも対応しているのが見どころ。
Hashicorpと言えば、「Vagrant」「Nomad」などが有名。

・ちなみに対応しているクラウド

  • Atlas →わからん。
  • AWS
  • Azure
  • CloudFlare→わからん。。
  • CloudStack→わからん。。。
  • Consul→わからん。。。。
  • DigitalOcean
  • DNSMadeEasy→わからん。。。。。
  • DNSimple→わからん。。。。。。
  • Docker
  • Google Cloud Platform
  • Heroku
  • Mailgun→・・・・
  • OpenStack

こんなに!!
ところで、
adachin server labブログもクラウドにリプレイスしようと考えてるので、
Terraform使えば楽そう。
Terraformの開発は毎月のペースで新バージョンがリリースされるのでこれは熱い!


■今回実装すること

・VPC
インターネットゲートウェイの設定
サブネットの設定(冗長化のため2つ用意)
ルートテーブルの設定
セキュリティグループの設定

・EC2(1台)
OSはamazon linux
上記のVPC、セキュリティグループを使用
EBSは30GB

ここらへんを自動化してみました。


■環境

Macを使ってローカルから実行。


■Terraformのインストール

以前はterraformコマンドを実行するためにパスの設定やら必要だったのですが、
brewがよしなにやってくれるのでOK。


■Terraformの構成


■aws_resion.tf

ここはプロバイダーの設定をぶち込みます。
awsでいうIAMからユーザ作ってアクセスキーとシークレットキーを書いて、
terraformを使えるようにします。
このファイルはgithubにあげると爆死するので気をつけましょう。


■aws_vpc.tf


■aws_security-group.tf


 ■aws_ec2.tf


■variables.tf

variabled.tfは変数として使用しているファイルです。
今回はAMIとインスタンスタイプだけです。
他にも変数化できそうだけれども。。


■terraform plan(dry run)

さてこのコード化したファイルを実行してインフラ構築してみましょう。
その前に、
このプログラムで問題ないか、dry runをして確認します。
「+」マークが付いているのが新規に作成されるリソースです。
大丈夫であればterraform applyで適用します。


■terraform apply

これでAWSコンソール見ると、まあ不思議!
コード化したものがちゃんと出来上がっています。


■terraform plan -destroy

先程作ったものを消したい場合もdry runであれば上記の様に。


■terraform destroy

AWSコンソールを見れば消えてることが分かると思います。


■まとめ

自動化は素晴らしいいい!
コード化していれば、このインフラ構成はどうなっているのか理解できるし、
解約時の場合はterraform destroyコマンドで全て消えるので、
あれ何か残ってる?料金未だに発生してるのだが。。
みたいなこともなさそう。
ちなみにバグは未だにあるらしいですがw
今のところ出会ってない。。

そういえばAWSが出してるCloudFormationでも同様なことができてからの
ansibleでもcloudモジュール使えばインフラ構築できます。

そしてインフラ構築はHashicorp、ミドルウェアはansibleにしようと決めました!
次回はELB、CloudFront、Route53など紹介できれば!!Terraformおじさんへ!

https://github.com/RVIRUS0817/terraform/tree/master/envs/aws/prd
このように分けて管理したほうが分かりやすい。

参考
https://www.terraform.io/docs/index.html
http://dev.classmethod.jp/cloud/terraform-getting-started-with-aws/

LINEで送る
Pocket

カテゴリー: AWSBlogTerraform

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニアのMENTAなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなし中。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください