Alibaba Cloud は、クラウドインフラストラクチャを管理するためのコードとしてのインフラストラクチャ (IaC) ツールとして Terraform を推奨しています。開始する前に、Terraform とは何か、その機能、および Alibaba Cloud との連携方法について学習してください。
Terraform とは?
Terraform は、HashiCorp が開発したオープンソースの宣言型 IaC ツールです。「宣言型」とは、構成ファイルでリソースの望ましい状態を記述することを意味します。たとえば、「中国東部 1 リージョンに 2 vCPU と 4 GiB のメモリを持つ ECS インスタンス」のように記述します。Terraform は、API 呼び出し、依存関係、および実行順序を自動的に処理します。
これは、コンソールベースの操作とは根本的に異なります。
コンソール操作 | Terraform | |
操作方法 | インターフェイスでパラメーターを段階的にクリックして入力します | 構成ファイルでリソースの望ましい状態を記述します |
実行プロセス | リソースを手動で1つずつ作成し、依存関係も手動で処理します | 依存関係を自動的に解決し、リソースを作成します |
環境レプリケーション | 手動の手順を繰り返す — 一貫性の確保が困難です | 同じ構成ファイルを使用して複数の環境をデプロイします |
変更追跡 | 操作監査ログに依存します | 構成ファイルをバージョン管理 (Git など) に保存します。変更は追跡可能で元に戻せます。 |
チームコラボレーション | ドキュメントと口頭での合意に依存します | 構成ファイルはレビュー可能、共有可能、再利用可能です |
Terraform は、インフラストラクチャ管理を「手動操作」から「コードの記述と保守」へと移行させます。多数のリソース、複数の環境を管理する場合、またはチーム間で連携する場合に最適です。一時的な小規模なリソース作成には、コンソール操作の方が直接的である場合があります。
Terraform と Alibaba Cloud
Terraform は、プロバイダープラグインを通じてクラウドプラットフォームと連携します。各クラウドプロバイダーは独自のプロバイダーを提供しており、構成ファイル内のリソース定義をそのプラットフォームの API 呼び出しに変換します。
Alibaba Cloud は、中国で初めて Terraform と統合したクラウドプロバイダーです。公式にメンテナンスされている Terraform プロバイダー (alicloud) は、以下を含むがこれらに限定されない、ほとんどの Alibaba Cloud リソースタイプをサポートしています。
コンピューティングとコンテナー: Elastic Compute Service (ECS)、ACK、Function Compute、Auto Scaling
ネットワーク: Virtual Private Cloud (VPC)、Server Load Balancer (SLB)、Application Load Balancer (ALB)、Network Load Balancer (NLB)、NAT Gateway、Cloud Enterprise Network (CEN)
ストレージとデータベース: Object Storage Service (OSS)、NAS、ApsaraDB RDS (RDS)、PolarDB、Redis、ApsaraDB for MongoDB
セキュリティと管理: Resource Access Management (RAM)、Key Management Service、Web Application Firewall
ビッグデータと AI: MaxCompute、PAI
Terraform によるリソース管理
Terraform のコアロジックは、望ましい状態と実際の状態を比較し、必要な操作を自動的に計算します。
全体プロセスには 3 つのステップがあります。
記述: クラウドリソースとそのプロパティを構成ファイルで記述します。たとえば、ECS インスタンスタイプ、イメージ、VPC などです。
プレビュー: Terraform は、構成ファイルと実際のリソース状態を比較します。作成、変更、または削除するリソースをリストした変更計画を生成します。実際の変更が発生する前に、この計画を確認してください。
実行: 計画を確認した後、Terraform は Alibaba Cloud OpenAPI を使用してすべての操作を実行し、最新のリソース状態を記録します。
構成ファイルを更新して Terraform を再実行するたびに、差分のみが処理されます。新しいリソースを作成し、変更されたプロパティを更新し、削除されたリソースを破棄します。変更されていないリソースはそのまま残ります。
Terraform を使用する利点
実行前のプレビュー: 実行するたびに、Terraform は作成、変更、または削除するリソースをリストした変更計画を生成し、意図しない変更を防ぎます。
増分更新: Terraform は、行った変更のみを適用します。変更されていないリソースを再構築することはありません。
統合されたマルチクラウド管理: Terraform は、複数のクラウドプラットフォーム用のプロバイダーをサポートしています。Alibaba Cloud、AWS、およびその他のリソースを同じワークフローで管理できます。
モジュール化された再利用: VPC、サブネット、セキュリティグループなどの一般的なリソースの組み合わせをモジュールとしてパッケージ化します。これらをプロジェクトや環境間で再利用できます。
継続的な状態追跡: Terraform は、各リソースを実際のクラウド上の対応物とマッピングする状態ファイルを維持します。これにより、一貫した管理が保証されます。
よくある質問
Terraform は無料ですか?
はい。Terraform のオープンソース版は無料です。Terraform で作成されたクラウドリソースには、コンソールで作成されたリソースと同じく、Alibaba Cloud の標準の課金ルールが適用されます。
Terraform を使用するためにプログラミング経験は必要ですか?
いいえ。Terraform は、シンプルで宣言型の構成言語である HashiCorp Configuration Language (HCL) を使用します。従来のコードを記述するのではなく、リソースのプロパティを記述します。ノーコードオプションをご希望の場合は、グラフィカルインターフェイスを通じて構成を生成および実行するために Explorer を使用してください。
Terraform の操作は既存のクラウドリソースにどのように影響しますか?
Terraform は、構成ファイルで定義されたリソースのみを管理します。含まれていない既存のリソースには影響しません。注: Terraform の作成、変更、削除操作は、稼働中のクラウドリソースに直接作用します。実行する前に必ず変更計画を確認してください。
コンソールで作成された既存のリソースを Terraform にインポートできますか?
はい。既存のリソースを Terraform 管理下に置くには、import コマンドを使用します。インポート後、それらのリソースを記述する一致する構成ファイルを記述します。その後、Terraform で統一的に管理します。
Terraform で管理されているリソースをコンソールで引き続き管理できますか?
可能です — しかし、推奨されません。Terraform は状態ファイルでリソースの状態を追跡します。コンソールでの手動変更は、状態ファイルと実際の状態との間に不一致を引き起こします。次回の実行時に、Terraform は手動での変更を上書きしたり、競合を引き起こしたりする可能性があります。Terraform で制御されているリソースは、Terraform を介してのみ管理してください。
Terraform は ROS とどう異なりますか?
どちらも宣言型 IaC ツールです。Terraform は、マルチクラウド管理をサポートするオープンソースのサードパーティツールです。ROS (Resource Orchestration Service) は、Alibaba Cloud Management Console と密接に統合されたネイティブな Alibaba Cloud サービスです。マルチクラウドサポートが必要な場合、またはすでに他の場所で Terraform を使用している場合は Terraform を選択してください。主に Alibaba Cloud リソースを管理し、ネイティブツールを好む場合は ROS を選択してください。詳細については、「Resource Orchestration Service とは?」をご参照ください。