From 82eedbd62208f5fadd38427119526a01c132b718 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Tue, 5 Sep 2017 14:10:53 +0300 Subject: [PATCH] Update ansible inventory file when template changes (#1612) This trigger ensures the inventory file is kept up-to-date. Otherwise, if the file exists and you've made changes to your terraform-managed infra without having deleted the file, it would never get updated. For example, consider the case where you've destroyed and re-applied the terraform resources, none of the IPs would get updated, so ansible would be trying to connect to the old ones. --- contrib/terraform/aws/create-infrastructure.tf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/contrib/terraform/aws/create-infrastructure.tf b/contrib/terraform/aws/create-infrastructure.tf index a58bca53c..f1f1e205b 100644 --- a/contrib/terraform/aws/create-infrastructure.tf +++ b/contrib/terraform/aws/create-infrastructure.tf @@ -162,7 +162,7 @@ resource "aws_instance" "k8s-worker" { */ data "template_file" "inventory" { template = "${file("${path.module}/templates/inventory.tpl")}" - + vars { public_ip_address_bastion = "${join("\n",formatlist("bastion ansible_ssh_host=%s" , aws_instance.bastion-server.*.public_ip))}" connection_strings_master = "${join("\n",formatlist("%s ansible_ssh_host=%s",aws_instance.k8s-master.*.tags.Name, aws_instance.k8s-master.*.private_ip))}" @@ -176,6 +176,7 @@ data "template_file" "inventory" { kube_insecure_apiserver_address = "kube_apiserver_insecure_bind_address: ${var.kube_insecure_apiserver_address}" } + } resource "null_resource" "inventories" { @@ -183,4 +184,8 @@ resource "null_resource" "inventories" { command = "echo '${data.template_file.inventory.rendered}' > ../../../inventory/hosts" } + triggers { + template = "${data.template_file.inventory.rendered}" + } + }