terraform で 各 Iaas の仮想インスタンスを作成 (DigitalOcean)
■目的
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