Terraform は、オープンソースのコードとしてのインフラストラクチャ (IaC) ツールであり、宣言型の構成ファイルを用いて Alibaba Cloud リソースのフルライフサイクルを管理できます。本トピックでは、視覚的インターフェイスまたはコマンドラインのいずれかを活用して、初めての Alibaba Cloud リソースを作成するまでの Terraform のクイックスタート方法について説明します。
実行方法の選択
Terraform では、視覚的およびコマンドラインの 2 種類の実行方法が提供されています。ご要件に合った方法をお選びください。
実行方法 | シナリオ | メリット | 制限事項 |
初めて利用する場合、パラメーターに不慣れな場合、迅速なデバッグが必要な場合 | グラフィカルなフォームを使用してリソースを構成できます。コーディングは不要です。 | 単一リソース操作のみをサポートします。 | |
迅速な評価、本番環境、複雑なオーケストレーションが必要な場合 | マルチリソースオーケストレーションおよびステート管理をサポートします。 | CLI 環境が必要です。 |
CLI 方法を選択する場合は、Cloud Shell または ローカルインストール のいずれかを使用して環境を準備してください。
Terraform Explorer の使用
Terraform Explorer は、Alibaba Cloud が提供する Terraform 搭載のオンラインデバッグツールです。フォームから Terraform 構成ファイルを自動生成し、オンラインで実行します。詳細については、「Explorer の概要」をご参照ください。
本セクションでは、仮想プライベートクラウド (VPC) の作成を例として、Terraform Explorer の 2 つの利用方法(カスタムパラメーターによる作成およびサンプルテンプレートによる作成)について説明します。
カスタムパラメーターによるリソースの作成
ご要件に応じてパラメーターを設定するには、以下の手順を実行します:
Terraform Explorer にログインします。プロダクト および リソースタイプ を選択します。リソースドキュメント を参照しながらパラメーターを入力し、デバッグ開始 をクリックします。
VPC 作成の主なパラメーターを以下に示します。その他のパラメーターの詳細については、「alicloud_vpc」をご参照ください。
パラメーター名
説明
例
vpc_name
VPC 名
tf-test-vpc
cidr_block
VPC のプライベート CIDR ブロック
192.168.0.0/16
description
VPC の説明
Terraform を使用して作成された VPC です。

テンプレートの詳細 タブで、パラメーターが正しく設定されていることを確認します。プレビュー をクリックして実行計画を表示します。

プレビューの詳細 タブで、作成されるリソースを確認します。実行 をクリックします。

実行の詳細 タブで結果を確認します。正常終了時は「
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.」と表示されます。失敗した場合は、パラメーターを調整して再度デバッグを行ってください。
リソースの詳細 タブで、作成されたリソースの情報を表示します。

(任意)リソースの変更:パラメーターを調整し、プレビューと実行 をクリックします。手順 2~4 を繰り返します。正常に更新された場合は、「
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.」と表示されます。
(任意)リソースのリリース:実行の詳細 タブで リソースの破棄 をクリックします。その後、プレビューの詳細 タブで 実行 をクリックします。

サンプルテンプレートによるリソースの作成
リソースのパラメーターに不慣れな場合や、すぐに始めたい場合は、Terraform Explorer のサンプルテンプレートをご利用ください。
Terraform Explorer にログインします。プロダクト、リソースタイプ、および サンプルテンプレート を選択し、デバッグ開始 をクリックします。右側の サンプルテンプレート タブでテンプレートの詳細を表示します。

テンプレートの詳細 タブで、プレビューと実行 をクリックします。

実行の詳細 タブで実行結果を確認します。

(任意)作成したリソースをリリースするには、実行の詳細 タブで リソースの破棄 をクリックします。その後、プレビューの詳細 タブで 実行 をクリックします。

デバッグの継続 や リソースの破棄 などの操作は、呼び出し履歴 からも実行できます。
Terraform CLI の使用
コマンドラインから Terraform を使用するには、CLI 環境を準備し、構成ファイルを作成してコマンドを実行することでリソースを作成します。以下のいずれかの方法で Terraform CLI 環境をセットアップしてください:
Cloud Shell(推奨):インストール不要。迅速な評価および学習に最適です。
ローカルインストール:本番環境、継続的インテグレーション、長期運用に最適です。
Cloud Shell
Alibaba Cloud Cloud Shell は無料の運用・保守ツールであり、Terraform がプリインストール済みで、認証情報も事前に設定されています。Terraform コマンドを直接実行できます。
Cloud Shell へのログイン
ブラウザを開き、Cloud Shell にアクセスします。詳細については、「Cloud Shell の使用」をご参照ください。
RAM ユーザーとしてログインしてください。Alibaba Cloud アカウントのセキュリティを確保するため、必要でない限り、Alibaba Cloud アカウントを使用してクラウドリソースにアクセスしないでください。
Terraform のバージョン切り替え
Cloud Shell のデフォルト Terraform バージョンは古くなっている可能性があります。すべての機能が正しく動作するよう、バージョン 1.2 以降に切り替えてください。
現在の Terraform バージョンを確認します:
terraform version
Cloud Shell で利用可能な Terraform バージョンを一覧表示します:
tfenv list
特定のバージョン(例:1.9.5)に切り替えます:
tfenv use 1.9.5
ローカルインストール
本番環境および複雑なオーケストレーションに最適です。まず Terraform をインストールし、認証情報を設定してください。
パッケージマネージャーによるインストール(推奨)
macOS
Homebrew を使用してインストールします:
# HashiCorp の tap を追加して、Homebrew におけるパッケージの場所を定義
brew tap hashicorp/tap
# Terraform をインストール
brew install hashicorp/tap/terraform最新バージョンへ更新します:
# Homebrew を更新
brew update
# Terraform をアップグレード
brew upgrade hashicorp/tap/terraformWindows
Chocolatey を使用してインストールします:
choco install terraformLinux
たとえば、yum パッケージマネージャーを使用する場合:
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform手動インストール
パッケージマネージャーが利用できない場合は、手動でインストールしてください。
プリコンパイル済みバイナリの使用
Terraform ウェブサイト から、ご利用のオペレーティングシステムに対応する ZIP ファイルをダウンロードし、アーカイブを展開します。
terraformバイナリファイルを、システムのPATHに含まれるディレクトリに移動します:macOS または Linux
mv ~/Downloads/terraform /usr/local/bin/Windows
コントロールパネル → システム → システムの設定 → 環境変数を開きます。
システム変数で PATH を見つけ、[編集] をクリックします。
Terraform ディレクトリへのパスを追加します。他のエントリとはセミコロンで区切ります(例:
c:\path;c:\path2)。変更を有効にするには、新しいコマンドラインウィンドウを開きます。
ソースからのコンパイル
まず、Go 開発環境 をインストールする必要があります。
Terraform のソースリポジトリをクローンします:
git clone https://github.com/hashicorp/terraform.gitディレクトリに移動し、ソフトウェアをコンパイルしてインストールします。
cd terraform go installコンパイル後、バイナリは
$GOPATH/bin/ディレクトリに配置されます。$GOPATH/binをシステムの PATH に追加してください。手順は、「プリコンパイル済みバイナリの使用」の手順 2 と同じです。
インストールの確認
以下のコマンドを実行して、Terraform が正しくインストールされたことを確認します:
terraform versionコマンドが正常に実行され、バージョン番号が表示された場合、インストールは完了しています。
例:ECS インスタンスの作成
この例では、ECS インスタンスの作成を通じて、Terraform の完全なオーケストレーションワークフロー(VPC の作成 → vSwitch の作成 → セキュリティグループの作成 → ECS インスタンスの作成)を紹介します。
作業ディレクトリを作成し、Terraform 構成ファイル
main.tfを作成します:mkdir tf-demo && cd tf-demo vim main.tf以下のコードを
main.tfにコピーします:provider "alicloud" { region = var.region } # リソース作成のリージョン variable "region" { default = "cn-beijing" } # ECS インスタンス名 variable "instance_name" { default = "tf-cloudshell-test" } # ECS インスタンスタイプ variable "instance_type" { default = "ecs.n2.small" } # 外向きパブリック帯域幅(値 0 はパブリックネットワークへのアクセス不可を意味します) variable "internet_bandwidth" { default = 10 } # ECS OS イメージ variable "image_id" { default = "ubuntu_18_04_64_20G_alibase_20190624.vhd" } # ECS システムディスクタイプ variable "disk_category" { default = "cloud_efficiency" } # ECS インスタンスのログインパスワード variable "password" { default = "TF-test@1234" } # VPC の作成 resource "alicloud_vpc" "vpc" { vpc_name = "tf_test_foo" cidr_block = "172.16.0.0/12" } # インスタンスタイプおよびディスクカテゴリに基づいて利用可能なゾーンを照会 data "alicloud_zones" "default" { available_disk_category = var.disk_category available_resource_creation = "VSwitch" available_instance_type = var.instance_type } # vSwitch の作成 resource "alicloud_vswitch" "vsw" { vpc_id = alicloud_vpc.vpc.id cidr_block = "172.16.0.0/21" zone_id = data.alicloud_zones.default.zones.0.id } # セキュリティグループの作成 resource "alicloud_security_group" "default" { security_group_name = "default" vpc_id = alicloud_vpc.vpc.id } # セキュリティグループへのインバウンドルールの作成 resource "alicloud_security_group_rule" "allow_all_tcp" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "1/65535" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" } resource "alicloud_instance" "instance" { # セキュリティグループのアタッチ security_groups = alicloud_security_group.default.*.id instance_type = var.instance_type system_disk_category = var.disk_category image_id = var.image_id instance_name = var.instance_name # vSwitch vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = var.internet_bandwidth password = var.password }重要この例のセキュリティグループルールでは、すべての TCP ポート(1~65535)が開放され、任意の IP アドレス(0.0.0.0/0)からのトラフィックが許可されています。これはテスト環境でのみ使用してください。本番環境では、必要なポートおよび送信元 IP アドレスを適切に制限してください。
Terraform 作業ディレクトリを初期化します:
terraform initどのリソースが作成されるかを確認するため、実行計画をプレビューします:
terraform plan
リソースを作成します。「
Apply complete!」という出力が表示された場合、成功です:terraform apply
これらのリソースをリリースするには、以下のコマンドを実行します:
terraform destroy