LINEで送る
Pocket

最近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からセキュリティアラートが来るので気をつけてください。その後 terraform init で以下の設定をします。

[Terraform][Backends][v0.9]tfstateファイルの管理方法


■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おじさんへ!

LINEで送る
Pocket

カテゴリー: AWSBlogTerraform

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。副業では数社サーバー保守やMENTAで未経験者にインフラをコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、ECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

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