ローカルとCI/CD実行環境のterraformバージョンをtfenvで揃える


やらかし

現在担当しているプロダクトではterraformでリソース管理をしており、CircleCIを用いてCI/CDを行っています。

ある日dev環境への反映ということもあり、CircleCIを使わずにローカルからterraform applyをした所、そのapply自体は通ったのですがその後のCircleCIからのterraform実行がエラーとなってしまいました。原因を確認した所、CircleCIで利用しているterrformバージョンより新しいバージョンでローカルから実行してしまったことが原因でした。terraformの仕様上、terraform apply時に更新されるtfstateファイルに定義されているterraformバージョンを下回るバージョンでのterraform実行はできないようです。

この時はCircleCI側のterraformバージョンを上げることで解決しました。対応策としてローカルからのterraform applyは気安く行わないことが上げられますが、ローカルとCircleCIのterraformバージョンを揃えといた方が良いかとも思います。そこでterraformバージョンを管理するtfenvが利用できます。

tfenvとは

tfenvは簡単にterraformのバージョンを切り替えられるパッケージマネージャです。詳しくは作成者の方の記事をご覧ください。

.terraform-versionファイル

tfenvの特徴として.terraform-versionファイルを置いておくとファイルに書かれたバージョンを利用します。こちらをリポジトリ上で管理することで、ローカルとCI/CD実行環境側にtfenvを導入することでterrafromバージョンを揃えることができます。

最後に

今回はtfenvを紹介しました。tfenvを使って開発環境と実行環境のバージョン差異を無くしましょう!