Terraform 1.5.0 update情報

技術本部 サービスリライアビリティグループ(SRG)の松田(@msy_mtd_a5)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事は、Terraform version 1.5におけるupdate情報をまとめます。キャッチアップの手助けになれば幸いです。
 
 

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 では一緒に働く仲間を募集しています。 ご興味ありましたらぜひこちらからご連絡ください。
 
このエントリーをはてなブックマークに追加