QUICKGUARD ホームページ >

terraform で 各 Iaas の仮想インスタンスを作成 (DigitalOcean)

2015.12.22

■目的
terraform で各 IaaS ベンダーの仮想マシンを作成する
今回は DigitalOcean のベースとなる tf ファイルを作成

対象ベンダー
– Microsoft Azure
– Google Cloud
– DigitalOsean
– CloudStack

※AWSは今更なので割愛

■事前準備
・まずはサインアップ
・上メニューの [API] リンクより、token を作成
・SSH公開鍵(id_rsa.pub)を tf ファイルと同じ場所に設置

■手順

〇tf ファイルを作成

・provider.tf

provider “digitalocean” {
token = “${var.token}”
}

・ssh_key.tf

resource “digitalocean_ssh_key” “default” {
name = “default”
public_key = “${file(“id_rsa.pub”)}”
}

・floating_ip.tf

resource “digitalocean_floating_ip” “default” {
droplet_id = “${digitalocean_droplet.default.id}”
region = “${digitalocean_droplet.default.region}”
}

・droplet.tf

resource “digitalocean_droplet” “default” {
region = “${var.region}”
name = “${var.droplet_name}”
image = “${var.image}”
size = “${var.size}”
private_networking = true
ssh_keys = [“${digitalocean_ssh_key.default.id}”]
}

・domain.tf

resource “digitalocean_domain” “default” {
name = “${var.domain_name}”
ip_address = “${digitalocean_floating_ip.default.ip_address}”
}

resource “digitalocean_record” “default” {
domain = “${digitalocean_domain.default.name}”
type = “A”
name = “${var.subdomain}”
value = “${digitalocean_floating_ip.default.ip_address}”
}

・output.tf

output “digitalocean_floating_ip_address” {
value = “${digitalocean_floating_ip.default.ip_address}”
}

・variables.tf

variable “token” {}
variable “region” {
default = “sgp1”
}
variable “droplet_name” {}
variable “image” {}
variable “size” {}
variable “domain_name” {}
variable “subdomain” {}

〇tfvars は以下の通り
・terraform.tfvars

## token
token = “**********************”

## droplet
region = “sgp1”
droplet_name = “********”
image = “centos-6-5-x64”
size = “512mb”

## domain
domain_name = “example.com”
subdomain = “www”

■結果
$ terraform apply

Outputs:

digitalocean_floating_ip_address = ***.***.***.***

■作成されたリソース
$ terraform graph | dot -Tpng > graph.png

terraform-digitalocean