ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

Alibaba CloudにISUCONの模擬試験環境を構築する(Terraform編)

はじめに

した。

github.com

さて、今年もISUCON出ます。去年何もできなかった自分に対して圧倒的な成長を実感できる予感がしています。

チーム内でいろいろ作戦会議をしてますが、最初の30分それぞれ何をするのか、そして実際にできるのかの模擬練習をしておいたほうがいい、という意見が出まして、ヨッシャ環境構築するぞとなりました。

Alibabaもalicloud providerもはじめてでしたが、なんやかんやでとりあえず1台インスタンスが立ってGlobal IPにsshできるところまできました。

事前準備としては - Terraform userの作成、Administrator権限の付与 - keypairの事前登録、keypair名をtfファイルに更新

ができれば動くはずです。 ちなみにちゃんとTerrafrm 0.12.6にしました。ちゃんとした。

Alibaba Cloud、普段クラウド触ってればだいたい雰囲気同じ感じでなんとなしできると思います。

ユーザに関しては Resource Access Management -> ユーザ -> 新規ユーザで。Administrator グループを作ってそこにterraformユーザをいれてあげる。そのグループに権限付与ポリシーでAdministratorをあてる、だったはず。 まぁAWSのユーザ、ロール、ポリシーと同じノリです。

新規ユーザ作成時にkeyとsecretが生まれるのでそれを.envrcにいれて環境変数で読めるようにしましょう。

$ cat .envrc.sample
export ALICLOUD_ACCESS_KEY="secret_secret"
export ALICLOUD_SECRET_KEY="secret_secret"
export ALICLOUD_REGION="ap-northeast-1"

keypairですが、新規に作るのも面倒なので、自分のGitHubに登録してある公開鍵を使って https://github.com/chaspy.keys 既存のkeyをimportする形にしました。 そのkeypairの名前だけterraformの keypair attachment resource にいれてあげる必要があります。

resource "alicloud_key_pair_attachment" "attachment" {
  key_name     = "key_pair_github" # Create key pair by hand
  instance_ids = ["${alicloud_instance.web.id}"]
}

Applyするとoutputにglobal ipがでるので、sshすればよいです。

余談だけど普段ラッパースクリプトとかCIとかでしかTerraform実行しないので terraform ってフルスペル入力するのしんどくてエイリアスした。。。

$ tf apply
(snip)
Apply complete! Resources: 11 added, 0 changed, 0 destroyed.

Outputs:

ip = 47.74.4.123

$ ssh root@47.74.4.123

Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-52-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


Welcome to Alibaba Cloud Elastic Compute Service !

root@isucon8:~#

おそうじも簡単でらく。

$ tf destroy
(snip)
Destroy complete! Resources: 11 destroyed.

このあと複数台構成にするとかいろいろやるかもしれない。

次はAnsibleでApplicationを構築するところをやります。いうて以下を流すだけになると思うが。

github.com

おまけ

alicloud-providerに軽微なPR2件出した。マージされろー。

github.com

github.com


追記。された!