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