OpenAPI Explorer の WebCLI で terraform を使ってみた

こんにちは。
ネクストスケープの開發@mamikaihatsu)です。

前回は、Alibaba Cloud の OpenAPI Explorer で何が出来るのか知るために、少しさわってみた程度でしたが、
機能の1つである WebCLI の部分については、Alibaba Cloud CLI (aliyun) が使えるって事しか試していませんでした。
これではWebCLIステキやんってのが伝わらないですよね。

WebCLIはaliyunはもちろんですが、terraformも最初からインストールされています。
という事で、今回はWebCLI で terraformを使ってみることにしました。


何が出来るか

aliyunやterraformがインストールされていない環境であっても、
WebCLIを使用すれば、ブラウザ上からAlibabaCloud環境構築を自動化する事が出来ます。

手順は以下になります。

1.OpenAPI Explorer の WebCLIにログイン
2.(前準備/初回のみ)WebCLIのNAS作成
3.NASにterraformファイルの配置
(次回からは、必要あればterafformファイルのパラメーター編集のみ)
4.自動構築(terraform init(初期化)⇒terraform plan(確認)⇒terraform apply(適用))


前提条件

本記事はterraformに関する詳細は記載しておりません。
弊社の坂本が投稿したterraformについての記事がありますので、ご参考にしてください。


WebCLI+terraformでAlibabaCloud環境構築

1.OpenAPI Explorer の WebCLIにログイン

OpenAPI Explorer の専用サイト(https://api.aliyun.com)にアクセス

上メニューの[Online Linux Shell]をクリックします。

2.(前準備/初回のみ)WebCLIのNAS作成

■NASの作成

[Online Linux Shell]の画面で、NASがまだ未作成の場合は、[Storage Space]のメッセージが表示されます。

前回の記事ではSkipしましたが、今回はterraformで利用するファイルを保持しておきたいので、[Create Now]をクリックします。
もし、ファイル保持は必要なく一時的で良いのであれば、ここはSkipのままでもよいかと思います。
※NASを利用する場合、NASの課金が発生します。

[Create Now]をクリックするだけで、自動的に作成され、WebCLIを利用する時は常に、Shellを動かしているLinuxマシンにマウントされるようになります。
これだけで作成は完了です。
※NAS自体を利用するのが初めての場合は、NASの有効化の画面に遷移します。ここでは有効化してください。

■NASの確認

作成完了すると、以下のように中国(上海)のNASがマウントされており、ホームディレクトリに設定されている事が確認出来ます。
容量は1ペタあります・・・!

もちろん管理コンソールからも確認出来ます。
少しドキドキしていたのですが、従量課金で作成されているようです。


3.NASにterraformファイルの配置

■ファイルの保存場所

terraformのファイルの保存するディレクトリを作っておきます。

$ mkdir -p ~/terraform/test
$ cd ~/terraform/test

■ファイルの作成

以前のCLIの記事と同じ環境を、今回はterraformで構築したいと思います。

viコマンドでファイルを作成&編集します。

$ vi test.tf

以下、記載します。
provider にアクセスキーやシークレットキーは指定不要です。

provider "alicloud" {
  region     = "ap-northeast-1"
}

variable "zone" {
    default = "ap-northeast-1a"
}

variable "vpc_cidr_block" {
  default     = "172.16.0.0/16"
}

variable "vsw_cidr_block" {
  default     = "172.16.0.0/24"
}

variable "instance_type" {
  default = "ecs.n4.small"
}

variable "prefix" {
  default     = "test"
}

data "alicloud_images" "ecs_image" {
  owners = "system"
  name_regex = "^win2016_64.*ja-jp"
}

# Create VPC
resource "alicloud_vpc" "vpc" {
  name       = "${var.prefix}-vpc"
  cidr_block = "${var.vpc_cidr_block}"
}

# Create VSwitch
resource "alicloud_vswitch" "vsw" {
  availability_zone = "${var.zone}"
  name = "${var.prefix}-vsw"
  vpc_id = "${alicloud_vpc.vpc.id}"
  cidr_block = "${var.vsw_cidr_block}"

}

# Create Security Group
resource "alicloud_security_group" "sg" {
  name = "${var.prefix}-sg"
  vpc_id = "${alicloud_vpc.vpc.id}"
}

#Create  Security Group Rule
resource "alicloud_security_group_rule" "http" {
  type  = "ingress"
  ip_protocol = "tcp"
  nic_type = "intranet"
  policy = "accept"
  port_range = "80/80"
  priority = 1
  security_group_id = "${alicloud_security_group.sg.id}"
  cidr_ip = "0.0.0.0/0"
}

# Create EIP
resource "alicloud_eip" "eip" {
  internet_charge_type = "PayByTraffic"
}

resource "alicloud_eip_association" "eip_asso" {
  allocation_id = "${alicloud_eip.eip.id}"
  instance_id   = "${alicloud_instance.web.id}"
}

# Create ECS
resource "alicloud_instance" "web" {
  instance_name = "${var.prefix}-websv"
  availability_zone = "${var.zone}"
  
  instance_type        = "${var.instance_type}" 
  image_id             = "${data.alicloud_images.ecs_image.images.0.id}"

  system_disk_category = "cloud_efficiency"
  security_groups = ["${alicloud_security_group.sg.id}"]
  vswitch_id = "${alicloud_vswitch.vsw.id}"
}

[:wq]で保存して終了します。


4.自動構築

■terraformの初期化

$ terraform init

■確認

$ terraform plan

■適用

$ terraform apply

これで構築する事が出来ました。

管理コンソールからも確認出来ます。

■(おまけ)削除
テスト的に構築しただけなので、お片付けしておきます。

$ terraform destroy


まとめ

WebCLIを利用することで、terraformファイルにアクセスキーやシークレットキーを記載しなくて良いので、セキュリティ的に安心ですね。
terraformのサンプルコードについては、GitHubに様々な構築パターンのコードがありますので、ぜひ試してみてください。


THANKS!

今回、以下を参考にさせていただきました。

Alibaba Cloud Teraformサンプル集
https://github.com/mosuke5/terraform_examples_for_alibabacloud

Terraform:Provider AlobabaCoud
https://www.terraform.io/docs/providers/alicloud/index.html