Alibaba Cloud エッジノードサービス (ENS) は Terraform と統合されています。 Terraform を使用して ENS を迅速に構成できます。このトピックでは、Cloud Shell で Terraform を使用して ENS インスタンスを作成する方法について説明します。
サンプルコードは数クリックで実行できます。このトピックのサンプルコードを数クリックで実行することができます。
前提条件
Alibaba Cloud アカウントは、このアカウントに属するすべてのリソースに対するフル 権限 を持っています。Alibaba Cloud アカウントの資格情報が漏洩した場合、セキュリティリスクが発生する可能性があります。Resource Access Management (RAM) ユーザーを使用し、RAM ユーザーの AccessKey ペアを作成することをお勧めします。詳細については、「RAM ユーザーを作成する」および「AccessKey ペアを作成する」をご参照ください。
次のサンプルコードは、AliyunBSSFullAccess ポリシーをアタッチし、Cloud Firewall に必要な 権限 を RAM ユーザーに付与する方法を示しています。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ens:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "bssapi:*", "bss:*", "efc:*" ], "Resource": "*" } ] }Terraform 環境を準備します。Terraform を使用するには、次のいずれかの方法を使用できます。
Terraform Explorer で Terraform を使用する:Alibaba Cloud は、Terraform のオンラインランタイム環境である Terraform Explorer を提供しています。Terraform をインストールする必要なく、Terraform Explorer にログインした後に Terraform を使用できます。詳細については、「Terraform Explorer で Terraform を使用する」をご参照ください。この方法は、追加費用なしで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。
Cloud Shell で Terraform を使用する:Terraform は Cloud Shell にプリインストールされており、ID 資格情報は構成されています。Cloud Shell で Terraform コマンドを直接実行できます。この方法は、低コストで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。
オンプレミス マシンに Terraform をインストールして構成する:この方法は、ネットワーク 接続 が不安定な場合、またはカスタム開発環境が必要な場合に適しています。
Terraform 0.12.28 以降をインストールする必要があります。 terraform --version コマンドを実行して、Terraform のバージョンをクエリできます。
この例では、特定のリソースに対して料金が発生します。不要になったリソースはサブスクライブ解除してください。
必要なリソース
alicloud_ens_instance:ENS インスタンス。
Terraform を使用して ENS インスタンスを作成する
手順
この例では、ENS インスタンスが作成されます。
作業ディレクトリと、そのディレクトリに
main.tfという名前の構成ファイルを作成します。 main.tf:このファイルは Terraform のメインファイルであり、デプロイするリソースを定義します。variable "region" { default = "cn-hangzhou" } provider "alicloud" { region = var.region } variable "image_id" { default = "win2022_21H2_x64_dtc_zh-cn_40G_alibase_20211116" } variable "instance_type" { default = "ens.sn1.small" } variable "internet_charge_type" { default = "BandwidthByDay" } # ENS インスタンスリソース //日本語コメント resource "alicloud_ens_instance" "instance" { # (オプション、Int、v1.208.0 以降で使用可能) リソース購入期間。設定方法:PeriodUnit を Day に設定する場合は、Period を 3 に設定する必要があります。PeriodUnit を Month に設定する場合は、Period を 1 から 9 または 12 に設定できます。 //日本語コメント period = 1 # データディスク //日本語コメント #data_disk { # データディスクのサイズ。単位:GiB。 //日本語コメント #size = 20 # データディスクのタイプ。有効な値:cloud_efficiency、cloud_ssd、local_hdd、local_ssd。 //日本語コメント #category = "cloud_efficiency" #} # (オプション、Int、v1.208.0 以降で使用可能) パブリック IP アドレスを割り当てるかどうかを指定します。有効な値:true および false。デフォルト値:true。 //日本語コメント public_ip_identification = true # サブスクリプション期間の単位。有効な値:Month および Day。デフォルト値:Month。 //日本語コメント period_unit = "Month" # スケジューリングポリシー。有効な値:Concentrate (ノードレベルのスケジューリング) および Disperse (リージョナルスケジューリング)。 //日本語コメント scheduling_strategy = "Disperse" # スケジューリングレベル。ノードレベルのスケジューリングまたはリージョナルスケジューリングの構成に使用されます。 scheduling_strategy が Concentrate に設定されている場合は、このパラメーターを Region に設定します。 scheduling_strategy が Disperse に設定されている場合の有効な値:Big、Middle、Small。 //日本語コメント schedule_area_level = "Big" # インスタンスのイメージ ID。このパラメーターは、Arm インスタンスでは使用できません。 //日本語コメント image_id = var.image_id # インスタンスの仕様。 //日本語コメント instance_type = var.instance_type # インスタンスのホスト名。 //日本語コメント host_name = "Host80" # インスタンスのパスワード。 //日本語コメント password = "Ens-test@" # インスタンス帯域幅の課金方法。このパラメーターは、ENS インスタンスを初めて購入するときに必要です。指定した値は、後続の購入のデフォルト値として使用されます。有効な値:BandwidthByDay および 95bandwidthbymonth。 //日本語コメント internet_charge_type = var.internet_charge_type # インスタンスの支払い方法。 payment_type は v1.230.0 以降変更可能です。有効な値:Subscription および PayAsYouGo。 //日本語コメント payment_type = "PayAsYouGo" # ISP。このパラメーターは、scheduling_strategy が Disperse に設定されている場合に必要です。有効な値:cmcc、unicom、telecom。 //日本語コメント carrier = "cmcc" # スケジューリング価格ポリシー。デフォルト値:PriceLowPriority。 //日本語コメント scheduling_price_strategy = "PriceLowPriority" # 最大パブリック帯域幅 //日本語コメント internet_max_bandwidth_out = 1 # エッジノードの ID。 ScheduleAreaLevel が Region に設定されている場合は、EnsRegionId が必要です。 ScheduleAreaLevel が Big、Middle、または Small に設定されている場合、EnsRegionId は無効です。 //日本語コメント # ens_region_id = "cn-zhengzhou-telecom" # net_district_code パラメーターを追加します。 //日本語コメント net_district_code = "100102" # 実際の仕様に基づいてこのパラメーターを指定します。 //日本語コメント // システムディスクの仕様。 //日本語コメント system_disk { size = 40 } }次のコマンドを実行して、
Terraformを初期化します。terraform init次の情報が返された場合、Terraform は初期化されています。
Initializing the backend... Initializing provider plugins... - Reusing previous version of hashicorp/alicloud from the dependency lock file - Using previously-installed hashicorp/alicloud v1.231.0 Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.実行計画を作成し、変更をプレビューします。
terraform plan次のコマンドを実行して、ENS インスタンスを作成します。
terraform apply実行中に、プロンプトが表示されたら
yesと入力し、[Enter] キーを押します。コマンドが実行されるまで待ちます。次の情報が返された場合、インスタンスは作成されています。Plan: 1 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes alicloud_ens_instance.instance: Creating... alicloud_ens_instance.instance: Still creating... [10s elapsed] alicloud_ens_instance.instance: Still creating... [20s elapsed] ... alicloud_ens_instance.instance: Still creating... [11m30s elapsed] alicloud_ens_instance.instance: Creation complete after 11m31s [id=i-5495sqdyatehco3teqtls****] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.結果を確認します。
terraform show コマンドを実行する
次のコマンドを実行して、Terraform によって作成されたリソースをクエリします。
terraform show
[ENS コンソール] にログインする
[ENS コンソール] にログインして、作成されたインスタンスを表示します。

リソースの解放
Terraform を使用して作成または管理された上記の リソース が不要になった場合は、次のコマンドを実行して リソース を解放します。 terraform destroy コマンドの詳細については、「共通コマンド」をご参照ください。
terraform destroyサンプルコード
サンプルコードは数クリックで実行できます。このトピックのサンプルコードを実行するには、数回クリックするだけです。
サンプルコード
その他のサンプルコードを表示するには、GitHub にアクセスしてください。