Kuchitama Tech Note

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

Terraform と AWS のちょっとした知見 - Terraformでインフラ構築#2

Terraformを使って、AWSを管理しているプロジェクトでちょっとした作業を行った際の個人的な知見の備忘録。 割としょうもない内容だけど、運用続けていくうえで抑えておきたいのでメモを残す。

Terraformのバージョンは最新に追従できていなくて、 v0.9.11 を使用。

EC2のインスタンスタイプ変更時はEBSはそのまま残る

EC2をスケールアップした際の挙動。 インスタンスがstopされ、インスタンスタイプが指定のものに変更されて、再起動される。 この時、EBSは変更されないので、EBSに保存されていたデータはそのまま引き継がれる。

ここにある作業内容をそのままTerraformがやっている。 https://recipe.kc-cloud.jp/archives/1348

tfファイルの変更内容

resource "aws_instance" "example" {
  #...
-  instance_type = "t2.micro"
+  app_ec2_instance_type = "t2.small"
  #...
}

Elastic IPの設定

EIPを設定する際に、 下記のように aws_eip だけ設定していると、EC2インスタンスインスタンスタイプ変更時に再起動された際に EIPがアタッチされなかった。 aws_eip_association の設定が必要

resource "aws_eip" "example" {
  instance_id = "i-XXXXXXXX"
  vpc = true
}

tfファイルの変更内容

resource "aws_eip" "example" {
-  instance_id = "i-XXXXXXXX"
  vpc = true
}
+ 
+ resource "aws_eip_association" "example" {
+   instance_id = "i-XXXXXXXX"
+   allocation_id = "${aws_eip.example.id}"
+ }

RDSインスタンスタイプ変更時には apply_immediately を trueにする

これを設定しておかないと、インスタンスタイプが変更されずにやきもきすることになる。というか、やきもきした。 Terraformというか、RDSの知見。

tfファイルの変更内容

resource "aws_db_instance" "example" {
  # ...
- apply_immediately = "false"  
+ apply_immediately = "true"  
  # ...
}

RDSインスタンスタイプ変更時にはストレージは変更されない

これはEC2と同様。 当たり前といえば当たり前だが、ちゃんと把握しておかないと作業するときドキドキするので、メモしておく

tfファイルの変更内容

resource "aws_db_instance" "example" {
  # ...
- instance_class = "db.t2.micro"
+ instance_class = "db.m4.small"
  # ...
}

RDSインスタンスタイプ変更時にエンドポイントは変更されない

これも当たり前だけど、一応メモ。 RDSのエンドポイントは、EC2と違ってIPに依存しないので、再起動が発生しても影響を受けない。


kuchitama.hateblo.jp

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス