From ee39b3e84c2e28d98958489250a29e31aa8fef2a Mon Sep 17 00:00:00 2001 From: Edward Viaene Date: Sat, 5 Dec 2020 14:14:28 +0100 Subject: [PATCH] module with flatten function --- module-flatten/parameters.tf | 31 +++++++++++++++++++ module-flatten/provider.tf | 4 +++ module-flatten/ssm-parameter/ssm-parameter.tf | 18 +++++++++++ module-flatten/ssm-parameter/variables.tf | 10 ++++++ 4 files changed, 63 insertions(+) create mode 100644 module-flatten/parameters.tf create mode 100644 module-flatten/provider.tf create mode 100644 module-flatten/ssm-parameter/ssm-parameter.tf create mode 100644 module-flatten/ssm-parameter/variables.tf diff --git a/module-flatten/parameters.tf b/module-flatten/parameters.tf new file mode 100644 index 0000000..7418b88 --- /dev/null +++ b/module-flatten/parameters.tf @@ -0,0 +1,31 @@ +locals { + my_parameters = [ + { + "prefix" = "/myprefix" + "parameters" = [ + { + "name" = "myparameter" + "value" = "myvalue" + }, + { + "name" = "environment" + "value" = "dev" + } + ] + }, + { + "prefix" = "/myapp" + "parameters" = [ + { + "name" = "environment" + "value" = "prod" + } + ] + } + ] +} + +module "parameters" { + source = "./ssm-parameter" + parameters = local.my_parameters +} diff --git a/module-flatten/provider.tf b/module-flatten/provider.tf new file mode 100644 index 0000000..6a26783 --- /dev/null +++ b/module-flatten/provider.tf @@ -0,0 +1,4 @@ +provider "aws" { + region = "eu-west-1" +} + diff --git a/module-flatten/ssm-parameter/ssm-parameter.tf b/module-flatten/ssm-parameter/ssm-parameter.tf new file mode 100644 index 0000000..013f6a7 --- /dev/null +++ b/module-flatten/ssm-parameter/ssm-parameter.tf @@ -0,0 +1,18 @@ +locals { + parameters = flatten([ + for parameters in var.parameters: [ + for keyvalues in parameters.parameters: + { + "name" = "${parameters.prefix}/${keyvalues.name}" + "value" = keyvalues.value + } + ] + ]) +} + +resource "aws_ssm_parameter" "parameter" { + for_each = { for keyvalue in local.parameters: keyvalue.name => keyvalue.value } + name = each.key + type = "String" + value = each.value +} diff --git a/module-flatten/ssm-parameter/variables.tf b/module-flatten/ssm-parameter/variables.tf new file mode 100644 index 0000000..847817e --- /dev/null +++ b/module-flatten/ssm-parameter/variables.tf @@ -0,0 +1,10 @@ +variable "parameters" { + type = list(object({ + prefix = string + parameters = list(object({ + name = string + value = string + })) + })) + default = [] +}