Browse Source

Merge pull request #594 from mdr-engineering/feature/dw_MSOCI-2086_codebuildingpacker

MSOCI-2086 codebuild for packer
Duane Waddle 3 years ago
parent
commit
653cef5f03

+ 36 - 0
common/aws-us-gov/afs-mdr-common-services-gov/005-standard-iam/terragrunt.hcl

@@ -0,0 +1,36 @@
+locals {
+  # If you want to use any of the variables in _this_ file, you have to load them here.
+  # However, they will all be available as inputs to the module loaded in terraform.source
+  # below.
+
+  environment_vars = read_terragrunt_config(find_in_parent_folders("env.hcl"))
+  partition_vars = read_terragrunt_config(find_in_parent_folders("partition.hcl"))
+  region_vars = read_terragrunt_config(find_in_parent_folders("region.hcl"))
+  account_vars = read_terragrunt_config(find_in_parent_folders("account.hcl"))
+  global_vars = read_terragrunt_config(find_in_parent_folders("globals.hcl"))
+}
+
+# Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
+# working directory, into a temporary folder, and execute your Terraform commands in that folder.
+terraform {
+  # Double slash is intentional and required to show root of modules
+  source = "git@github.xdr.accenturefederalcyber.com:mdr-engineering/xdr-terraform-modules.git//base/standard_iam?ref=v4.0.11"
+}
+
+# Include all settings from the root terragrunt.hcl file
+include {
+  path = find_in_parent_folders()
+}
+
+# These are the variables we have to pass in to use the module specified in the terragrunt source above
+inputs = {
+  # All of the inputs from the inherited hcl files are available automatically
+  # (via the `inputs` section of the root `terragrunt.hcl`). However, modules
+  # will be more flexible if you specify particular input values.
+  tags = {
+    Purpose   = "Standard IAM roles defined early"
+    Terraform = "aws/${basename(get_parent_terragrunt_dir())}/${path_relative_to_include()}/"
+  }
+}
+terraform_version_constraint = "= 1.1.6"
+terragrunt_version_constraint = "= 0.36.2"

+ 1 - 1
common/aws-us-gov/afs-mdr-common-services-gov/010-shared-ami-key/terragrunt.hcl

@@ -8,7 +8,7 @@ locals {
 
 terraform {
   # Double slash is intentional and required to show root of modules
-  source = "git@github.xdr.accenturefederalcyber.com:mdr-engineering/xdr-terraform-modules.git//base/shared_ami_key?ref=v4.0.1"
+  source = "git@github.xdr.accenturefederalcyber.com:mdr-engineering/xdr-terraform-modules.git//base/shared_ami_key?ref=v4.0.11"
 }
 
 include {

+ 1 - 1
common/aws-us-gov/afs-mdr-common-services-gov/075-codebuild-ecr-base/terragrunt.hcl

@@ -130,7 +130,7 @@ EOF
 # working directory, into a temporary folder, and execute your Terraform commands in that folder.
 terraform {
   # Double slash is intentional and required to show root of modules
-  source = "git@github.xdr.accenturefederalcyber.com:mdr-engineering/xdr-terraform-modules.git//base/codebuild_ecr_base?ref=v4.0.7"
+  source = "git@github.xdr.accenturefederalcyber.com:mdr-engineering/xdr-terraform-modules.git//base/codebuild_ecr_base?ref=v4.0.11"
 }
 
 # Include all settings from the root terragrunt.hcl file

+ 163 - 0
common/aws-us-gov/afs-mdr-common-services-gov/355-codebuild-xdr-base-image/terragrunt.hcl

@@ -0,0 +1,163 @@
+locals {
+  # If you want to use any of the variables in _this_ file, you have to load them here.
+  # However, they will all be available as inputs to the module loaded in terraform.source
+  # below.
+  environment_vars = read_terragrunt_config(find_in_parent_folders("env.hcl"))
+  partition_vars = read_terragrunt_config(find_in_parent_folders("partition.hcl"))
+  region_vars = read_terragrunt_config(find_in_parent_folders("region.hcl"))
+  account_vars = read_terragrunt_config(find_in_parent_folders("account.hcl"))
+  global_vars = read_terragrunt_config(find_in_parent_folders("globals.hcl"))
+
+  # Generate our standard tags
+  standard_tags = merge(
+    local.global_vars.locals.global_tags,
+    local.environment_vars.locals.environment_tags,
+    local.partition_vars.locals.partition_tags,
+    local.region_vars.locals.region_tags,
+    local.account_vars.locals.account_tags
+  )
+
+  # Extract the variables we need for easy access
+  account_name   = local.account_vars.locals.account_name
+  account_id     = local.account_vars.locals.aws_account_id
+  aws_region     = local.region_vars.locals.aws_region
+  aws_partition  = local.partition_vars.locals.aws_partition
+  common_services_account = local.partition_vars.locals.common_services_account
+  legacy_account = local.environment_vars.locals.legacy_account
+  tfstate_region = local.partition_vars.locals.tfstate_region
+
+  common_profile = local.partition_vars.locals.common_profile
+}
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Generate an AWS provider block
+# Temp fix to backlevel provider because of codebuild issue
+# <insert github link here to provider issue>
+# ---------------------------------------------------------------------------------------------------------------------
+generate "provider" {
+  path      = "provider.tf"
+  if_exists = "overwrite_terragrunt"
+  contents  = <<EOF
+provider "template" {
+}
+
+provider "aws" {
+  region = "${local.aws_region}"
+
+  assume_role {
+    role_arn = "arn:${local.aws_partition}:iam::${local.account_id}:role/user/mdr_terraformer"
+    session_name = "terraform-default"
+  }
+
+  profile = "${local.common_profile}"
+
+  # Only these AWS Account IDs may be operated on by this template
+  allowed_account_ids = ["${local.account_id}"]
+}
+
+# The "common" provider in the respective partition is always available
+provider "aws" {
+  region = "${local.aws_region}"
+  allowed_account_ids = [ "471284459109", "701290387780" ]
+  profile = "${local.common_profile}"
+  alias   = "common"
+
+  assume_role {
+    role_arn = "arn:${local.aws_partition}:iam::${local.common_services_account}:role/user/mdr_terraformer"
+    session_name = "terraform-common"
+  }
+}
+
+# The "mdr-common-services-commercial" provider is used for public DNS entries
+provider "aws" {
+  region = "us-east-1"
+  allowed_account_ids = [ "471284459109" ]
+  profile = "commercial"
+  alias   = "mdr-common-services-commercial"
+
+  assume_role {
+    role_arn = "arn:aws:iam::471284459109:role/user/mdr_terraformer"
+    session_name = "terraform-mdr-common-services-commercial"
+  }
+}
+
+# The "C2" provider, used for private DNS
+provider "aws" {
+  region = "us-gov-east-1"
+  allowed_account_ids = [ "721817724804", "738800754746" ]
+  profile = "govcloud"
+  alias   = "c2"
+  #use_fips_endpoint = true
+
+  assume_role {
+    role_arn = "arn:aws-us-gov:iam::${ local.environment_vars.locals.c2_accounts["aws-us-gov"] }:role/user/mdr_terraformer"
+    session_name = "terraform-c2"
+  }
+}
+EOF
+}
+
+
+#Github specific provider
+generate "required_providers" {
+  path      = "required_provider.tf"
+  if_exists = "overwrite_terragrunt"
+  contents  = <<EOF
+terraform {
+  required_providers {
+    aws = {
+      source = "hashicorp/aws"
+      version = "= 3.63.0" # 2022-03-08: upgrade from 3.63.0; 2021-09-21: upgrade from 3.37.0
+    }
+    vault = {
+      source = "hashicorp/vault"
+      version = "= 2.19.1" # 2021-04-29: upgrade from 2.18.0
+    }
+    sensu = {
+      source = "jtopjian/sensu"
+      version = "= 0.10.5"
+    }
+    github = {
+      source = "integrations/github"
+      version = "4.2.0"
+    }
+  }
+}
+EOF
+}
+
+# Terragrunt will copy the Terraform configurations specified by the source parameter, along with any files in the
+# working directory, into a temporary folder, and execute your Terraform commands in that folder.
+terraform {
+  # Double slash is intentional and required to show root of modules
+  source = "git@github.xdr.accenturefederalcyber.com:mdr-engineering/xdr-terraform-modules.git//base/codebuild_project_no_artifact?ref=v4.0.11"
+}
+
+# Include all settings from the root terragrunt.hcl file
+include {
+  path = find_in_parent_folders()
+}
+
+dependency "codebuild-ecr-base" {
+  config_path = "../075-codebuild-ecr-base"
+}
+
+# These are the variables we have to pass in to use the module specified in the terragrunt source above
+inputs = {
+  # All of the inputs from the inherited hcl files are available automatically
+  # (via the `inputs` section of the root `terragrunt.hcl`). However, modules
+  # will be more flexible if you specify particular input values.
+  tags = {
+    Purpose = "Build EC2 Base Image"
+    Terraform = "aws/${basename(get_parent_terragrunt_dir())}/${path_relative_to_include()}/"
+  }
+  name                    = "xdr-ec2-base-image"
+  service_role            = dependency.codebuild-ecr-base.outputs.service_role
+  kms_key                 = dependency.codebuild-ecr-base.outputs.kms_key
+  image                   = "701290387780.dkr.ecr.us-gov-east-1.amazonaws.com/codebuild-rhel7"
+  github_clone_url        = "https://github.xdr.accenturefederalcyber.com/mdr-engineering/xdr-images"
+  source_version          = "main"
+  buildspec               = "base/aws/buildspec.yml"
+}
+terraform_version_constraint = "= 1.1.6"
+terragrunt_version_constraint = "= 0.36.2"