BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Terraform 0.9がリリース

Terraform 0.9がリリース

原文(投稿日:2017/03/26)へのリンク

HashiCorpがTerraform 0.9.をリリースした。今回のリリースには、リモートの状態管理に大きな改善がなされている。状態のロックや'state environments'、そして、'terraform init'という新しいインストールコマンド、リソースを壊したあとに実行するように構成できる破壊プロビジョナ、そして、選択したリソースに対する'resource interrupts'でカスタムのロジックで即時に操作の中断を管理できる機能だ。

Terraform 0.9はリモートの状態の管理を大きく改善している。既存のリモートの状態との互換を気にしなければならないが、Terraform 0.11で古いリモートの状態のサポートは削除される予定だ。大きく改善したのは重複した並列の書き込みを避けるためにサポートするバックエンドの状態をネイティブでロックする仕組みだ。Terraform 0.9で状態のロックをサポートするバックエンドはローカルAWS S3Consulだ。

HashiCorpブログでは、あるチームのメンバが事故的に他のメンバの設定を上書きしてしまうというリスクを状態ロックがどのように低減しているのかについて説明している。状態ロックは状態の書き込みを行う全ての操作で自動的に行われる。ロックが失敗したらTerraformは処理を継続しない。'-lock'フラグを使えばほとんどのコマンドで状態ロックを無効にできるが、これは推奨されない。アンロックが失敗した場合は、Terraformは'force-unlock'に必要なロックIDとメタデータを提供する。より詳細な情報はドキュメントの状態ロックの項目に書かれている。

リモートの状態は'バックエンド'の一部になる。バックエンドはTerraformの新しい抽象であり'state environments'のようなプラガブルな様々な機能をカプセル化する。state environmentは状態の名前空間であり、単一のTerraformの構成フォルダがインフラリソースの複数の別々のセットを管理できる。バージョン管理システムのブランチに似ているが、state environmentsはマージができない。HashiCorpブログでは、開発時に変更をテストするためにリソースのセットを分離するのに活用できる。テストをしてから必要な変更を他の環境に適用するという使い方だ。環境はCLIで管理できる。

HashiCorpブログによれば、state environmentだけで開発、ステージング、プロダクションの違いを管理するべきではない。Terraformの構成が大きくなったら、"小さく分割しterraform_remote_stateを使ってリンクさせることで管理しやすく扱いやすくする"。これによってチームはオーナーシップを移譲し変更のインパクトを最小限にできる。より詳細な情報はドキュメントのstate environmentsのページにある。

またTerraform 0.9には'terraform init'という新しいコマンドが追加された。Terraformの構成のインストールとセットアップを担うコマンドだ。インストールの一部として、Terraformはバックエンドの構成の変更を検出し既存の状態のマイグレーションを提供する。これによって、開発者はあるバックエンドタイプから別のバックエンドタイプへ移行でき、この変更をTerraformが自動的に管理してくれる。HashiCorpブログによれば、この新しいコマンドはTerraformのワークフローの中核を担うようになる。

['terraform init']コマンドは全てのチームのメンバがあらゆるTerraformの構成を実行するために使えるセットアップコマンドです。何度実行しても安全でありバックエンドが適切に構成されることを保証します。

また、'terraform plan'のような主要なコマンド、'terraform taint'や'terraform console'のようなヘルパコマンドを含めTerraformの全てのコマンドがリモートの状態とシームレスに連携するようになった。ローカルマシンからこれらのコマンドが実行されれば、ローカルではなくリモートの状態に対して実行される。HashiCorpによれば、"この方法でユーザーは自分が慣れているCLIを使いつつ、リモートの状態ストレージの利点も享受できる"。バックエンドのドキュメントにはさらに詳しい情報がある。

また、Terraform 0.9ではリソースを壊したときにプロビジョナを実行できる。最初の0.1のリリースからTerraformはコマンドのローカル、そして、リモートでの実行のようなリソース作成の一部としてのプロビジョニングを実行する仕組みとしてプロビジョナをサポートしていた。破壊プロビジョナはこの機能を強化し、"when = 'destroy'"というパラメータが定義されたら、リソースの破壊の一部として動作する。定義されたリソースが破壊される前に実行される。失敗したら、Terraformはエラーになり、次の'terraform apply'のときにプロビジョナが再実行される。

また、いくつかの小さな改善もされている。中断が検出されカスタムのロジックで管理できるようになった。また、多くの新しいプロバイダとリソースのサポートが追加されている。既存リソースにも大きな改善がある。例えば、AWSインスタンスは削除せずにリサイズできるようになった。EC2のIPv6をサポートした。DNSimpleプロバイダがAPIv2を使うように更新された。

Terraform 0.9には後方互換性がある。しかし、非推奨になった点や変更された点があり、アップグレードガイドに書かれている。Terraform 0.9リリースの詳細な情報はHashiCorpに書かれている。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT