Terraform は、自動リソースオーケストレーションのためのオープンソースツールです。Terraform は、Resource Orchestration Service (ROS) のマネージドサービスとしても利用可能です。Terraform テンプレートおよび Terraform スタックを作成することで、Alibaba Cloud、Amazon Web Services (AWS)、Microsoft Azure のリソースを一元的にオーケストレーションできます。Terraform の機能は ROS API と互換性があります。Terraform テンプレートを作成した後は、ROS API オペレーションを呼び出して機能を実装できます。
使用制限
Terraform は ROS の特定の機能およびリソースにのみ対応しています。詳細については、「ROS でサポートされる Terraform の機能とリソース」をご参照ください。
開発方法
ご自身に慣れた開発方法を使用して Terraform コードを記述およびテストすることを推奨します。以下の開発方法がサポートされています。
オンプレミス環境を使用します。
Terraform オンラインデバッグツールを使用します。この方法は Alibaba Cloud リソースにのみ適用できます。
推奨:ROS コンソールで Terraform スタックを作成し、ビジネス要件に応じてスタックの作成を継続するか、スタックを更新します。詳細については、「Terraform スタックの作成」、「スタック作成の継続」、および「スタックの更新」をご参照ください。
ROS で Terraform を使用するメリット
Terraform CLI と比較して、ROS は Terraform コードの管理機能を拡張し、ユーザーエクスペリエンスを向上させます。ROS には以下のメリットがあります。
-
統一されたコンソール体験
ROS コンソールでは、ネイティブな ROS テンプレートを管理する場合と同様のユーザーエクスペリエンスを提供し、すべてのリソースを一元的なプラットフォームで管理できます。
ROS コンソールの スタックの作成 ページで、スタック名 を入力し、中国 (杭州) などの リージョン を選択した後、テンプレート構成セクションに Terraform テンプレートをロードします。
コンソールは、Terraform テンプレート内の変数を自動的にビジュアルフォームに変換します。VPC 構成、vSwitch、インスタンスタイプ、セキュリティグループ などのリソースパラメーターを設定でき、ドロップダウンオプションおよびデフォルト値が提供されます。
$ terraform plan Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create # alicloud_vpc.default will be created + resource "alicloud_vpc" "default" { + cidr_block = "10.0.0.0/8" + vpc_name = (known after apply) } Plan: 6 to add, 0 to change, 0 to destroy.$ terraform apply alicloud_vpc.default: Creating... alicloud_vpc.default: Creation complete after 6s [id=vpc-bp1...] alicloud_vswitch.default[0]: Creating... alicloud_vswitch.default[0]: Creation complete after 5s [id=vsw-bp1...] Apply complete! Resources: 6 added, 0 changed, 0 destroyed. -
パラメーターおよびプロパティの動的クエリと選択
ROS は、パラメーターの有効値を動的にクエリできます。
ROS は包括的なクエリをサポートしており、複数のプロパティで同一のパラメーターを参照できます。
ROS は GUI 上でパラメーターを表示し、オプション値に基づいてパラメーター構成を選択できます。詳細については、「AssociationProperty および AssociationPropertyMetadata」をご参照ください。
たとえば、パラメーターを構成する際、Virtual Private Cloud (VPC) や セキュリティグループ などのフィールドには、現在のリージョンで利用可能なリソースのドロップダウンリストが自動的に表示されます。このリストは、事前に選択されたパラメーターに基づいて動的にフィルターされます。
テンプレートのパラメーターセクションでは、
AssociationPropertyを指定して指定リージョン内のリソースをクエリし、AssociationPropertyMetadataを指定してパラメーターにフィルター条件を追加できます。これにより、ROS コンソール上でオプション値に基づいてパラメーター構成を選択できます。設定後、各パラメーターフィールドのドロップダウンリストから既存のリソースを直接選択でき、リソース ID を手動で入力する必要がなくなります。
-
テンプレートリソースの料金照会
リソースをデプロイする前に、ROS は Terraform テンプレートに基づいて見積料金を自動計算・表示し、予算計画を支援します。
ROS は 料金詳細 ダイアログボックスを表示し、リソースタイプ(ECS インスタンスや RDS データベースインスタンスなど)、仕様、リージョン、数量、課金方法 ごとの見積コストを一覧表示します。上部には合計の 前払い月額料金 が表示されます。
-
サービスの有効化およびロールチェック
-
自動チェック:ROS は、Terraform テンプレートで参照されているサービスが有効化されているか、必要なロールおよび権限が存在するかを自動的にチェックします。これにより、デプロイ前にすべての前提条件が満たされていることを保証します。たとえば、Transit Router のようなサービスが有効化されていない場合、依存関係チェック ダイアログボックスが表示され、問題の件数と 有効化リンク が提供されます。リンクをクリックすると、該当サービスの有効化ページに移動できます。
-
ヒントとガイダンス:必要なサービスが有効化されていない、またはロールが不足している場合、ROS はヒントおよびガイダンスを提供し、必要な設定を迅速に完了できるように支援します。
有効化リンクをクリックすると、Transit Router などのサービスの有効化ページにリダイレクトされます。サービス契約 に同意することで、サービスを有効化できます。
-
-
リスク検出
ROS は潜在的なリスクを自動検出し、エラーを防止するのに役立ちます。たとえば、セキュリティグループを削除する際にリスクを検出します。
スタックを削除する際、システムは上部にリスク警告を表示した スタックの削除 ダイアログボックスを表示します。リスクアラート セクションには、ECS インスタンスから参照されているセキュリティグループなど、依存関係を持つリソースが一覧表示されます。削除を実行するには、削除方法(リソースを保持するかリリースするか)を選択し、スタック名 を確認する必要があります。
-
テンプレートのバージョン管理と共有
ROS は Terraform テンプレートのバージョン管理をサポートしています。テンプレートの詳細(テンプレート ID、共有ステータス、作成および更新時刻など)を確認できます。また、テンプレートバージョン セレクターを使用して異なるバージョン間を切り替えたり、オンラインで テンプレートコンテンツ(main.tf ファイル内の HCL コードなど)を確認したりできます。テンプレートの共有 ボタンをクリックして他のユーザーとテンプレートを共有したり、スタックの作成 をクリックして直接デプロイしたりすることも可能です。
タグおよびリソースグループの伝搬
テンプレート内のすべてのリソースに対して、一度にタグおよびリソースグループを伝搬できます。
シナリオ
Terraform スタックの作成
AWS や Microsoft Azure などのクラウドプラットフォーム、またはオンプレミスプラットフォーム間でリソースを作成・管理したい場合は、Terraform スタックを作成して、これらのプラットフォーム上のリソースを一元的にオーケストレーションおよび管理できます。詳細については、「Terraform スタックの作成」をご参照ください。
Terraform テンプレートの作成
Alibaba Cloud 上で AWS や Microsoft Azure などのサードパーティクラウドプラットフォームのリソースを作成・管理したい場合は、Terraform テンプレート内でサードパーティリソースを定義し、リソース間の依存関係を構成できます。これにより、複数のクラウドプラットフォームにわたるリソースを便利に管理できます。詳細については、「Terraform テンプレートの作成」をご参照ください。
テンプレート構造
Terraform が ROS でマネージドされた後、ROS で Terraform テンプレートがサポートされます。Terraform テンプレートを使用して、Alibaba Cloud、AWS、Microsoft Azure のリソースをオーケストレーションできます。Terraform テンプレート内では、リソースおよびパラメーターを定義し、リソース間の依存関係を構成できます。詳細については、「Terraform テンプレートの構造」をご参照ください。Terraform テンプレートでのパラメーター定義方法の詳細については、「Alibaba Cloud Terraform とは」をご参照ください。
開発に関する推奨事項
ROS でマネージドされた Terraform の関連概念を理解した後は、以下の推奨事項に基づいて Terraform コードを開発し、ROS で使用できます。詳細については、「Terraform コード開発の方法と推奨事項」をご参照ください。
変数定義を精緻化します。
プロバイダーバージョンを明示的に指定します。
擬似パラメーターを使用してスタック情報を取得します。
コンソールにおけるパラメーターおよび変数の入力モードを制御します。
Aliyun::Terraform-v1.0 以降を使用します。
Metadata を使用してコンソールにおけるパラメーターおよび変数の表示を制御します。
オンプレミスコードは、ファイル名の末尾が .debug.tf となるファイルに保存します。
.tf ファイル内で Alibaba Cloud プロバイダー (alicloud) を宣言しないでください。
変数値の受け渡しには .tfvars ファイルではなく ROS パラメーターを使用します。
Terraform サンプルテンプレート
詳細については、「Terraform サンプルテンプレート」をご参照ください。