You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
1.4 KiB

/**
* Cluster on DO
*
*/
variable "name" {
description = "The cluster name, e.g cdn"
}
variable "environment" {
description = "Environment tag, e.g prod"
}
variable "image_id" {
description = "Image ID"
}
variable "regions" {
description = "Regions to launch in"
type = "list"
}
variable "key_ids" {
description = "SSH keys to use"
type = "list"
}
variable "instance_size" {
description = "The instance size to use, e.g 2gb"
}
variable "desired_capacity" {
description = "Desired instance count"
default = 3
}
#-----------------------
# Instances
resource "digitalocean_droplet" "cluster" {
# set the image and instance type
name = "${var.name}${count.index}"
image = "${var.image_id}"
size = "${var.instance_size}"
# the `element` function handles modulo
region = "${element(var.regions, count.index)}"
ssh_keys = "${var.key_ids}"
count = "${var.desired_capacity}"
lifecycle = {
prevent_destroy = false
}
}
#-----------------------
// The cluster name, e.g cdn
output "name" {
value = "${var.name}"
}
// The list of cluster instance ids
output "instances" {
value = ["${digitalocean_droplet.cluster.*.id}"]
}
// The list of cluster instance ips
output "private_ips" {
value = ["${digitalocean_droplet.cluster.*.ipv4_address_private}"]
}
// The list of cluster instance ips
output "public_ips" {
value = ["${digitalocean_droplet.cluster.*.ipv4_address}"]
}