Skip to content

Instantly share code, notes, and snippets.

@FuriKuri
Created April 10, 2016 13:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FuriKuri/69da31fc739578aae1617889faeb5235 to your computer and use it in GitHub Desktop.
Save FuriKuri/69da31fc739578aae1617889faeb5235 to your computer and use it in GitHub Desktop.
CoreOS with Terraform on Digitalocean
variable "do_token" {}
variable "domain_name" {}
variable "ssh_fingerprint" {}
provider "digitalocean" {
token = "${var.do_token}"
}
resource "digitalocean_droplet" "coreos1" {
name = "coreos1"
size = "512mb"
image = "coreos-stable"
region = "fra1"
private_networking = true
ssh_keys = ["${var.ssh_fingerprint}"]
user_data = "${file("service.yml")}"
}
resource "digitalocean_droplet" "coreos2" {
name = "coreos2"
size = "512mb"
image = "coreos-stable"
region = "fra1"
private_networking = true
ssh_keys = ["${var.ssh_fingerprint}"]
user_data = "${file("service.yml")}"
}
resource "digitalocean_droplet" "coreos3" {
name = "coreos3"
size = "512mb"
image = "coreos-stable"
region = "fra1"
private_networking = true
ssh_keys = ["${var.ssh_fingerprint}"]
user_data = "${file("service.yml")}"
}
resource "digitalocean_droplet" "coreos-worker1" {
name = "coreos-worker1"
size = "512mb"
image = "coreos-stable"
region = "fra1"
private_networking = true
ssh_keys = ["${var.ssh_fingerprint}"]
user_data = "${file("worker.yml")}"
}
resource "digitalocean_droplet" "coreos-worker2" {
name = "coreos-worker2"
size = "512mb"
image = "coreos-stable"
region = "fra1"
private_networking = true
ssh_keys = ["${var.ssh_fingerprint}"]
user_data = "${file("worker.yml")}"
}
resource "digitalocean_droplet" "coreos-worker3" {
name = "coreos-worker3"
size = "512mb"
image = "coreos-stable"
region = "fra1"
private_networking = true
ssh_keys = ["${var.ssh_fingerprint}"]
user_data = "${file("worker.yml")}"
}
resource "digitalocean_record" "coreos1" {
domain = "${var.domain_name}"
type = "A"
name = "coreos1"
value = "${digitalocean_droplet.coreos1.ipv4_address}"
}
resource "digitalocean_record" "coreos2" {
domain = "${var.domain_name}"
type = "A"
name = "coreos2"
value = "${digitalocean_droplet.coreos2.ipv4_address}"
}
resource "digitalocean_record" "coreos3" {
domain = "${var.domain_name}"
type = "A"
name = "coreos3"
value = "${digitalocean_droplet.coreos3.ipv4_address}"
}
resource "digitalocean_record" "coreos-worker1" {
domain = "${var.domain_name}"
type = "A"
name = "coreos-worker1"
value = "${digitalocean_droplet.coreos-worker1.ipv4_address}"
}
resource "digitalocean_record" "coreos-worker2" {
domain = "${var.domain_name}"
type = "A"
name = "coreos-worker2"
value = "${digitalocean_droplet.coreos-worker2.ipv4_address}"
}
resource "digitalocean_record" "coreos-worker3" {
domain = "${var.domain_name}"
type = "A"
name = "coreos-worker3"
value = "${digitalocean_droplet.coreos-worker3.ipv4_address}"
}
output "address_coreos1" {
value = "${digitalocean_droplet.coreos1.ipv4_address}"
}
output "address_coreos2" {
value = "${digitalocean_droplet.coreos2.ipv4_address}"
}
output "address_coreos3" {
value = "${digitalocean_droplet.coreos3.ipv4_address}"
}
output "address_coreos-worker1" {
value = "${digitalocean_droplet.coreos-worker1.ipv4_address}"
}
output "address_coreos-worker2" {
value = "${digitalocean_droplet.coreos-worker2.ipv4_address}"
}
output "address_coreos-worker3" {
value = "${digitalocean_droplet.coreos-worker3.ipv4_address}"
}
#cloud-config
coreos:
etcd2:
# https://discovery.etcd.io/new?size=3
discovery: <replace_with_your_discovery_url>
advertise-client-urls: http://$private_ipv4:2379
initial-advertise-peer-urls: http://$private_ipv4:2380
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://$private_ipv4:2380,http://$private_ipv4:7001
fleet:
public-ip: $public_ipv4
metadata: "role=services,provider=digitialocean"
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
update:
reboot-strategy: etcd-lock
coreos:
etcd2:
# https://discovery.etcd.io/new?size=3
discovery: <replace_with_your_discovery_url>
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
proxy: on
fleet:
public-ip: $public_ipv4
metadata: "role=worker,provider=digitialocean"
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
update:
reboot-strategy: etcd-lock
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment