Kuchitama Tech Note

はてな記法がいつまでたっても覚えられないので、はてなダイアリーからマークダウンが使えるこっちに引っ越してきました。

ぼくはterraformだけ触ろうと思った - terraform でインフラ構築#1

f:id:kuchitama:20170414230227p:plain

先日のホッテントリにこんな記事が…

dekotech.dekokun.info

丁度この記事見る直前ぐらいにterraformを仕事で使って、全く同じ気持ちを抱きました。 terraformでもCloudFormationでも、CLIクラウドインフラ構築とかやってた人は触ったら抜け出せなくなると思います。 ただ、terraformはAWSに限定されないです。強い。

www.terraform.io

なぜterraform

www.terraform.io

terraformは安心のHashiCorp製のオーケストレーションツールです。 terraformを使うことで、インフラの Infrastructure as Code が実現できます。

というかインフラに限らず、かなり幅広く XXX as Codeできますね。 社内IT担当者とか結構嬉しいんじゃないでしょうか GitHubリポジトリやチームメンバーの管理もできるみたいです(なんでもありやな)

改めて言うまでもないかも知れませんが、メリットを挙げるとこんな感じだと思います。

  • 設定がバージョン管理できるので、属人性を無くせる
  • 設定反映の自動化により手作業によるオペレーションミスが減らせる
  • DryRunで実行前に挙動をチェックできるのでオペレーションミスが減らせる

terraformのインストール

Go製なので、↓から、自分のマシン用の実行ファイル落としてきてパス通ったフォルダに置くだけ、ぽん

Download Terraform - Terraform by HashiCorp

簡単ですね

動かしてみる

DryRunして、実際に立ち上げて、そして落とすという一連の操作をやってみます。

1. 設定ファイルを作成

とりあえず、デモとして AWSAmazon Linuxインスタンスを立ち上げる設定を書きます。 とりあえずのステップワンなので1ファイルに全部書いちゃいます。 適当なディレクトリを作ってその中に、下記のgistの ec2.tf ファイルを置きます。

$ mkdir terraform
$ cd terraform 
$ vim ec2.tf

gist.github.com

ちなみに、インスタンスタイプが t2.micro でなく t1.micro になっているのは、とりあえず最小構成としてEC2インスタンスだけを立ち上げたかったからです。 t2.microVPC必須になっていますが、この設定ファイルでは VPCについての設定を書いていないため、EC2インスタンスを立ち上げることができません。

2. DryRunでチェック

設定が書けたら、 plan で確認します。

$ terraform plan

f:id:kuchitama:20170414225002p:plain

3. 実際に立ち上げる

問題なさそうなので、インスタンスを立ち上げましょう。 apply を実行します。

$ terraform apply

f:id:kuchitama:20170414225121p:plain

マネジメントコンソールを確認すると、インスタンスができてました。

f:id:kuchitama:20170414225149p:plain

4. 立ち上げたインスタンスを停止する

さて、とりあえず動作確認は充分ですし、お金がもったいないので、いらないインスタンスには退場してもらいましょう。

destroy を実行します。

$ terraform destroy

f:id:kuchitama:20170414225226p:plain

ターミネートできました。

f:id:kuchitama:20170414225328p:plain

こんな感じで、 plan apply destory で、AWSが簡単に操作できるのが terraform です。 もうシェル芸でAWS構築する必要がなくなりました。