Infrastructure as Code (IaC) の基本を理解したところで、このトピックでは Terraform とは何かを説明します。
Terraform とは
Terraform は、HashiCorp が提供するオープンソースの IaC ツールです。宣言的な設定ファイルを使用して Alibaba Cloud リソースを定義できます。
Terraform は、仮想マシン、コンテナ、ストレージ、ネットワークなどの基盤コンポーネントを管理します。また、セキュリティグループルール、DNS エントリ、アクセスポリシーなどの設定コンポーネントも管理します。さらに、特定の Software as a Service (SaaS) 機能も管理できます。
Terraform は、HashiCorp Configuration Language (HCL) と呼ばれるシンプルで可読性の高い言語を使用して、Infrastructure as Code (IaC) を定義します。Terraform は設定ファイルを読み取り、実行計画を作成します。その後、この計画をプレビューして確認し、実行することで、インフラストラクチャを作成および管理できます。
Alibaba Cloud は、Alibaba Cloud リソース用の Terraform プロバイダーを提供しています。このプロバイダーを使用して Alibaba Cloud リソースを定義し、それらのリソースを自動的に作成できます。
Terraform の機能
Terraform の機能は次のとおりです。
マルチクラウドおよびマルチ API のサポート:Alibaba Cloud に加えて、Terraform は主要なクラウドサービスプロバイダーをすべてサポートします。また、GitHub や Kubernetes など、API を介して他のサービスもサポートします。
オープンコアアーキテクチャ:セルフホストからフルマネージドまで 3 つのバージョンを提供し、エンタープライズレベルのサポートも利用できます。
大規模なコミュニティ:大規模なコミュニティとオープンレジストリがあります。このレジストリは、Alibaba Cloud 用を含むすべてのプロバイダーとモジュールのオンライン登録と管理をサポートします。
インフラストラクチャの構成:サービスの起動、依存関係のインストール、アプリケーションのインストール、更新の実行など、インフラストラクチャ システム自体の構成を管理するのではなく、インフラストラクチャ リソースのライフサイクル (作成、変更、削除、表示) を管理することを指します。
Alibaba Cloud 上の Terraform では、次の機能を利用できます。
リソースの構成:Terraform を使用し、リソースブロックで仮想マシン、ネットワーク、ストレージ、ファイアウォールなどの Alibaba Cloud リソースを定義および構成できます。
リソース依存関係の作成:リソース間に明示的な依存関係を作成して、正しい順序で作成されるようにできます。
標準化されたモジュール:再利用可能なモジュールを作成することで、リソース作成を標準化できます。Alibaba Cloud も、直接参照できる標準モジュールを提供しています。
IaC ワークフロー
標準的な IaC ワークフローの手順は、次のとおりです。

スコープ設定
Terraform ワークフローを開始する前に、プロジェクトまたはアプリケーションに必要なリソースを決定します。たとえば、一般的な 2 層アーキテクチャには、Web サーバープールとデータベースが必要です。スコープ設定フェーズでは、必要な Alibaba Cloud リソースを特定し、それらがどのように接続されるかを計画します。
作成
Terraform ワークフローは作成から始まります。目的のインフラストラクチャのコードを記述し、
main.tf、variables.tf、tfvarsなどの異なる設定ファイルに整理します。初期化
初期化フェーズでは、コードに必要なプラグインまたはモジュールが自動的にインストールされます。
terraform initコマンドを実行すると、Terraform の作業ディレクトリが初期化され、Alibaba Cloud Terraform プロバイダーがインストールされます。プレビュー
計画フェーズでは、
terraform planコマンドを実行します。このコマンドは、設定に基づいてリソースを作成、変更、または破棄するための実行計画を作成します。Alibaba Cloud インフラストラクチャに適用する前に計画を確認し、想定どおりであることを確認できます。適用
実行計画を確認した後、
terraform applyコマンドを実行します。このコマンドは、インフラストラクチャを作成、変更、または破棄し、対応する State ファイルを作成するか、既存の State ファイルを更新します。
これらのチュートリアルを進める中で、Terraform ワークフローについてより詳しく見ていきます。
シナリオ
このセクションでは、Terraform を使用する一般的なシナリオをいくつか紹介します。

インフラストラクチャの管理
Terraform は、イミュータブルなアプローチでインフラストラクチャを管理します。このアプローチは、サービスやインフラストラクチャのアップグレードや変更の複雑さを軽減します。
変更の追跡
Terraform はインフラストラクチャの変更を追跡し、プレビューまたは適用を行う前に確認を求めます。Terraform がインフラストラクチャを作成すると、State ファイルが自動的に生成されます。このファイルはインフラストラクチャの現在の状態を反映し、設定テンプレートで変更される Alibaba Cloud リソースの数と種類を示します。
変更の自動化
Terraform の設定ファイルは宣言的であるため、Terraform は変更を自動化します。インフラストラクチャを構築するための詳細な手順を記述する必要はありません。代わりに最終状態を定義すれば、Terraform が依存関係を自動的に管理し、リソースをプロビジョニングします。
標準化された設定テンプレート
カスタムモジュールまたは Terraform レジストリのパブリックモジュールを使用して設定を標準化することで、効率を高め、ベストプラクティスに従うことができます。Terraform はポリシーの自動適用もサポートしており、チームが構成および使用できるリソースタイプを制限できます。