マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Terraform

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Terraform」とは
概要
Terraform(テラフォーム)とは、インフラストラクチャ用プロビジョニングツールです。インフラをコードで管理し、安全かつ効率的に「構築」「変更」「バージョン管理」を実施できます。
基本説明
Terraformは、インフラ状態をコードで管理するためのプロビジョニングツールです。
インフラをコードとして扱うことで宣言型構成ファイルに体系化できます。チームメンバー間で構成ファイルを「編集」「共有」「レビュー」「バージョン管理」することで、人気サービスプロバイダや社内カスタムソリューションを管理できます。
構成管理ツール「Chef」「Puppet」などと組み合わせて利用でき、管理台数が増えるほど効果を発揮します。
主要開発元
Terraformは、Hashicorp社によるオープンソースプロダクトです。
経緯
・2014年:初版リリース
オフィシャルサイト情報
■オフィシャルサイト
■ライセンス情報
Terraformのライセンスは「Mozilla Public License 2.0」です。
詳細について、こちらを参照ください。
→GitHub →hashicorp/terraform →LICENSE
■ダウンロード
以下のOS用バイナリが提供されています。
・macOS
・FreeBSD
・Linux
・OpenBSD
・Solaris
・Windows
→Terraform →Download Terraform
同様製品
同様な機能を提供する製品として、次のようなものがあります。
プロビジョニングツール
「Terraform」は、既存マシンにソフトウェアをインストールして管理する「Chef」「Puppet」などの構成管理ツールではなく、プロビジョニングツールです。
■インフラに集中
プロビジョニングツールである「Terraform」はシンプルで統一された構文を提供し、新しいツールを学ぶことなくほとんどすべてのリソースを管理することを可能にします。
必要なすべてのリソースを取り込むことによって、それらの間の依存関係が自動的に解決されるため、オペレーターはそれらについて覚えて推論する必要がありません。
オペレータはツール構築ではなくインフラに集中できます。
■構成管理ツール連携
「Terraform」は、データセンターと関連サービスのより高度な抽象化に焦点を当てており、リソースを作成した後にそのリソースを設定するためにあらゆる構成管理ツールを使用できるようにします。
構成管理ツールまでを含む全体のインフラストラクチャ展開を容易で信頼できるものにできます。
インフラのコード化(Infrastructure as Code)
Terraformは、インフラを安全かつ効率的に管理するために、インフラの状態をコード化して定義します。
■管理効率化
インフラ状態の管理効率化を図れます。
・バージョン管理
・コード比較
・共有
・再利用
・設定適用前チェック など
インフラの抽象化
Terraformが提供する「リソースおよびプロバイダに対する柔軟な抽象化機能」により、Terraformが管理対象とする「インフラ」として、ハイレベルからローレベルまであらゆるものを表現でき、統合的な管理を実施できます。
■管理対象インフラ
・物理ハードウェア
・ストレージ
・ネットワーキング—CDN、DNSプロバイダ
・ロードバランサー
・仮想マシン—コンピューティングインスタンス、コンテナ
・データベース
・SaaS機能
・Eメール など
構成ファイル
■インフラ状態をコードで記述
Terraform構成ファイルには、「どこの環境なのか」「どのような仮想サーバスペックなのか」など、必要となるすべてのインフラ状態をコードとして記述します。
プロバイダへの低レベルのプログラムによるアクセスを提供することを意図したものではなく、クラウドリソースおよびサービスの「作成」「プロビジョニング」「組み合わせる方法」を説明するための高レベルの構文を提供します。
構成ファイルにインフラストラクチャについて高レベル構成構文を使用して記述します。これにより、データセンターの設計図をバージョン管理し、他のコードと同様に扱えます。さらに、インフラストラクチャを共有して再利用することも可能です。
「単一アプリケーション管理」から「データセンター全体を実行するために必要なコンポーネント群管理」まで対応できます。
■構成ファイルから実行計画生成
Terraformは、目的の状態に到達するために必要な作業を記述した実行計画を生成し、それを実行して記述されたインフラストラクチャを構築します。
設定が変更された場合には、Terraformは何が変更されたかを判断し、適用可能な増分実行プランを作成します。
プラグインベースモデル
■概要
Terraformは、プロバイダとプロビジョニングツールをサポートするためにプラグインベースモデルを採用しています。
Terraformのプロバイダとプロビジョニングツールはプラグインを介して提供され、APIを公開するほぼすべてのサービスをサポートできます。
プラグイン機構により、未対応プラットフォームへの対応も行えます。
■独立プロセス実行
プラグインは独立したプロセスとして実行され、RPCインターフェイスを介してメインのTerraformバイナリと通信します。
■サポートプロバイダ
多くのプロバイダが提供されています。
「Terraform」のプロビジョニング機能
①インフラストラクチャをコード定義
Terraformは、インフラストラクチャをコードとして定義することで、オペレータの生産性と透明性を高めます。
■共同作業
Terraformの構成ファイルは、オペレータチームで共有して共同作業を実施できます。
■バージョン管理
インフラストラクチャバージョンの完全な履歴を追跡できます。
■自動化対応
インフラをコード体系化できることで、自動化を促進できます。
②計画作成
Terraformは、オペレータが安全かつ予測可能な状態でインフラストラクチャを計画し変更できます。
■計画作成
Terraformの計画ステップでは「どのように処理を行うか?」を定義した「実行計画」が作成されます。
計画と実行の分離
Terraformは、実行計画の概念を使用して計画と実行を分離することで、規模の誤りや不確実性を減少させ、想定外の挙動を防止できます。
■リソースグラフ(依存関係マッピング)
変更箇所から全体への波及
計画に変更を加える場合、小さな変更に思えても、インフラストラクチャ全体に潜在的な連鎖的影響を与える可能性があります。
依存関係マッピング
Terraformはコード定義が与えられると、リソース間の関係を示すグラフを作成し、このグラフをたどって「計画生成」や「状態更新」などを行います。
オペレーターは「依存関係」や「影響範囲算出」を把握できます。
並列処理
依存関係を把握したTerraformは、依存関係がないリソースに対して並列処理を実行することで、インフラストラクチャをできる限り効率的に構築します。
③計画実行
Terraformは、複数プラットフォームに対して統一的な手法でプロビジョニングを実施できます。
■変更適用処理の可視化
変更処理の可視化
前述の実行計画とリソースグラフを使用することで、「どのような順序でどの部分がどのように変更されるのか?」について正確に把握できるため、多くの人的エラーを回避できます。
複雑な変更でも、最小限の人的操作でインフラストラクチャに適用できます。
無用な推論を排除
他の構成管理ツールなどでは、計画段階と実行段階が組み合わされているため、オペレーターは変更の影響について推論することを強いられるケースがあります。
Terraformでは、事前に何が起こるのかを正確に把握できるため、オペレーターは自信を持って変更を適用できます。
■複数プロバイダに対する一貫した組み合わせ
Terraformを使用すると、高レベルのシステムプロバイダを簡単に組み合わせることが可能です。
Terraformは、単一のプロバイダ内に存在するサブセットのみではなく、インフラストラクチャ全体をそのサポートサービスで表現および管理できます。
各プラットフォームおよびサービスに対して、オペレータが独立した相互運用不可能なツールを使用する必要がなく、単一の統一された構文が提供されます。
以下のように、他のリソースの属性を使用して、複数のプロバイダにわたるリソースで構成されるインフラストラクチャを作成できます。
作成例1
あるクラウドプロバイダからサーバを起動し、そのIPを持つDNSエントリを別のプロバイダに追加する。
作成例2
AWSとOpenStackのクラスタを同時に編成しながら、CloudflareやDNSimpleなどのサードパーティプロバイダを統合してCDNおよびDNSサービスを提供する。
■再現可能なインフラストラクチャ
構成ファイルを再利用して、複数の場所で同一のインフラストラクチャを構築できます。
Terraform構成はモジュールとしてパッケージ化し、チームや組織全体で使用できます。
「Terraform」のユースケース
Terraformはさまざまなユースケースで活用できます。
①Herokuアプリのセットアップ
WebアプリケーションホストPaaS「Heroku」に対して、Terraformを使用してHerokuアプリケーションに必要な設定を体系化し、必要なアドオンをすべて利用できるようにできます。
②多層アプリケーション構築
一般的な2層アーキテクチャについて、Terraformは各層をリソースの集まりとして記述でき、各層間の依存関係を自動的に処理できます。
③セルフサービスクラスタ
情報システム部門がTerraformを使用してサービス構築方法および拡張方法に関する知識を体系化しておくことで、各部門がセルフサービスインフラストラクチャを構築できます。
④ソフトウェアデモ
ソフトウェア作成者は、AWSのようなクラウドプロバイダ環境で「デモを作成し、プロビジョニングし、ブートストラップする」ためのTerraform設定を提供できます。
⑤使い捨て環境
Terraformを使用して、新しい環境を迅速に立ち上げてテストし、その後簡単に廃棄できます。
⑥ソフトウェア定義ネットワーキング
Terraformは、ソフトウェア定義ネットワーク(SDN:Software Defined Networking)の構成を体系化するために使用できます。
⑦リソーススケジューラ
Terraformはリソーススケジューラをプロバイダとして扱うことができるため、多くのソフトウェアツールを動的にスケジュールするために使用できます。
⑧マルチクラウド展開
Terraformは、クラウドに依存せず、単一構成を使用して複数プロバイダを管理したり、クラウド間の依存関係を処理できます。
参考元サイト
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
ランク1位
【ツール紹介】無料オープンソース「 ビデオ監視 ツール 」まとめ3選ランク2位
【無料で使える】「 RPA 」ツールまとめランク3位
【無料で使える】「 プロジェクト管理 」ツールまとめランク4位
【OSS情報アーカイブ】Snortランク5位
【ツール紹介】無料オープンソース「 CAD ツール 」まとめ3選ランク6位
【無料オープンソース】「 リモートアクセス 」ツールまとめ5選ランク7位
【無料で使える】「 エンドポイントセキュリティ 」ツールまとめランク8位
【無料で使える】「 OCR 」ツールまとめランク9位
【無料で使える】「 メール 」ソフトウェアまとめランク10位
【OSS情報アーカイブ】ClamAV
おすすめの記事

デジタル寺田の3分用語解説
2025.03.10
【デジタル寺田の3分用語解説】 「 ウェルビーイング 」とは?
「 ウェルビーイング 」とは、身体的・精神的な健康だけでなく、社会的・経済的にも満たされた状態を指します。企業にとっては、健康経営の推進により生産性向上や離職率低下などのメリットがあります。本記事では、ウェルビーイングが注目される背景や企業の具体的な取り組みについて詳しく解説します。