· 9 years ago · Dec 30, 2016, 08:12 PM
1vpc_peering.tf:
2data "terraform_remote_state" "vpc_mgmt" {
3 backend = "consul"
4 config {
5 address = "consul.demo.net"
6 path = "${var.team}/${var.region}/mgmt/vpc-mgmt"
7 scheme = "https"
8 }
9}
10
11data "terraform_remote_state" "vpc_qa" {
12 backend = "consul"
13 config {
14 address = "consul.demo.net"
15 path = "${var.team}/${var.region}/qa/vpc-qa"
16 scheme = "https"
17 }
18}
19
20module "use1_mgmt_to_qa_vpc_peering" {
21 source = "terraform-modules//vpc_peering"
22 vpc_peering_name = "mgmt-to-qa-us-east-1"
23 vpc_peering_owner = "demo"
24 dest_cidr_block = "${data.terraform_remote_state.vpc_qa.vpc_cidr_block}"
25 dest_vpc_id = "${data.terraform_remote_state.vpc_qa.vpc_id}"
26 src_cidr_block = "${data.terraform_remote_state.vpc_mgmt.vpc_cidr_block}"
27 src_vpc_id = "${data.terraform_remote_state.vpc_mgmt.vpc_id}"
28
29 dest_public_route_table_id = "${data.terraform_remote_state.vpc_qa.public_route_table_id}"
30 dest_nat_route_table_ids = "${data.terraform_remote_state.vpc_qa.nat_route_table_ids}"
31
32 src_public_route_table_id = "${data.terraform_remote_state.vpc_mgmt.public_route_table_id}"
33 src_nat_route_table_ids = "${data.terraform_remote_state.vpc_mgmt.nat_route_table_ids}"
34
35 access_key = "${var.access_key}"
36 secret_key = "${var.secret_key}"
37 region = "${var.region}"
38}
39
40vpc_peering module main.tf:
41provider "aws" {
42 access_key = "${var.access_key}"
43 secret_key = "${var.secret_key}"
44 region = "${var.region}"
45}
46
47resource "aws_vpc_peering_connection" "vpc_peering_connection" {
48 peer_vpc_id = "${var.dest_vpc_id}"
49 vpc_id = "${var.src_vpc_id}"
50 auto_accept = true
51 accepter {
52 allow_remote_vpc_dns_resolution = true
53 }
54 requester {
55 allow_remote_vpc_dns_resolution = true
56 }
57 tags {
58 Name = "${var.vpc_peering_name}"
59 Owner = "${var.vpc_peering_owner}"
60 }
61}
62
63# Source route additions
64resource "aws_route" "public_src_to_dest_public_route" {
65 destination_cidr_block = "${var.dest_cidr_block}"
66 route_table_id = "${var.src_public_route_table_id}"
67 vpc_peering_connection_id = "${aws_vpc_peering_connection.vpc_peering_connection.id}"
68}
69
70resource "aws_route" "public_src_to_dest_nat_route" {
71 count = "${length(split(",", var.src_nat_route_table_ids))}"
72 destination_cidr_block = "${var.dest_cidr_block}"
73 route_table_id = "${element(split(",", var.src_nat_route_table_ids), count.index)}"
74 vpc_peering_connection_id = "${aws_vpc_peering_connection.vpc_peering_connection.id}"
75}
76
77# Destination route additions
78resource "aws_route" "public_dest_to_src_public_route" {
79 destination_cidr_block = "${var.src_cidr_block}"
80 route_table_id = "${var.dest_public_route_table_id}"
81 vpc_peering_connection_id = "${aws_vpc_peering_connection.vpc_peering_connection.id}"
82}
83
84resource "aws_route" "public_dest_to_src_nat_route" {
85 count = "${length(split(",", var.dest_nat_route_table_ids))}"
86 destination_cidr_block = "${var.src_cidr_block}"
87 route_table_id = "${element(split(",", var.dest_nat_route_table_ids), count.index)}"
88 vpc_peering_connection_id = "${aws_vpc_peering_connection.vpc_peering_connection.id}"
89}
90
91.... run a plan
92Error configuring: 2 error(s) occurred:
93
94* aws_route.public_dest_to_src_nat_route: value of 'count' cannot be computed
95* aws_route.public_src_to_dest_nat_route: value of 'count' cannot be computed