TerraformとDigitalocean
※ 2014/08/02 sshキーの指定とoverrideについて追記
Terraformを使ってDigitaloceanにDropletを作成してみる
terraformは最近公開されたdigitalocean api2.0対応なので注意(1.0は多分使えない)
terraformは公式サイトみて適当にインストールしておく
terraformファイル作成
Terraform formatで書く (jsonも使える)
Terraform formatの方がよりhuman-readable らしい
$ cat test_terraform.tf
variable "do_token" {
default = "パーソナルアクセストークン"
}
# Configure the DigitalOcean Provider
provider "digitalocean" {
token = "${var.do_token}"
}
# Create a new Web droplet in the nyc2 region
resource "digitalocean_droplet" “適当な名前。webとか。terraform側で使う名前?" {
image = “digitaloceanのイメージ名。slag。centos-6-5-x64とか"
name = “ドロップレット名"
region = “リージョン。slag。sgp1とか"
size = “サイズってかプラン。slag。512mbとか"
}
パーソナルアクセストークンはdigitaloceanで作成する
作成時、write権限にチェック入れるの忘れずに!!!!!!
terraform apply実行
上記ファイル作成後terraform apply
する
$ terraform apply
digitalocean_droplet.test: Refreshing state... (ID: 2204064)
digitalocean_droplet.test: Creating...
image: "" => "centos-6-5-x64"
name: "" => "test-1kunushi"
region: "" => "sgp1"
size: "" => "512mb"
digitalocean_droplet.test: Creation complete
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
The state of your infrastructure has been saved to the path
below. This state is required to modify and destroy your
infrastructure, so keep it safe. To inspect the complete state
use the `terraform show` command.
State path: terraform.tfstate
できました!わーい
dropletを作成する上で基本的な設定は全部できるっぽい(sshキーの指定とか)
その他
- dropletイメージ一覧取得したい場合 - 下記を実行
$ curl -X GET "https://api.digitalocean.com/v2/images/" -H "Authorization: Bearer パーソナルアクセストークン"
イメージ名からリージョンまでごっそり取ってこれます
APIv1.0時代と違って整形されて出力される!あと前はclient idとapi key2個必要だったけどアクセストークン1個で良くなったので楽ちん
謎のTerraform formatに慣れれば楽しいかも
- sshキーの指定
digitalocean_dropletリソースの中でssh_keys = [123456]のようにリストで指定(ssh_keyのIDもしくはフィンガープリントで指定できる)
- override
digitalocean_dropletリソース内の引数(name等)を変えて再度applyを実行しても新規ドロップレットは作られず、既存のドロップレットが上書きされる。便利