ECS、EIPの作成

AlibabaCloudの基本プロダクトサービスであるECS、EIPの作成方法を解説します。

1. ECS

  ECSは、Alibaba Cloudによる仮装コンピューティングサービスです。ECS インスタンスは、ECS のコアコンポーネントであり、CPU、メモリ、およびその他の基本的なコンピューティングコンポーネントを含む仮想コンピューティング環境です。ディスク、イメージ、スナップショットなどの他のリソースは、ECS インスタンスと組み合わせてのみ使用できます。   Alibaba CloudのECSはビジネスやWebアプリケーションなど様々なニーズに対応しており、即時に作れることが特徴です。

  ECSインスタンス生成リソースは多くのオプション(任意)でパラメータや構成を指定できます。ECSインスタンスはVPCやセキュリティグループとは少し異なり、OSやバージョン選定、起動時データ引き渡しやECS使い捨て利用など様々な利用方法が実現出来るため、ここは抑えておきましょう。


2. ECSインスタンス生成のTerraformについて

  本題、ECSインスタンス生成作成に移ります。ECSインスタンス生成するだけの簡単なソースを作ってみます。

resource "alicloud_instance" "ECS_instance" {
  instance_name   = "ECS_instance_for_terraform"
  host_name       = "ECS_instance_for_terraform"
  instance_type   = "ecs.n4.small"
  image_id        = "centos_7_06_64_20G_alibase_20190218.vhd"
  system_disk_category = "cloud_efficiency"
  security_groups = ["${alicloud_security_group.sg.id}"]
  availability_zone = "${var.zone}"
  vswitch_id = "${alicloud_vswitch.vsw.id}"
}

alicloud_instance

image_idの種類や取得方法は後述します。

このalicloud_instanceリソースを実行することにより、以下の属性情報が出力されます。

他に入力パラメータ、出力パラメータがいくつかありますので、こちらも是非参照してみてください。 https://www.terraform.io/docs/providers/alicloud/r/instance.html


3. ECSインスタンスTypeの取得について

  Alibaba CloudのECSインスタンスタイプinstance_type一覧はサイトのECSインスタンスリストから選定し取得する必要があります。 https://jp.alibabacloud.com/product/ecs

図 3

ここで使いたいECSインスタンスタイプがあれば、そのinstance_type名を選定し、先述のTerraform ECSインスタンス生成リソースへ記載します。


4. ECSインスタンスimage_idの取得について

  Alibaba CloudのECSインスタンスイメージimage_id一覧は aliyun clialiyun shellで取得する必要があります。

今回はaliyun shellで取得してみましょう。以下 aliyun shellをブラウザで開いてみてください。 https://shell.alibabacloud.com/#/

Webブラウザにてaliyun shellが使えるようになります。こちらにて以下コマンドを入力します。 これは東京リージョン(ap-northeast-1)、表示件数100件で 使えるECSインスタンスのImageIdとOSNameリスト一覧を表示するコマンドです。

aliyun ecs DescribeImages --region ap-northeast-1 --language en --pager 100 | jq '[.Images.Image[] | { status: .Status , ImageId: .ImageId ,OSName: .OSName } ] | sort_by(.OSName) '

すると のようにECSインスタンスのImage_Idが表示されます。

図 4 このImage_IDリストから使いたいOS(Image_ID)を選定し、先述のTerraform ECSインスタンス生成リソースへ記載します。

他にAliyun CliでのECSインスタンス一覧取得方法もあります。詳しくは以下を参照してみてください。 qitta:aliyuncliでimage_idを調べてみた


5. EIP

  EIP(Elastic IP)はAlibaba Cloud の VPCネットワーク の ECS、SLB インスタンスや、NATゲートウェイにパブリック IP アドレスリソースをバインドできるサービスです。 EIP使用を宣言(alicloud_eip)するだけでなく、返り値を利用した連結処理が必要なので、ここは抑えておきましょう。

# ECSインスタンスを宣言(VPC関連は省略)
resource "alicloud_instance" "ECS_instance" {
  instance_name   = "ECS_instance_for_terraform"
  host_name       = "ECS_instance_for_terraform"
  instance_type   = "ecs.n4.small"
  image_id        = "centos_7_06_64_20G_alibase_20190218.vhd"
  system_disk_category = "cloud_efficiency"
  security_groups = ["${alicloud_security_group.sg.id}"]
  availability_zone = "${var.zone}"
  vswitch_id = "${alicloud_vswitch.vsw.id}"
}

# EIPを宣言
resource "alicloud_eip" "eip" {
  internet_charge_type = "PayByTraffic"
}

# EIPの返り値をECSインスタンスへ紐付ける
resource "alicloud_eip_association" "eip_ecs_association" {
  allocation_id = "${alicloud_eip.eip.id}"
  instance_id   = "${alicloud_instance.ECS_instance.id}"
}

alicloud_eip