diff --git a/examples/vpc-with-peering/main.tf b/examples/vpc-with-peering/main.tf index 003e4f7..a7eb6a5 100644 --- a/examples/vpc-with-peering/main.tf +++ b/examples/vpc-with-peering/main.tf @@ -12,11 +12,14 @@ locals { } module "vpc_peering" { - source = "squareops/vpc/aws//modules/vpc_peering" - accepter_name = local.accepter_name - accepter_vpc_id = local.accepter_vpc_id - accepter_vpc_region = local.accepter_region - requester_name = local.requester_name - requester_vpc_id = local.requester_vpc_id - requester_vpc_region = local.requester_region + source = "squareops/vpc/aws//modules/vpc_peering" + accepter_name = local.accepter_name + accepter_vpc_id = local.accepter_vpc_id + accepter_vpc_region = local.accepter_region + requester_name = local.requester_name + requester_vpc_id = local.requester_vpc_id + requester_vpc_region = local.requester_region + multi_account_enabled = false + requester_aws_profile = "" + accepter_aws_profile = "" } diff --git a/modules/vpc_peering/main.tf b/modules/vpc_peering/main.tf index 533721f..098fad4 100644 --- a/modules/vpc_peering/main.tf +++ b/modules/vpc_peering/main.tf @@ -4,13 +4,15 @@ locals { } provider "aws" { - alias = "peer" - region = var.requester_vpc_region + alias = "peer" + region = var.requester_vpc_region + profile = var.multi_account_enabled ? var.requester_aws_profile : "default" } provider "aws" { - alias = "accepter" - region = var.accepter_vpc_region + alias = "accepter" + region = var.accepter_vpc_region + profile = var.multi_account_enabled ? var.accepter_aws_profile : "default" } data "aws_vpc" "accepter" { @@ -33,13 +35,18 @@ data "aws_route_tables" "requester" { provider = aws.peer } +data "aws_caller_identity" "accepter" { + provider = aws.accepter +} + resource "aws_vpc_peering_connection" "this" { - count = var.peering_enabled ? 1 : 0 - vpc_id = var.requester_vpc_id - peer_vpc_id = var.accepter_vpc_id - peer_region = var.accepter_vpc_region - auto_accept = false - provider = aws.peer + count = var.peering_enabled ? 1 : 0 + vpc_id = var.requester_vpc_id + peer_vpc_id = var.accepter_vpc_id + peer_region = var.multi_account_enabled ? var.accepter_vpc_region : null + auto_accept = false + peer_owner_id = var.multi_account_enabled ? data.aws_caller_identity.accepter.id : null + provider = aws.peer tags = { Name = format("%s-%s-%s", var.requester_name, "to", var.accepter_name) } diff --git a/modules/vpc_peering/variables.tf b/modules/vpc_peering/variables.tf index 9865a10..6a3d4d6 100644 --- a/modules/vpc_peering/variables.tf +++ b/modules/vpc_peering/variables.tf @@ -39,3 +39,21 @@ variable "peering_enabled" { description = "Set this variable to true if you want to create the VPC peering connection. Set it to false if you want to skip the creation process." default = true } + +variable "multi_account_enabled" { + type = bool + description = "Set this variable to true if you want to create the VPC peering connection between reagions. Set it to false if you want to skip the creation process." + default = true +} + +variable "requester_aws_profile" { + type = string + description = "Provide the AWS profile where the requester VPC is located." + default = "" +} + +variable "accepter_aws_profile" { + type = string + description = "Provide the AWS profile where the accepter VPC is located." + default = "" +}