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先生の今後の活躍にご期待ください。