terraformと手動オペレーションでterraformを使ってlaunchしたEC2のインスタンスタイプを変更した時の話。

terraformにAWS EC2のinstance typeを変更するresourceはまだ提供されていません。(議論は issue#1270などで行われているみたいですが)

基本的にterminate -> launchの順です。

ステートレスなサーバであれば今のterraformが提供するforce new recreateで良いと思います。

ただDBサーバ等のステートフルなサーバのinstance typeを変更するときはちょっと困りモノです。

terraformで定義したresourceの状態はterraform.tfstate/terraform.tfstate.backupで状態保存してるので、手動オペレーションによる矛盾が発生したときはこのファイルを直接いじればOKです。

  • instance typeを変更する該当インスタンスを停止
  • instance typeを変更して起動
  • terraformで定義したEC2のresourceにあるinstance typeを変更後のinstance typeに変更する
  • terraform.tfstateをエディタで開いてinstance typeを変更したinstance idのinstance typeを変更後のinstance type名にする
  • terraform planを実行して実行結果が下記のとおりであればOK(NGの場合は-/+ ~が出力されます)
No changes. Infrastructure is up-to-date. This means that Terraform
could not detect any differences between your configuration and
the real physical resources that exist. As a result, Terraform
doesn't need to do anything.
  • terraform applyを実行して、下記のとおりであればOK

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

脳筋的変更対象の台数が増えるときっついかなー。

stop instance, modify系に期待。

terraform先生の今後の活躍にご期待ください。

元記事はこちら

terraform <= 0.5.X で EC2のchange instance type