HashiCorpがTerraform v0.8をリリースした。Amazon Web Services,VMware vSphere,UltraDNSといったプロバイダ経由で,プログラム可能なインフラストラクチャの構築,結合,ローンチを可能にするオープンソースツールだ。おもな新機能としては,インタラクティブなコンソール,条件値,HashiCorp VaultおよびNomad用のプロバイダなどがある。
Terraform 0.8では,Terraform Consoleに新たにインタラクティブなコンソールが加わり,インターポレーション(interpolation, 改変)試行とインフラストラクチャ調査が可能になった。インターポレーションでは,コンソールからの(任意のTerraformコンフィギュレーション項目の)入力に対して,生成されたアウトプットの確認が可能であることから,HashiCorpのブログには,コンソールが初めてTerraformを扱う開発者にとって優れた学習用リソースとなる,ということが示唆されている。インフラストラクチャや状態の偶発的な変更を防ぐため,現在のコンソールは読み取り専用となっている。
現在のインターポレーションでは基本的な条件文がサポートされており,リソースのメタパラメータなどの値の条件付き割り当てを行なうことができる。‘count’パラメータと組み合わせれば,‘count = "${var.env == "’production” ? 1 : 0}”’のように,リソースを条件付きで取り入れることが可能だ。この例では,変数“env”に“production”以外の値を設定することでcountの値が0になるため,関連するリソースは生成されなくなる。Terraformでは論理演算子として,等式 ==, !=,数値比較 >, <, >=, <=,ブール演算子 &&, ||, !(単項)をサポートしている。
Terraform 0.8では,terraformコンフィギュレーションのメタパラメータ’required_vesion’を使用して,“required_version = “>= 0.8, < 0.9”のように,’Terraform Version Requirement’を指定できるようになった。HashiCorpのブログには,この機能を追加した理由として,期待しないTerraformのバージョンでのTerraformコンフィギュレーションの実行を防止することがあげられている。例えば,既存のインフラストラクチャにダメージを与える可能性のあるバグが以降のバージョンで修正されたTerraformバイナリに対して,コンフィギュレーションのapplyの実行を防止するために使用する。目的のバージョンと一致しない場合,Terraformは初期の段階でエラーを出力して,そのコンフィギュレーション操作にはTerraformのバージョンを変更する必要があることをユーザに示す。
インフラストラクチャの生成と変更には,APIアクセストークンやデータベース管理パスワードなど,多数の資格情報を必要とすることが少なくない。このような情報を格納するために最適な場所が,機密情報管理ツール(Secure Secret Management Tool)だ。TerraformのVaultプロバイダを使えば,HashiCorpの機密管理ツールであるVaultと,データの読み書きおよび設定を行なうことができる。
Terraformのドキュメントによると,Vaultプロバイダが現在サポートしているのはgeneric secretバックエンドのみだが,これは2つの主要なケースをカバーしている。(1) Valutのコンフィギュレーションとポピュレーション - Valutの管理者は,Valutの構成と機密情報への適用にTerraformを使用することができる。(2) Terraformコンフィギュレーション内でのVault資格情報の使用 - 資格情報をVaultから取得可能,すなわち,オペレータおよびTerraformを実行するシステムは,資格情報を他のプロバイダに一時貸与するための適切な権限を持ったVaultトークンにアクセスできればよい。
Vaultプロバイダの資料に明記されているように,Terraformを使ってVaultを操作することで,読み取りないし書き込みを行なう機密情報がTerraformのステートファイルの他,同時に生成される通常ファイルにも永続化される点には注意が必要だ。Vaultの機密情報を参照あるいは更新するすべてのTerraformモジュールは,これらのファイルを相応の機密性と保護の下で扱わなくてはならない。さらに現在のTerraformは,コンフィギュレーション経由で提供される機密情報を編集および保護する機構を備えていない。従って,Valutに機密情報を格納する手段としてTerraformを選択したチームは,それぞれのリソースのドキュメントページに記載されている機密情報の永続化に関する説明に対して十分な注意を払うと同時に,それらの方法が自分たちのセキュリティポリシに対して適切なものであるか,慎重に検討する必要がある。
新たに提供されるNomadプロバイダを使用すれば,インフラストラクチャ構築プロセスの一部として実行する必要のあるジョブを,TerraformからHashiCorp Nomad分散スケジューラにセットアップすることが可能になる。ここでのユースケースは,おもにシステムジョブやバッチ初期化ジョブだ。HashiCorpのブログが示唆するところによると,この新機能はnomad runを完全に置換することを意図したものではないが,クラスタや関連するアプリケーションの起動にTerraformを使用できるようになる。
Terraform 0.8にはバージョン0.7と互換性のない部分がいくつかあるので,HashiCorpチームは開発者に対して,アップグレードガイドを十分に確認するように呼びかけている。アップグレードガイドには,0.8へのアップグレード時に問題となるすべての非互換性と,必要な検討事項が記されている。
HasiCorp Terraform v0.8リリースのさらなる詳細は,HashiCorpのブログで確認することができる。また,TerraformのバイナリはHashiCorpのWebサイトから,ソースコード(おもにGo言語で記述されている)はプロジェクトのGitHubリポジトリから,それぞれダウンロードが可能だ。
この記事を評価
- 編集者評
- 編集長アクション