Terraformは、クラウドインフラストラクチャとリソースを安全かつ効率的にプレビュー、構成、管理するために使用できるオープンソースツールです。このトピックでは、Terraformの基本的な概念、利点、および使用シナリオについて紹介します。
基本概念
Terraformは、クラウド リソース オーケストレーションのためのIaC(Infrastructure as Code)ツールです。
Terraformを使用すると、シンプルなテンプレート言語を使用して、Alibaba Cloud上にクラウドインフラストラクチャを定義、プレビュー、デプロイできます。詳細については、構成構文を参照してください。
Terraformは、インフラストラクチャとアプリケーションのデプロイ、変更、バージョン管理を安全かつ効率的に実行するためのツールです。このツールは、複数レベルのリソース管理に使用できます。
Terraformが管理するリソースには、上位層ソフトウェアと、基盤となるネットワークおよびシステム構成が含まれます。
Terraformを使用して、Elastic Compute Service(ECS)、Virtual Private Cloud(VPC)、Relational Database Service(RDS)、Server Load Balancer(SLB)などのさまざまなAlibaba Cloudリソースを作成、変更、削除できます。
Terraformのシナリオの詳細については、シナリオを参照してください。
Terraformリソース
Terraformは2種類のリソースを提供します。
リソース:新しく作成されたリソースオブジェクト。
データソース:既存のリソースとその属性に関する情報を提供します。
次の例は、リソースとデータソースの使用方法を示しています。
### データソース
# 2 CPUコアと4 GBのメモリを持つインスタンスタイプを一覧表示します。
# 参考:https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/instance_types
data "alicloud_instance_types" "c2g4" {
cpu_core_count = 2
memory_size = 4
}
## リソース
# SLBインスタンスを作成します。
# 参考:https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance
resource "alicloud_slb" "default" {
name = var.name
specification = "slb.s2.small"
vswitch_id = alicloud_vswitch.default.id
}
Managed Service for Prometheusのリソースとデータソースの詳細については、TerraformでManaged Service for Prometheusを使用するを参照してください。
Terraformプラグイン
Terraformは2種類のプラグインを提供します。
Terraform CLI:Terraformのコマンドラインインターフェース。
Terraformプロバイダー:クラウド リソースとTerraformを接続するために使用されます。プロバイダーは、クラウドサービスプロバイダーによって開発および提供されます。Terraformプロバイダーの詳細については、プロバイダーを参照してください。
Terraformプラグインのダウンロード方法の詳細については、Terraformをインストールして構成するとCloud ShellでTerraformを使用するを参照してください。
Alibaba Cloudは、Terraformをサービスと統合しています。Alibaba Cloud Provider(terraform-provider-alicloud)は、163のリソースと113のデータソースを提供し、コンピューティング、ストレージ、ネットワーキング、ロードバランシング、CDN、ミドルウェア、アクセス制御、データベースサービスなど、35のAlibaba Cloudサービスをカバーしています。これは、クラウドデプロイ自動化における多くの大規模顧客の要件を満たしています。
Terraformは、Resource Orchestration Service(ROS)でマネージドサービスとして利用できます。Terraformテンプレートを作成して、Alibaba Cloud、Amazon Web Services(AWS)、またはMicrosoft Azureリソースを定義し、リソースパラメーターを指定し、リソースの依存関係を構成できます。詳細については、Terraformテンプレートを作成するとTerraformスタックを作成するを参照してください。
Terraformの詳細については、Terraformを参照してください。
利点
マルチクラウドインフラストラクチャのデプロイ
Terraformは、同様のインフラストラクチャがAlibaba Cloud、サードパーティクラウド、またはデータセンターにデプロイされるマルチクラウドシナリオでよく使用されるツールです。Terraformを使用すると、開発者は同じツールと同様の構成ファイルを使用して、異なるプロバイダーのクラウド上に構築されたインフラストラクチャリソースを管理できます。
自動化されたインフラストラクチャ管理
Terraformを使用して構成ファイルテンプレートを作成し、予測可能な方法でECSリソースを繰り返し定義、プロビジョニング、構成できます。これにより、デプロイおよび管理操作中の人為的エラーが軽減されます。Terraformでは、テンプレートを複数回デプロイして、同じ開発、テスト、本番環境を作成できます。
Infrastructure as Code
Terraformでは、コードを使用してリソースを管理および保守できます。Terraformは、インフラストラクチャの現在の状態のコピーを保存します。これにより、Infrastructure as Code(IaC)のコンポーネントに加えられた変更を追跡し、インフラストラクチャ構成を他のユーザーと共有できます。
開発コストの削減
Terraformを使用して、要件に基づいて開発環境とデプロイ環境を作成し、コストを削減できます。さらに、システムに変更を加える前に開発コストを評価できます。
TerraformでManaged Service for Prometheusを使用する
Managed Service for Prometheusでは、Terraformを使用して次のリソースとデータソースを管理できます。
表1. リソース
名前 | 説明 |
Prometheusインスタンスを管理します。 | |
Managed Service for Prometheus統合センターのエクスポーターを管理します。 | |
Prometheusインスタンスのリモート書き込み構成を管理します。 | |
Prometheusインスタンスの監視設定(ServiceMonitor、PodMonitor、カスタムジョブ、ヘルス検査エージェントなど)を管理します。 | |
環境インスタンスを管理します。 | |
環境インスタンスのServiceMonitorを管理します。 | |
環境インスタンスのPodMonitorを管理します。 | |
環境インスタンスのカスタムジョブを管理します。 | |
環境インスタンスのプラグインパッケージを管理します。 | |
環境インスタンスの機能(metric-agent、app-agent-pilot、service-check、ebpf-agentなど)を管理します。 |
表2. データソース
名前 | 説明 |
すべてのPrometheusインスタンスを一覧表示します。 | |
Managed Service for Prometheus統合センターのエクスポーターを一覧表示します。 | |
Prometheusインスタンスのリモート書き込み構成を一覧表示します。 |