ホーム topics Terraformとは Terraformとは何ですか?
IBMのTerraformソリューションはこちら クラウド関連の最新情報を購読する
コンピューターのモニター、サーバー、雲、ドットのピクトグラムをコラージュしたイラスト
Terraformとは何ですか?

HashiCorpが開発したオープンソースの「Infrastructure as Code(コード型インフラストラクチャー、IaC)」ツールであるTerraformでは、プログラマーがインフラストラクチャーを安全かつ効率的に構築、変更、バージョン管理することができます。

Terraformとは、開発者がHCL(HashiCorp Configuration Language)と呼ばれる高水準のコンフィギュレーション言語を使用して、アプリケーションを実行するためのクラウドまたはオンプレミスのインフラストラクチャーの望ましい「最終状態」を記述できる宣言型コーディング・ツールです。次に、その最終状態に到達するための計画を生成し、その計画を実行してインフラストラクチャーをプロビジョニングします。

Terraformはシンプルな構文を使用し、複数のクラウドとオンプレミスのデータセンターにわたってインフラストラクチャーをプロビジョニングし、構成の変更に応じてインフラストラクチャーを安全かつ効率的に再プロビジョニングします。これが現在最も人気のあるインフラ自動化ツールの1つとなっている理由です。組織でハイブリッドクラウド環境またはマルチクラウド環境の導入を計画している場合は、Terraformについて知りたい、または知る必要があるとお考えのことでしょう。

DaaSで柔軟な職場を叶える

Desktop as a Service(DaaS)をつかって企業がどのようにアプリケーションをオンプレミスに展開するのと同じレベルのパフォーマンスとセキュリティを達成できるかをご覧ください。

関連コンテンツ

登録してアプリのモダナイゼーションに関するガイドを受け取る

コード型インフラストラクチャー(IaC)を選択する理由

Terraformのメリットをよりよく理解するには、まずコード型インフラストラクチャー(IaC)のメリットを理解するといいでしょう。IaCを使用すると、開発者はインフラストラクチャーをコード化することで、プロビジョニングを自動化、高速化し、再現可能にできます。IaCは、バージョン管理や継続的インテグレーション継続的デプロイメントといったアジャイルおよびDevOps手法の重要な要素です。

コード型インフラストラクチャーは、次のことに活用できます。

  • 速度の改善:リソースの導入や接続が必要な場合、インターフェースを手動でナビゲートするよりもオートメーションの方が高速です。

  • 信頼性の向上:インフラストラクチャーが大規模になると、リソースの設定を間違えたり、サービスのプロビジョニングの順番を間違えたりしやすくなります。IaCでは、リソースは常に宣言どおりにプロビジョニングされ、設定されます。

  • 設定のずれを防ぐ:設定のずれは、環境をプロビジョニングした設定が実際の環境と一致しなくなった場合に発生します。(「不変のインフラストラクチャー」を参照してください)

  • 実験・テスト・最適化をサポート:コード型インフラストラクチャーは、新しいインフラストラクチャーのプロビジョニングをはるかに迅速かつ容易にするため、多くの時間とリソースを投資することなく、実験的な変更を行い、テストを実施できます。結果が問題なければ、新しいインフラストラクチャーを本番用にすぐにスケールアップできます。
Why Terraformを選ぶ理由

開発者が他のコード型インフラストラクチャー・ツールではなく、Terraformの利用を選ぶ主な理由は次のとおりです。

  • オープンソース:Terraformは、プラットフォームへのプラグインを構築する貢献者の大規模なコミュニティーに支えられています。使用しているクラウド・プロバイダーに関係なく、プラグインや拡張機能および専門的なサポートを簡単に見つけられます。このことは、Terraformが急速に進化し、常に新しいメリットが加わり、改善されていることも意味します。

  • プラットフォームにとらわれない:これは、任意のクラウド・サービス・プロバイダーで利用可能であることを意味します。他のほとんどのIaCツールは、単一のクラウド・プロバイダーで動作するように設計されています。

  • 不変のインフラストラクチャー:ほとんどのコード型インフラストラクチャー・ツールでは、変更可能なインフラストラクチャーを構築できるため、インフラストラクチャーに変更を加えてミドルウェアのアップグレードや新しいストレージ・サーバーなどの変化に対応できます。変更可能なインフラストラクチャーの危険性は設定のずれにあります。つまり、変更が積み重なると、さまざまなサーバーやその他のインフラストラクチャー要素の実際のプロビジョニングが元の設定からさらに「ずれ」、バグやパフォーマンスの問題の診断と修正が困難になってくるということです。Terraformは不変のインフラストラクチャーを実現します。つまり、環境を変更するたびに、現在の設定は変更を考慮した新しい設定に置き換えられ、インフラストラクチャーが再プロビジョニングされるのです。さらによいことに、以前の設定をバージョンとして保持して、必要あるいは要望に応じてロールバックを可能にします。
Terraformモジュール

Terraformモジュールは、一緒に使用される複数のインフラストラクチャー・リソース用の再利用可能な小さいTerraform設定です。Terraformモジュールは、再利用・設定可能な構造により複雑なリソースを自動化できるため、便利です。非常に単純なTerraformファイルを記述するだけでも、モジュールが作成されます。モジュールは、子モジュールという他のモジュールを呼び出すことができ、これにより設定の組み立てをより迅速かつ簡潔にすることができます。モジュールは、同じ設定内または別の設定内で複数回呼び出すこともできます。

Terraformプロバイダー

Terraformプロバイダーとは、リソース・タイプを実装するプラグインです。プロバイダーには、ユーザーに代わって(通常はパブリッククラウド・プロバイダーからの)サービスを認証して接続するために必要なすべてのコードが含まれています。使用するクラウド・プラットフォームとサービスのプロバイダーを見つけて設定に追加し、そのリソースを使用してインフラストラクチャーをプロビジョニングできます。プロバイダーは、Terraformコミュニティーや個々の組織によって開発やサポートが行われているほぼすべての主要なクラウド・プロバイダーおよびSaaS製品などで利用できます。詳細なリストについては、Terraformのドキュメント(ibm.com外部へのリンク)を参照してください。

TerraformとKubernetesの比較

TerraformとKubernetesは、それぞれの機能が混同されることがあります。実際にはこの2つは二者択一ではなく、効果的に連携します。

Kubernetesはオープンソースのコンテナ・オーケストレーション・システムなので、開発者はコンピュート・クラスター内のノードへのデプロイメントをスケジュールし、コンテナ化されたワークロードを能動的に管理して、その状態をユーザーの意図に一致した状態にできるようになります。

一方、Terraformは、より広範囲に適用できるコード型インフラストラクチャー・ツールなので、開発者は複数のパブリッククラウドとプライベートクラウドにまたがる万全なインフラストラクチャーを自動化できるようになります。

Terraformは、サービス型インフラストラクチャー(IaaS)サービス型プラットフォーム(PaaS)、またはサービス型ソフトウェア(SaaS)レベルの機能を自動化して管理し、すべてのプロバイダーに対してこれらすべてのリソースを同時に構築できます。Terraformを使用すると、Kubernetes(特にクラウド・プラットフォーム上のマネージドKubernetesクラスター)のプロビジョニングの自動化やクラスターへのアプリケーションのデプロイメントの自動化が可能になります。

TerraformとAnsibleの比較

TerraformとAnsibleは両方ともコード型インフラストラクチャー・ツールですが、この2つの間にはいくつかの大きな違いがあります。

  • Terraformは純粋に宣言型ツール(上記を参照)ですが、Ansibleは宣言型設定と手続き型設定の両方を組み合わせています。手続き型設定では、インフラストラクチャーを望ましい状態にプロビジョニングする手順または正確な方法を指定します。手続き型設定は手間がかかりますが、より多くの制御が可能になります。

  • Terraformはオープンソースですが、AnsibleはRed Hatによって開発・販売されています。
関連ソリューション
IBM Cloud Schematics

IBM Cloud Schematicsは、宣言型Terraformテンプレートを必要なクラウド・インフラストラクチャーに提供することでオートメーションを実現します。

IBM Cloud Schematicsの詳細はこちら
参考情報 コード型インフラストラクチャー(IaC)とは

コード型インフラストラクチャー(IaC)はインフラストラクチャーのプロビジョニングを自動化し、組織がより迅速に、リスクとコストを抑えながらクラウド・アプリケーションの開発・導入・拡張を可能にします。

Kubernetesとは

Kubernetes は、アプリケーションのデプロイ、管理、スケーリングを自動化するオープンソースのコンテナ・オーケストレーション・プラットフォームです。 Kubernetesで費用対効果の高いクラウドネイティブの開発を実現する方法をご紹介します。

サービス型インフラストラクチャー(IaaS)とは

IaaSとそのコンポーネントや優位性、料金体系に関する基礎とIaaSとPaaS、SaaS、BMaaS、コンテナ、サーバーレスとの関連性に関する概要。

次のステップ

DevOpsの準備はできていますか? 市場が要求する速度でソフトウェアとサービスを提供するには、チームは迅速に繰り返して実験し、新しいバージョンを頻繁にデプロイし、フィードバックとデータに基づいて推進する必要があります。 最も成功しているクラウド開発チームは、最新のDevOps文化と実践を採用し、クラウドネイティブ・アーキテクチャを採用し、クラス最高のツールからツールチェーンを組み立てて生産性を最大限に引き出しています。

DevOps ソリューションの詳細はこちら 無料評価版