Terraform 1.5.0 update情報
技術本部 サービスリライアビリティグループ(SRG)の松田(@msy_mtd_a5)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事は、Terraform version 1.5におけるupdate情報をまとめます。キャッチアップの手助けになれば幸いです。
Check Blockによる検証処理の強化Import Blockによるconfig drivenなインポートImportしたresourceのTerraform設定を生成plantimestamp functionの追加strcontains functionの追加終わりに
Check Blockによる検証処理の強化
指定したリソースの属性に応じて、エラー文を表示できるBlockです。
以下の例では、https://www.terraform.ioが200以外のstatus_codeを返したときに、plan実行後にhttps://www.terraform.ioreturned an unhealthy status code と表示します。
条件にマッチした場合は、エラー文を表示するのみでplanやapplyを中止させる機能はCheck Blockにはありません。
中止させたい場合は、1.2で実装されたPostcondition Blockを使用します。
PostconditionなどのCustom ConditionとCheck Blockとの使い分け方として、以下のように推奨されています。
- インフラストラクチャ全体の検証をするにはCheck Block
- リソースの設定に基づいて単一のリソースを保証したい場合はPostcondition
AWS ProviderにおけるCheck Blockの使用例として、使われていないIAM roleの検出などがexampleにあります。
Import Blockによるconfig drivenなインポート
terraform importコマンドなどで行っていたimport処理を定義できるようになりました。
importしたいresource blockを定義し、import blockでtoにresourceを指定します。
該当リソースを一意に判別できるimport IDを指定する必要があります。例えばaws_instanceであればインスタンスIDを指定します。
ImportしたresourceのTerraform設定を生成
terraform plan -generate-config-outを使うことでimportしたresourceのTerraform設定を生成できるようになりました。
import block を定義し、terraform plan -generate-config-outで設定を生成することができます。
ただし、どちらか一方の属性だけ指定できる などのオプションがあるresource設定を生成する場合、両方定義してしまいエラーとなってしまうため、事前に修正する必要があるようです。
plantimestamp functionの追加
planを実行したタイミングの日時をRFC 3339形式で返却するplantimestamp functionが追加されました。
Check Blockと組み合わせて証明書の期限切れチェックなどが可能です。
> plantimestamp()
2018-05-13T07:44:12Z
strcontains functionの追加
指定した文字列を含んでいるかチェックするstrcontains functionが追加されました。
以下、Terraform Configuration Language Functions strcontainsより引用
終わりに
今回のアップデートでは、Import Blockが個人的に一番嬉しいアップデートでした。
SRG では一緒に働く仲間を募集しています。
ご興味ありましたらぜひこちらからご連絡ください。