From 08a004b6d4a3d7125f56e01fd34a4cf2285320eb Mon Sep 17 00:00:00 2001 From: badra001 Date: Fri, 28 May 2021 14:09:22 -0400 Subject: [PATCH] add splunk-description module --- CHANGELOG.md | 4 ++ common/defaults.tf | 13 +++++++ common/version.tf | 2 +- splunk-description/data.tf | 1 + splunk-description/defaults.tf | 1 + .../generate_splunk.description.tf | 34 ++++++++++++++++ splunk-description/main.tf | 39 +++++++++++++++++++ splunk-description/prefixes.tf | 1 + .../templates/aws_description_tasks.conf.tpl | 6 +++ splunk-description/variables.common.tf | 1 + splunk-description/variables.tf | 11 ++++++ splunk-description/version.tf | 1 + 12 files changed, 113 insertions(+), 1 deletion(-) create mode 120000 splunk-description/data.tf create mode 120000 splunk-description/defaults.tf create mode 100644 splunk-description/generate_splunk.description.tf create mode 100644 splunk-description/main.tf create mode 120000 splunk-description/prefixes.tf create mode 100644 splunk-description/templates/aws_description_tasks.conf.tpl create mode 120000 splunk-description/variables.common.tf create mode 100644 splunk-description/variables.tf create mode 120000 splunk-description/version.tf diff --git a/CHANGELOG.md b/CHANGELOG.md index a55dabc..e85ee5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -111,3 +111,7 @@ - create submodule - s3-config - create submodule + +* v1.13.0 -- 202010528 + - splunk-description + - create submodule diff --git a/common/defaults.tf b/common/defaults.tf index 673467e..91dc82b 100644 --- a/common/defaults.tf +++ b/common/defaults.tf @@ -20,6 +20,19 @@ locals { "config" = { "name" = "inf-config" } + "splunk_description" = { + "api_list" = [ + "ec2_volumes", "ec2_instances", "ec2_reserved_instances", "ec2_key_pairs", "ec2_security_groups", "ec2_images", "ec2_addresses", + "ebs_snapshots", "classic_load_balancers", "application_load_balancers", + "vpcs", "vpc_network_acls", "vpc_subnets", + "rds_instances", + "lambda_functions", + "s3_buckets", + "iam_users" + ] + "api_interval" = 3600 + } } } + diff --git a/common/version.tf b/common/version.tf index 784d11b..a705fce 100644 --- a/common/version.tf +++ b/common/version.tf @@ -1,3 +1,3 @@ locals { - _module_version = "1.12.0" + _module_version = "1.13.0" } diff --git a/splunk-description/data.tf b/splunk-description/data.tf new file mode 120000 index 0000000..995624d --- /dev/null +++ b/splunk-description/data.tf @@ -0,0 +1 @@ +../common/data.tf \ No newline at end of file diff --git a/splunk-description/defaults.tf b/splunk-description/defaults.tf new file mode 120000 index 0000000..a5556ac --- /dev/null +++ b/splunk-description/defaults.tf @@ -0,0 +1 @@ +../common/defaults.tf \ No newline at end of file diff --git a/splunk-description/generate_splunk.description.tf b/splunk-description/generate_splunk.description.tf new file mode 100644 index 0000000..8c6b016 --- /dev/null +++ b/splunk-description/generate_splunk.description.tf @@ -0,0 +1,34 @@ +locals { + template_prefix = "aws_decription_tasks" +} + +#--- +# generate splunk inputs file +#--- +data "template_file" "splunk_description" { + template = file("${path.module}/templates/${local.template_prefix}.conf.tpl") + vars = { + account_id = local.account_id + account_alias = local.account_alias + entry_uuid = random_uuid.splunk_description.result + region = local.region + api_list = join(",", local.api_values) + } +} + +resource "random_uuid" "splunk_description" { + keepers = { + description = length(local.api_list) > 0 ? 1 : 0 + } +} + +resource "null_resource" "splunk_description" { + count = length(local.api_list) > 0 ? 1 : 0 + provisioner "local-exec" { + command = "test -d setup || mkdir setup" + } + provisioner "local-exec" { + working_dir = "setup" + command = "echo '${data.template_file.splunk_description.rendered}' > ${local.template_prefix}.${local.account_id}.${local.config_region}.conf" + } +} diff --git a/splunk-description/main.tf b/splunk-description/main.tf new file mode 100644 index 0000000..6570f07 --- /dev/null +++ b/splunk-description/main.tf @@ -0,0 +1,39 @@ +/* +* # aws-inf-setup :: splunk-description +* +* This set up the Splunk input configuration files in setup/aws_description_tasks.conf +* for this account and region +* +* # Usage +* Here is a simple example, the one most commonly expected to be used. +* +* ```hcl +* module "splunk_description" { +* source = "git@github.e.it.census.gov:terraform-modules/aws-inf-setup.git//splunk-description" +* account_alias = "ma5-gov" +* +* ## optional +* # api_list = ["ec2_instances","ec2_volumes",] +* # api_interval = 3600 +* } +* ``` +*/ + +locals { + account_id = var.account_id != "" ? var.account_id : data.aws_caller_identity.current.account_id + region = data.aws_region.current.name + account_environment = data.aws_arn.current.partition == "aws-us-gov" ? "gov" : "ew" + # remap do2 to do1 for govcloud (undo this later when accounts are renamed in splunk) + account_alias = replace(var.account_alias, "do2", "do1") + + description_defaults = local._defaults["splunk_descriptions"] + api_list = length(var.api_list) > 0 ? var.api_list : local.description_default["api_list"] + api_interval = var.api_interval > 0 ? var.api_interval : local.description_default["api_interval"] + api_values = [for x in local.api_list : format("%v/%v", v, local.api_interval)] + + base_tags = { + "Organization" = "census:aditcio:csvd" + "boc:tf_module_version" = local._module_version + "boc:created_by" = "terraform" + } +} diff --git a/splunk-description/prefixes.tf b/splunk-description/prefixes.tf new file mode 120000 index 0000000..7e265d5 --- /dev/null +++ b/splunk-description/prefixes.tf @@ -0,0 +1 @@ +../common/prefixes.tf \ No newline at end of file diff --git a/splunk-description/templates/aws_description_tasks.conf.tpl b/splunk-description/templates/aws_description_tasks.conf.tpl new file mode 100644 index 0000000..9819061 --- /dev/null +++ b/splunk-description/templates/aws_description_tasks.conf.tpl @@ -0,0 +1,6 @@ +[${account_alias}-description-${region}] +account = ${account_alias} +apis = ${api_list} +index = aws +regions = ${region} +sourcetype = aws:description diff --git a/splunk-description/variables.common.tf b/splunk-description/variables.common.tf new file mode 120000 index 0000000..7439ed8 --- /dev/null +++ b/splunk-description/variables.common.tf @@ -0,0 +1 @@ +../common/variables.common.tf \ No newline at end of file diff --git a/splunk-description/variables.tf b/splunk-description/variables.tf new file mode 100644 index 0000000..036cc02 --- /dev/null +++ b/splunk-description/variables.tf @@ -0,0 +1,11 @@ +variable "api_list" { + description = "Splunk description input API list" + type = list(string) + default = [] +} + +variable "api_interval" { + description = "Splunk description input retrieval interval" + type = number + default = 3600 +} diff --git a/splunk-description/version.tf b/splunk-description/version.tf new file mode 120000 index 0000000..b83c5b7 --- /dev/null +++ b/splunk-description/version.tf @@ -0,0 +1 @@ +../common/version.tf \ No newline at end of file