むらじゅん風呂具

ITエンジニアとたまに歌手と司会などで活動する村中淳のブログ

TerraformでサクッとEC2インスタンスを作成する

ツイッター界隈で評判がとても良い実践Terraformを入手していたので、
今日はそちらを参考にサクッとEC2インスタンスを立ててみる。

ちなみに私はTerraform完全初心者。

・リソースの作成 main.tf

適当なところにディレクトリとその中に main.tf を作成
中のコードは以下

resource "aws_instance" "example" {
  ami = "ami-0c3fd0f5d33134a76"
  instance_type = "t3.micro"
}


CloudFormationのYAMLと似たような書き方かと思っていたら、
割と違うんすね。

・terraform init の実行

上のファイルを置いた場所で、terraform init を実行

$ terraform init

ファイル一覧を見ると、.terraform が出来ている。実行に必要なバイナリファイルを持ってきているとのこと

$ ls -la
total 8
drwxr-xr-x  4 muranakajun  staff  128  1 22 21:39 .
drwxr-xr-x  3 muranakajun  staff   96  1 22 21:35 ..
drwxr-xr-x  3 muranakajun  staff   96  1 22 21:39 .terraform
-rw-r--r--  1 muranakajun  staff   98  1 22 21:38 main.tf
$

動き方としてはvagrantっぽい

・terraform plan と terraform apply

terraform plan コマンドは実行計画が出力されて、
どんなリソースが作成されるか、出力してくれる。実行はされない。

terraform apply コマンドは、予め実行した結果を表示してくれて、
このまま実行してよいのか、確認をしてくれる

plan コマンドは出力が長かったので省略

apply コマンドは以下のように出力

$ terraform apply
provider.aws.region
  The region where AWS operations will take place. Examples
  are us-east-1, us-west-2, etc.

  Enter a value: 

リージョンを入れてくれとのことで、ap-northeast-1 を入力

確認に yes を入力してリソースが作成された

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed]
aws_instance.example: Creation complete after 12s [id=i-xxxxxxxxxx]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
$

f:id:pj124183:20200122221827p:plain


リソース管理はCloudFormationのほうがいいかな

単純に好みの問題ではあるけれど、自分にとってはCloudFormationのほうが触りやすい印象。

どちらも良し悪しあると思うけど、大きな違いとか運用面での良し悪しが聞いてみたくなったなあ。

ともあれ、今日はこんな感じ。