すべてのプロダクト
Search
ドキュメントセンター

Auto Scaling:Terraformを使用したAuto Scalingリソースの作成

最終更新日:Sep 10, 2024

このトピックでは、Terraformを使用して、スケーリンググループ、スケーリング設定、スケーリングルールなどのAuto Scalingリソースを作成する方法について説明します。

前提条件

Terraformを使用する前に、次の要件が満たされていることを確認してください。

背景情報

  • Terraformはオープンソースのコードとしてのインフラストラクチャツールで、クラウドのインフラストラクチャとリソースを安全かつ効率的にプレビュー、設定、管理するために使用できます。 Terraformでは、リソースを作成、削除、クエリ、および変更するためのコードを記述できます。 詳細については、「Terraformの概要」をご参照ください。

  • Terraformには、terraform applyterraform showなどのリソースを管理するコマンド、リソースのステータスを管理するコマンド、その他の一般的なコマンドが用意されています。 詳細については、「リソース管理の一般的なコマンド」をご参照ください。

    • terraform apply: リソースを作成および変更します。 リソースのセキュリティを確保するには、コマンドの実行時に手動で操作する必要があります。 コマンドを続行するかどうかを手動で確認する必要があります。

    • terraform show: すべてのマネージドリソースとそのプロパティ値をTerraform状態で表示します。

手順

次のセクションでは、Terraformを使用してスケーリンググループ、スケーリング設定、およびスケーリングルールを作成する方法について説明します。 Terraformを使用して他のタイプのAuto Scalingリソースを管理する場合は、次の手順を繰り返すことができます。

  1. 仮想プライベートクラウド (VPC) とvSwitchを作成します。

    この例では、cn-hangzhou-bゾーンにVPCとvSwitchが作成されます。

    1. terraform.tfファイルを作成し、次のコードをファイルに追加して、ファイルを現在の作業ディレクトリに保存します。

      次のコードでは、availability_zoneおよびcidr_blockパラメーターの値は参照専用です。 ビジネス要件に基づいてパラメーターを設定できます。 vSwitchが使用可能なゾーンを選択する方法については、「リージョンとゾーン」をご参照ください。 VPCとvSwitchを作成する前に、ネットワークプランを作成する必要があります。 詳細については、「ネットワークの計画」をご参照ください。

      resource "alicloud_vpc" "vpc" {
        name       = "tf_test_vpc"
        cidr_block = "172.16.0.0/12"         // Specify a private CIDR block for the VPC. 
      }
      
      resource "alicloud_vswitch" "vsw" {
        vpc_id            = alicloud_vpc.vpc.id
        cidr_block        = "172.16.0.0/21"  // Specify a private CIDR block for the vSwitch. 
        availability_zone = "cn-hangzhou-b"  // Specify a zone for the vSwitch. 
      }
    2. terraform applyコマンドを実行して、VPCとvSwitchを作成します。

    3. terraform showコマンドを実行して、VPCとvSwitchを表示します。

      VPCコンソールでVPCとvSwitchのプロパティを表示することもできます。

  2. 前の手順で作成したVPCで、セキュリティグループを作成します。 次に、すべてのIPアドレスからのアクセスを許可するセキュリティグループルールを追加します。

    1. terraform.tfファイルに次のコードを追加します。

      resource "alicloud_security_group" "security" {
        name = "tf_test_security"
        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.security.id
        cidr_ip           = "0.0.0.0/0"
      }
    2. terraform applyコマンドを実行してセキュリティグループを作成し、セキュリティグループルールを追加します。

    3. terraform showコマンドを実行して、セキュリティグループとセキュリティグループルールを表示します。

      Elastic Compute Service (ECS) コンソールでセキュリティグループとセキュリティグループルールを表示することもできます。

  3. スケーリンググループを作成します。

    この例では、最大100個のインスタンスを含むことができるスケーリンググループが作成されます。

    1. terraform.tfファイルに次のコードを追加します。

      resource "alicloud_ess_scaling_group" "group" {
           scaling_group_name="tf_test_scalinggroup"
           min_size=0
           max_size=100
           vswitch_ids=[alicloud_vswitch.vsw.id]
      }
    2. terraform applyコマンドを実行して、スケーリンググループを作成します。

    3. terraform showコマンドを実行して、スケーリンググループを表示します。

      Auto scalingコンソールでスケーリンググループを表示することもできます。

  4. スケーリング設定を作成します。

    1. terraform.tfファイルに次のコードを追加します。

      この例では、ECSインスタンスの作成に使用できるスケーリング設定が作成されています。

      resource "alicloud_ess_scaling_configuration" "configuration" {
          scaling_group_id = alicloud_ess_scaling_group.group.id
          instance_type = "ecs.hfc7.xlarge"
          image_id = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
          security_group_id = alicloud_security_group.security.id
          scaling_configuration_name = "tf_test_scalingconfiguration"
          system_disk_category = "cloud_essd"
          spot_strategy = "SpotWithPriceLimit"
          force_delete = true
      }
    2. terraform applyコマンドを実行して、スケーリング設定を作成します。

    3. terraform showコマンドを実行して、スケーリング設定を表示します。

      Auto scalingコンソールでスケーリング設定を表示することもできます。

  5. スケーリングルールを作成します。

    1. terraform.tfファイルに次のコードを追加します。

      resource "alicloud_ess_scaling_rule" "rule" {
           scaling_group_id = alicloud_ess_scaling_group.group.id
           adjustment_type = "QuantityChangeInCapacity"
           adjustment_value = 1
      }
    2. terraform applyコマンドを実行して、スケーリングルールを作成します。

    3. terraform showコマンドを実行して、スケーリングルールを表示します。

      Auto scalingコンソールでスケーリングルールを表示することもできます。

次のサンプルコードは、Terraformを使用してスケーリンググループ、スケーリング設定、およびスケーリングルールを作成する方法の例を示しています。

resource "alicloud_vpc" "vpc" {
  name       = "tf_test_vpc"
  cidr_block = "172.16.0.0/12"
}

resource "alicloud_vswitch" "vsw" {
  vpc_id            = alicloud_vpc.vpc.id
  cidr_block        = "172.16.0.0/21"
  availability_zone = "cn-hangzhou-b"
}
resource "alicloud_security_group" "security" {
  name = "tf_test_security"
  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.security.id
  cidr_ip           = "0.0.0.0/0"
}

resource "alicloud_ess_scaling_group" "group" {
     scaling_group_name="tf_test_scalinggroup"
     min_size=0
     max_size=100
     vswitch_ids=[alicloud_vswitch.vsw.id]
}

resource "alicloud_ess_scaling_configuration" "configuration" {
    scaling_group_id = alicloud_ess_scaling_group.group.id
    instance_type = "ecs.hfc7.xlarge"
    image_id = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
    security_group_id = alicloud_security_group.security.id
    scaling_configuration_name = "tf_test_scalingconfiguration"
    system_disk_category = "cloud_essd"
    spot_strategy = "SpotWithPriceLimit"
    force_delete = true
}
resource "alicloud_ess_scaling_rule" "rule" {
     scaling_group_id = alicloud_ess_scaling_group.group.id
     adjustment_type = "QuantityChangeInCapacity"
     adjustment_value = 1
}