HashiCorpが開発したオープンソースの「Infrastructure as Code(コードとしてのインフラストラクチャー、IaC)」ツールであるTerraformを使えば、プログラマーがインフラストラクチャーを安全かつ効率的に構築、変更、バージョン管理することができます。
Terraformとは、開発者がHCL(HashiCorp Configuration Language)と呼ばれる高水準の構成言語を使用して、アプリケーションを実行するためのクラウドまたはオンプレミスのインフラストラクチャーの望ましい「最終状態」を記述できる宣言型コーディング・ツールです。次に、その最終状態に到達するための計画を生成し、その計画を実行してインフラストラクチャーをプロビジョニングします。
Terraformはシンプルな構文を使用し、複数のクラウドとオンプレミスのデータセンターにわたってインフラストラクチャーをプロビジョニングし、構成の変更に応じてインフラストラクチャーを安全かつ効率的に再プロビジョニングします。これが現在最も人気のあるインフラ自動化ツールの1つとなっている理由です。組織でハイブリッドクラウド環境またはマルチクラウド環境の導入を計画している場合は、Terraformについて知りたい、または知る必要があるとお考えのことでしょう。
Desktop as a Service(DaaS)を利用して、企業がオンプレミスでアプリケーションを展開するのと同等のパフォーマンスとセキュリティーの達成を可能にする方法をご覧ください。
Terraformのメリットをよりよく理解するには、まずコードとしてのインフラストラクチャー(IaC)のメリットを理解するといいでしょう。IaCを使用すると、開発者はインフラストラクチャーをコード化することで、プロビジョニングを自動化、高速化し、再現可能にできます。IaCは、バージョン管理や継続的インテグレーション、継続的デプロイメントといったアジャイルおよびDevOps手法の重要な要素です。
コードとしてのインフラストラクチャーは、次のことに活用できます。
開発者が他のコード型インフラストラクチャー・ツールではなく、Terraformを選ぶ主な理由は次のとおりです。
Terraformモジュールは、一緒に使用される複数のインフラストラクチャー・リソース用の再利用可能な小さいTerraform設定です。Terraformモジュールは、再利用・設定可能な構造により複雑なリソースを自動化できるため、便利です。非常に単純なTerraformファイルを記述するだけでも、モジュールが作成されます。モジュールは、子モジュールという他のモジュールを呼び出すことができ、これにより設定の組み立てをより迅速かつ簡潔にすることができます。モジュールは、同じ設定内または別の設定内で複数回呼び出すこともできます。
Terraformプロバイダーとは、リソース・タイプを実装するプラグインです。プロバイダーには、ユーザーに代わって(通常はパブリッククラウド・プロバイダーからの)サービスを認証して接続するために必要なすべてのコードが含まれています。使用するクラウド・プラットフォームとサービスのプロバイダーを見つけて設定に追加し、そのリソースを使用してインフラストラクチャーをプロビジョニングできます。プロバイダーは、Terraformコミュニティーや個々の組織によって開発やサポートが行われているほぼすべての主要なクラウド・プロバイダーおよびSaaS製品などで利用できます。詳細なリストについては、Terraformのドキュメント(ibm.com外部へのリンク)を参照してください。
TerraformとKubernetesは、それぞれの機能が混同されることがあります。実際にはこの2つは二者択一ではなく、効果的に連携します。
Kubernetesはオープンソースのコンテナ・オーケストレーション・システムなので、開発者はコンピュート・クラスター内のノードへのデプロイメントをスケジュールし、コンテナ化されたワークロードを能動的に管理して、その状態をユーザーの意図に一致した状態にできるようになります。
一方、Terraformは、より広範囲に適用できるコード型インフラストラクチャー・ツールなので、開発者は複数のパブリッククラウドとプライベートクラウドにまたがる万全なインフラストラクチャーを自動化できるようになります。
Terraformは、サービスとしてのインフラストラクチャー(IaaS)、サービスとしてのプラットフォーム(PaaS)、またはサービスとしてのソフトウェア(SaaS)レベルの機能を自動化して管理し、すべてのプロバイダーに対してこれらすべてのリソースを同時に構築できます。Terraformを使用すると、Kubernetes(特にクラウド・プラットフォーム上のマネージドKubernetesクラスター)のプロビジョニングの自動化やクラスターへのアプリケーションのデプロイメントの自動化が可能になります。
TerraformとAnsibleは両方ともコードとしてのインフラストラクチャー・ツールですが、この2つの間にはいくつかの大きな違いがあります。
IBM Cloud Schematicsは、宣言型Terraformテンプレートを必要なクラウド・インフラストラクチャーに提供することでオートメーションを実現します。
コードとしてのインフラストラクチャー(IaC)はインフラストラクチャーのプロビジョニングを自動化し、組織がより迅速に、リスクとコストを抑えながらクラウド・アプリケーションの開発・導入・拡張を可能にします。
Kubernetes は、アプリケーションのデプロイ、管理、スケーリングを自動化するオープンソースのコンテナ・オーケストレーション・プラットフォームです。 Kubernetesで費用対効果の高いクラウドネイティブの開発を実現する方法をご紹介します。
IaaSとそのコンポーネントや優位性、料金体系に関する基礎とIaaSとPaaS、SaaS、BMaaS、コンテナ、サーバーレスとの関連性に関する概要。