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

Elastic Compute Service:Terraformを使用したECSのデプロイ

最終更新日:Nov 04, 2024

Terraformは、開発者が宣言型言語を使用してインフラストラクチャ構成を定義および管理するために使用できるオープンソースのコードとしてのインフラストラクチャ (IaC) ツールです。 Terraformは、Elastic Compute Service (ECS) リソースを簡単に作成、変更、または削除する方法を提供します。 Terraformは、手動操作の複雑さとエラーを軽減し、インフラストラクチャの管理性と保守性を向上させます。 このトピックでは、Terraformをインストールおよび設定し、Terraformを使用してECSインスタンスを作成する方法について説明します。

詳細については、「」をご参照ください。Terraformとは何ですか?

サポートされているリソース

説明
  • リソース: インフラストラクチャコンポーネントを定義するために使用される、ECSインスタンス、仮想マシン (VM) 、セキュリティグループなどの新しいリソース。

  • データソース: 既存のインフラストラクチャコンポーネントに関する情報を照会および取得できるソース。 Terraform設定で情報を指定して、リソースを参照または設定できます。

Terraformをインストールし、Terraformの権限を設定する

Terraformをオンプレミスにインストールおよび設定する

Terraformをオンプレミスで使用するには、Terraformをインストールして事前設定する必要があります。 詳細については、「ローカルPCでのTerraformのインストールと設定」をご参照ください。

  • 権限管理の柔軟性とセキュリティを高めるために、RAMユーザーの作成と権限付与を推奨します。
    1. RAM コンソールにログインします。
    2. Terraformという名前のRAMユーザーを作成し、そのユーザーのAccessKeyペアを作成します。 RAM ユーザーの作成
    3. RAM ユーザーを承認します。 詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
  • 認証用のID情報を保存する環境変数を追加します。

    AccessKeyペアページに移動し、AccessKeyペアを作成して表示します。

    環境変数により、Terraformテンプレートの実行時にID情報を取得して認証できるようになります。 これにより、通話失敗のリスクが排除されます。

TerraformのインストールとTerraformのアクセス許可の設定を必要とせずにCloud Shellを使用する

Terraformをインストールしない場合は、Cloud Shellを使用します。

Alibaba CloudのCloud Shellは、Terraformに付属する無料のO&Mサービスで、認証資格情報が設定されています。 Cloud ShellでTerraformコマンドを実行できます。 詳細については、「Cloud ShellでのTerraformの使用」をご参照ください。

重要

Cloud ShellでTerraformを使用すると、Cloud Shellの破壊機能によりデータが失われます。 デバッグ操作など、Cloud Shellで簡単かつ迅速なTerraform操作を実行することを推奨します。 詳細については、「制限事項」をご参照ください。

Terraformを使用したECSリソースの作成と管理

このセクションでは、Terraformを使用してECSインスタンスを作成する方法について説明します。

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

    1. terraform.tfファイルを作成し、次の内容を入力して、現在の作業ディレクトリに保存します。

      resource "alicloud_vpc" "vpc" {
        vpc_name   = "tf_test_foo"
        cidr_block = "172.16.0.0/12"
      }
      
      resource "alicloud_vswitch" "vsw" {
        vpc_id     = alicloud_vpc.vpc.id
        cidr_block = "172.16.0.0/21"
        zone_id    = "cn-beijing-f"
      }
    2. terraform initコマンドを実行してTerraformを初期化し、必要なプラグインをダウンロードします。

    3. terraform applyコマンドを実行して、VPCとvSwitchを作成します。

    4. terraform showコマンドを実行して、作成されたVPCとvSwitchを表示します。

      VPCコンソールにログインして、VPCとvSwitchの属性を表示することもできます。

  2. 前の手順で作成したVPCにセキュリティグループを作成し、192.168.0.0/16 CIDRブロックがセキュリティグループ内のECSインスタンスにアクセスできるようにするインバウンドセキュリティグループルールを追加します。

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

      resource "alicloud_security_group" "default" {
        name   = "default"
        vpc_id = alicloud_vpc.vpc.id
      }
      
      resource "alicloud_security_group_rule" "allow_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           = "192.168.0.0/16"
      }
    2. terraform applyコマンドを実行してセキュリティグループを作成し、セキュリティグループルールを追加します。

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

      ECSコンソールにログインして、セキュリティグループとセキュリティグループルールを表示することもできます。

  3. ECSインスタンスを作成します。

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

      resource "alicloud_instance" "instance" {
        # cn-beijing
        availability_zone = "cn-beijing-f"
        security_groups   = alicloud_security_group.default.*.id
        # series III
        instance_type              = "ecs.e-c1m1.large"
        system_disk_category       = "cloud_essd"
        image_id                   = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
        instance_name              = "test_foo"
        vswitch_id                 = alicloud_vswitch.vsw.id
        internet_max_bandwidth_out = 10
        password                   = "Terraform@Example"
      }
      
      output "public_ip" {
          value = alicloud_instance.instance.public_ip
      }
      説明
      • 上記のコードでは、internet_max_bandwidth_outパラメーターは10に設定されています。 この場合、システムはパブリックIPアドレスをECSインスタンスに割り当て、割り当てられたパブリックIPアドレスを出力要素に返します。 パブリックIPアドレスを使用してECSインスタンスにアクセスできます。

      • パラメーターの説明については、「パラメーターの説明」をご参照ください。

    2. terraform applyコマンドを実行し、ECSインスタンスを作成します。

    3. terraform showコマンドを実行して、作成されたECSインスタンスを表示し、インスタンスのパブリックIPアドレスを取得します。

    4. ssh root @ <ECSインスタンスのパブリックIPアドレス> コマンドを実行し、設定されたパスワードを入力してECSインスタンスに接続します。

サンプルコード

説明

OpenAPI Explorerでコードをデバッグおよび実行できます。 OpenAPI Explorer にログインします。

resource "alicloud_vpc" "vpc" {
  vpc_name   = "tf_test_foo"
  cidr_block = "172.16.0.0/12"
}

resource "alicloud_vswitch" "vsw" {
  vpc_id     = alicloud_vpc.vpc.id
  cidr_block = "172.16.0.0/21"
  zone_id    = "cn-beijing-f"
}

resource "alicloud_security_group" "default" {
  name   = "default"
  vpc_id = alicloud_vpc.vpc.id
}

resource "alicloud_security_group_rule" "allow_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           = "192.168.0.0/16"
}
resource "alicloud_instance" "instance" {
  # cn-beijing
  availability_zone = "cn-beijing-f"
  security_groups   = alicloud_security_group.default.*.id
  # series III
  instance_type              = "ecs.e-c1m1.large"
  system_disk_category       = "cloud_essd"
  image_id                   = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
  instance_name              = "test_foo"
  vswitch_id                 = alicloud_vswitch.vsw.id
  internet_max_bandwidth_out = 10
  password                   = "Terraform@Example"
}

output "public_ip" {
    value = alicloud_instance.instance.public_ip
}

関連ドキュメント

Terraformユースケースの詳細については、「ユースケース」をご参照ください。

一般的なTerraformコマンドの詳細については、「一般的なコマンド」をご参照ください。

ECSインスタンスの作成方法については、「ECSインスタンスのプロビジョニング方法」をご参照ください。

Terraformは、ROS (Resource Orchestration service) のマネージドサービスとして使用できます。 ROSコンソールでTerraformテンプレートを作成できます。 詳細については、「Terraformスタックの作成」をご参照ください。