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を実行しても新規ドロップレットは作られず、既存のドロップレットが上書きされる。便利

参考

Terraform – DIGITALOCEAN PROVIDER

Digitalocean – API V2