From 03c82299eb2a25a24469197a1e8ff51276db1a79 Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Tue, 26 Apr 2022 10:57:52 -0400 Subject: [PATCH] Bit rot in terraform's digitalocean led to new droplets not being attached for DO projects, thereby not being included in the firewall, so new droplets would never go online until added. This now adds them automatically, although new groups need to be added. --- terraform/digitalocean.tf | 152 ++++++++++++++++++++++++-------------- 1 file changed, 96 insertions(+), 56 deletions(-) diff --git a/terraform/digitalocean.tf b/terraform/digitalocean.tf index a1e53f819..3978001cd 100644 --- a/terraform/digitalocean.tf +++ b/terraform/digitalocean.tf @@ -23,6 +23,46 @@ resource "digitalocean_ssh_key" "default" { public_key = file("/srv/secrets-newsblur/keys/docker.key.pub") } +resource "digitalocean_project" "NewsBlur_Docker" { + name = "NewsBlur Docker" + environment = "Production" + description = "Infrastructure glued together with consul" +} + +resource "digitalocean_project_resources" "NewsBlur_Docker" { + project = digitalocean_project.NewsBlur_Docker.id + resources = flatten([ + digitalocean_droplet.db-consul.*.urn, + digitalocean_droplet.www.*.urn, + digitalocean_droplet.app-django.*.urn, + digitalocean_droplet.app-counts.*.urn, + digitalocean_droplet.app-push.*.urn, + digitalocean_droplet.app-refresh.*.urn, + digitalocean_droplet.blog.*.urn, + digitalocean_droplet.staging-web.*.urn, + digitalocean_droplet.discovery.*.urn, + digitalocean_droplet.node-text.*.urn, + digitalocean_droplet.node-socket.*.urn, + digitalocean_droplet.node-favicons.*.urn, + digitalocean_droplet.node-images.*.urn, + digitalocean_droplet.node-page.*.urn, + digitalocean_droplet.db-elasticsearch.*.urn, + digitalocean_droplet.db-redis-user.*.urn, + digitalocean_droplet.db-redis-sessions.*.urn, + digitalocean_droplet.db-redis-story.*.urn, + digitalocean_droplet.db-redis-pubsub.*.urn, + digitalocean_droplet.db-postgres.*.urn, + digitalocean_droplet.db-mongo-primary.*.urn, + digitalocean_droplet.db-mongo-secondary.*.urn, + digitalocean_droplet.db-mongo-analytics.*.urn, + digitalocean_droplet.db-metrics.*.urn, + digitalocean_droplet.db-sentry.*.urn, + digitalocean_droplet.task-celery.*.urn, + digitalocean_droplet.task-work.*.urn + ]) + +} + # ################# # # Resources # # ################# @@ -38,10 +78,10 @@ resource "digitalocean_droplet" "db-consul" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -56,10 +96,10 @@ resource "digitalocean_droplet" "www" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -74,10 +114,10 @@ resource "digitalocean_droplet" "app-django" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -92,10 +132,10 @@ resource "digitalocean_droplet" "app-counts" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -110,10 +150,10 @@ resource "digitalocean_droplet" "app-push" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -128,10 +168,10 @@ resource "digitalocean_droplet" "app-refresh" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -145,10 +185,10 @@ resource "digitalocean_droplet" "blog" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -162,10 +202,10 @@ resource "digitalocean_droplet" "staging-web" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -180,10 +220,10 @@ resource "digitalocean_droplet" "discovery" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -197,10 +237,10 @@ resource "digitalocean_droplet" "node-text" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -215,10 +255,10 @@ resource "digitalocean_droplet" "node-socket" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -232,10 +272,10 @@ resource "digitalocean_droplet" "node-favicons" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -249,10 +289,10 @@ resource "digitalocean_droplet" "node-images" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -278,10 +318,10 @@ resource "digitalocean_droplet" "node-page" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -295,10 +335,10 @@ resource "digitalocean_droplet" "db-elasticsearch" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -312,10 +352,10 @@ resource "digitalocean_droplet" "db-redis-user" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -329,10 +369,10 @@ resource "digitalocean_droplet" "db-redis-sessions" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -346,10 +386,10 @@ resource "digitalocean_droplet" "db-redis-story" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -363,10 +403,10 @@ resource "digitalocean_droplet" "db-redis-pubsub" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -380,10 +420,10 @@ resource "digitalocean_droplet" "db-postgres" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -408,10 +448,10 @@ resource "digitalocean_droplet" "db-postgres" { # command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" # } # provisioner "local-exec" { -# command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" +# command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" # } # provisioner "local-exec" { -# command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" +# command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" # } # } @@ -433,10 +473,10 @@ resource "digitalocean_droplet" "db-mongo-primary" { # command = "sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -461,10 +501,10 @@ resource "digitalocean_droplet" "db-mongo-secondary" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -489,10 +529,10 @@ resource "digitalocean_droplet" "db-mongo-analytics" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -517,10 +557,10 @@ resource "digitalocean_droplet" "db-metrics" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -534,10 +574,10 @@ resource "digitalocean_droplet" "db-sentry" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -555,10 +595,10 @@ resource "digitalocean_droplet" "task-celery" { command = "sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } } @@ -573,9 +613,9 @@ resource "digitalocean_droplet" "task-work" { command = "/srv/newsblur/ansible/utils/generate_inventory.py; sleep 120" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml" } provisioner "local-exec" { - command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml" + command = "cd ..; ANSIBLE_FORCE_COLOR=1 ansible-playbook -l ${self.name} ansible/setup.yml" } }