先日ついに Terraform が 1.0 に到達して GA したというニュースが飛び込んできましたね。個人的には Terraform は 1.0 にならない系のプロダクトだと思っていましたが違っていたようです。
Today we are announcing the GA release of #Terraform 1.0. This marks a major milestone for interoperability, ease of upgrades, and maintenance for your automation workflows for what has become a standard for cloud provisioning. #HashiConf https://t.co/Ciqz0txdrT pic.twitter.com/Aj9oF42Fnv
— HashiCorp (@HashiCorp) 2021年6月8日
既に Terraform と Azure の組み合わせを多くのプロジェクトで使ってきたので、0.1x からの State の移行がスムーズに行えるのは非常にありがたいです。
最近は新しいプロジェクトでは GitHub と GitHub Actions で Terraform 向けの Workflow を作成することが多いのですが、既に Azure を使っている場合は Azure AD でシームレスにログインが行える Azure DevOps を使った方が便利なことも多いです。
それ故に Terraform 向けの Pipeline も数多く作成してきましたが、Azure Pipelines 向けの Terraform Task には 0.15 の時点で問題がありました。
Azure のデプロイに使用する Service Principal を渡す方法が新しくなり、それの後方互換性が 0.15 から完全に切られたので、古い方法にしか対応していなかった TerraformTaskV1@0
では 0.15 以降のバージョンが使えない状態でした。
当然ながら手動で必要な環境変数を設定すれば動作しましたが、Service Connection 経由で使えないのが面倒でした。この問題が少し前のアップデートで修正されたので Terraform 1.0 も使えるようになりました。
Azure Pipelines 向けの Terraform 拡張は検索するといくつか出てくるのですが、最近は Microsoft DevLabs の Terraform 拡張を使うようにしています。数年前に HashiCorp とのパートナーシップによってこの辺り拡充されるという話があった割にイマイチではありますが…。
インストール済みの拡張がバージョンアップされているかは、Azure DevOps の Manage extensions から確認できます。自動で行われるはずですが、タイミングが良くわからないので確認しておきたい部分です。
一先ずはバージョン 0.1.10
がインストールされていれば問題ありません。
Terraform CLI のインストール Task は変更されていませんが、CLI 実行の Task は TerraformTaskV2@2
に更新されているので、既存の Pipeline で参照している部分を置き換える必要があります。
古い Task も維持されているので、拡張が更新されても既存の Pipeline が壊れることはありませんが、0.14 以降では差分が大幅に見やすくなっているのでさっさとバージョンアップしておくのが良いです。
個人的ベストプラクティスとして公開している GitHub Repo は TerraformTaskV2@2
と Terraform 1.0 への対応を行っておいたので、興味がある方は該当の PR を参照して貰えればと思います。
要するに Terraform 拡張の更新と Task の変更を行えば問題なく利用できるという話でした。自分のように 0.15 へのアップデートを試みて諦めた人もいるのかなと思ったので、少し経緯を含めて書きました。