From a4ea13c7c2754a503bd17fb1b8b941482ff5f4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Soko=C5=82owski?= Date: Wed, 1 Aug 2018 14:20:09 -0400 Subject: [PATCH] add basic main.tf and workpaces.tf --- main.tf | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ workspaces.tf | 20 ++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 main.tf create mode 100644 workspaces.tf diff --git a/main.tf b/main.tf new file mode 100644 index 0000000..db2da60 --- /dev/null +++ b/main.tf @@ -0,0 +1,58 @@ +/* PROVIDERS --------------------------------------*/ + +provider "digitalocean" { + token = "${var.digitalocean_token}" +} +provider "cloudflare" { + email = "${var.cloudflare_email}" + token = "${var.cloudflare_token}" +} +provider "google" { + credentials = "${file("google-cloud.json")}" + project = "russia-servers" + region = "us-central1" +} +provider "alicloud" { + access_key = "${var.alicloud_access_key}" + secret_key = "${var.alicloud_secret_key}" + region = "${var.alicloud_region}" +} + +/* BACKEND ----------------------------------------*/ + +terraform { + backend "consul" { + address = "https://consul.statusim.net:8400" + lock = true + /* WARNING This needs to be changed for every repo. */ + path = "terraform/swarm/" + ca_file = "ansible/files/consul-ca.crt" + cert_file = "ansible/files/consul-client.crt" + key_file = "ansible/files/consul-client.key" + } +} + +/* WORKSPACES -----------------------------------*/ + +locals { + ws = "${merge(local.env["defaults"], local.env[terraform.workspace])}" +} + +/* RESOURCES --------------------------------------*/ + +module "swarm" { + source = "modules/multi-provider" + /* node type */ + name = "swarm" + group = "swarm" + /* scaling options */ + count = "${local.ws["hosts_count"]}" + /* general */ + env = "${var.env}" + domain = "${var.domain}" + eth_network = "${var.eth_network}" + /* firewall */ + open_ports = [ + "30404-30410", /* discovery */ + ] +} diff --git a/workspaces.tf b/workspaces.tf new file mode 100644 index 0000000..6b1adf0 --- /dev/null +++ b/workspaces.tf @@ -0,0 +1,20 @@ +/* WORKSPACES ---------------------------------------------*/ +/** + * This is a hacky way of binding specific variable + * values to different Terraform workspaces. + * + * Details: + * https://github.com/hashicorp/terraform/issues/15966 + */ + +locals { + env = { + defaults = { + hosts_count = 1 + } + + # For testing infra changes before rollout to other fleets + test = {} + } +} +/*---------------------------------------------------------*/