Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/103 submodules #116

Merged
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
dedcf4c
fix makefile
taylorludwig Nov 25, 2019
0a135c0
move vpc creation to its own module
taylorludwig Nov 25, 2019
987b4e4
move subnets to own module
taylorludwig Nov 25, 2019
28a26a2
move routes to its own submodule
taylorludwig Nov 25, 2019
211a516
use for_each for route creation
taylorludwig Nov 25, 2019
2dd1fad
update developer tools version to fix generate doc errors
taylorludwig Nov 25, 2019
6e0faef
generate docs
taylorludwig Nov 25, 2019
2c8ed09
add readme to submodules
taylorludwig Nov 25, 2019
f566110
formatting fix
taylorludwig Nov 25, 2019
f3e5e99
changelog
taylorludwig Nov 25, 2019
605269a
lock provider for google_project_services removal error
taylorludwig Nov 25, 2019
3a3a408
specify provider versions for each module for terraform init/validate
taylorludwig Nov 25, 2019
fec8285
Revert "specify provider versions for each module for terraform init/…
taylorludwig Nov 25, 2019
560bbb2
required provider versions on modules
taylorludwig Nov 25, 2019
fc02b37
Update CHANGELOG.md
taylorludwig Nov 25, 2019
188bf1c
remove compatability from submodules
taylorludwig Nov 26, 2019
2831941
update variable descriptions
taylorludwig Nov 26, 2019
8649e43
switch routes back to list type with map generated within module
taylorludwig Nov 26, 2019
d567d89
default rotue values to null so google_compute_route defaults are used
taylorludwig Nov 26, 2019
b5b9ad8
update output names per pr
taylorludwig Nov 26, 2019
e95a6b7
switch shared_vpc_host to bool
taylorludwig Nov 26, 2019
a351412
simpler way to return project id for shared vpc
taylorludwig Nov 26, 2019
4146283
update changelog and readme for list structure
taylorludwig Nov 26, 2019
c9a6090
fix terraform fmt issues
taylorludwig Nov 26, 2019
db0448e
name isn't required anymore
taylorludwig Nov 26, 2019
84119a8
default output needs to be to match original value so tests and back…
taylorludwig Nov 26, 2019
babfafa
fix readme examples
taylorludwig Nov 26, 2019
6b10555
remove unused leftover var
taylorludwig Nov 26, 2019
f0443f7
remove network var for route depedency. Its inherit by passing in net…
taylorludwig Nov 26, 2019
f86ad43
remove description
taylorludwig Nov 26, 2019
2f6aee7
rename svpc_project_id to project_id
taylorludwig Nov 26, 2019
6e7ffd1
use a module_depends_on list instead of using explicit subnet
taylorludwig Nov 26, 2019
da5372d
lint/validate fixes
taylorludwig Nov 26, 2019
7ec22d8
initial migrate.py from gke module
taylorludwig Nov 27, 2019
99a3819
update migrate.py to work with google-network resources and for_each …
taylorludwig Nov 27, 2019
69615da
remove old sh migrate script
taylorludwig Nov 27, 2019
2d4027a
update readme for new py migrate script
taylorludwig Nov 27, 2019
3afde82
python format
taylorludwig Nov 27, 2019
9342a26
update migration doc to mention issue with single count mvs
taylorludwig Dec 2, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ suites:
customized_inspec_attribute: output_subnets_private_access
customized_inspec_attribute: output_subnets_regions
customized_inspec_attribute: output_subnets_secondary_ranges
customized_inspec_attribute: output_svpc_host_project_id
customized_inspec_attribute: output_project_id


backend: local
Expand Down Expand Up @@ -131,7 +131,7 @@ suites:
customized_inspec_attribute: output_subnets_private_access
customized_inspec_attribute: output_subnets_regions
customized_inspec_attribute: output_subnets_secondary_ranges
customized_inspec_attribute: output_svpc_host_project_id
customized_inspec_attribute: output_project_id
backend: local
controls:
- gcloud
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning][semver-site].
## [Unreleased]
v2.0.0 is a backwards-incompatible release. Please see the [upgrading guide](./docs/upgrading_to_v2.0.md).

### Added

- Split main module up into vpc, subnets, and routes submodules. [#103]

### Fixed

- Fixes subnet recreation when a subnet is updated. [#73]
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# Make will use bash instead of sh
SHELL := /usr/bin/env bash

DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 0.1.0
DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 0.6.0
DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools
REGISTRY_URL := gcr.io/cloud-foundation-cicd

Expand All @@ -42,7 +42,7 @@ docker_test_prepare:

# Clean up test environment within the docker container
.PHONY: docker_test_cleanup
docker_test_prepare:
docker_test_cleanup:
docker run --rm -it \
-e SERVICE_ACCOUNT_JSON \
-e TF_VAR_org_id \
Expand Down
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ It supports creating:
- Subnets within the VPC
- Secondary ranges for the subnets (if applicable)

Sub modules are provided for creating individual vpc, subnets, and routes. See the modules directory for the various sub modules usage.

## Compatibility

This module is meant for use with Terraform 0.12. If you haven't [upgraded](https://www.terraform.io/upgrade-guides/0-12.html) and need a Terraform 0.11.x-compatible version of this module, the last released version intended for Terraform 0.11.x is [0.8.0](https://registry.terraform.io/modules/terraform-google-modules/network/google/0.8.0).
Expand Down Expand Up @@ -100,7 +102,7 @@ Then perform the following commands on the root folder:
| routes | List of routes being created in this VPC | list(map(string)) | `<list>` | no |
| routing\_mode | The network routing mode (default 'GLOBAL') | string | `"GLOBAL"` | no |
| secondary\_ranges | Secondary ranges that will be used in some of the subnets | object | `<map>` | no |
| shared\_vpc\_host | Makes this project a Shared VPC host if 'true' (default 'false') | string | `"false"` | no |
| shared\_vpc\_host | Makes this project a Shared VPC host if 'true' (default 'false') | bool | `"false"` | no |
| subnets | The list of subnets being created | list(map(string)) | n/a | yes |

## Outputs
Expand All @@ -109,19 +111,20 @@ Then perform the following commands on the root folder:
|------|-------------|
| network\_name | The name of the VPC being created |
| network\_self\_link | The URI of the VPC being created |
| routes | The routes associated with this VPC |
| project\_id | VPC project id |
| route\_names | The route names associated with this VPC |
| subnets\_flow\_logs | Whether the subnets will have VPC flow logs enabled |
| subnets\_ips | The IPs and CIDRs of the subnets being created |
| subnets\_names | The names of the subnets being created |
| subnets\_private\_access | Whether the subnets will have access to Google API's without a public IP |
| subnets\_regions | The region where the subnets will be created |
| subnets\_secondary\_ranges | The secondary ranges associated with these subnets |
| subnets\_self\_links | The self-links of subnets being created |
| svpc\_host\_project\_id | Shared VPC host project id. |

<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->

### Subnet Inputs

The subnets list contains maps, where each object represents a subnet. Each map has the following inputs (please see examples folder for additional references):

| Name | Description | Type | Default | Required |
Expand All @@ -133,7 +136,8 @@ The subnets list contains maps, where each object represents a subnet. Each map
| subnet\_flow\_logs | Whether the subnet will record and send flow log data to logging | string | `"false"` | no |

### Route Inputs
The routes list contains maps, where each object represents a route. For the next\_hop\_* inputs, only one is possible to be used in each route. Having two next_hop_* inputs will produce an error. Each map has the following inputs (please see examples folder for additional references):

The routes list contains maps, where each object represents a route. For the next_hop_* inputs, only one is possible to be used in each route. Having two next_hop_* inputs will produce an error. Each map has the following inputs (please see examples folder for additional references):

| Name | Description | Type | Default | Required |
|------|-------------|:----:|:-----:|:-----:|
Expand Down
2 changes: 1 addition & 1 deletion build/int.cloudbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ tags:
- 'integration'
substitutions:
_DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools'
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.1.0'
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.6.0'
2 changes: 1 addition & 1 deletion build/lint.cloudbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ tags:
- 'lint'
substitutions:
_DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools'
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.1.0'
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.6.0'
36 changes: 28 additions & 8 deletions docs/upgrading_to_v2.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,26 +125,46 @@ actions need to be performed.
1. Download the script

```sh
curl -O https://raw.githubusercontent.com/terraform-google-modules/terraform-google-network/master/helpers/migrate.sh
chmod +x migrate.sh
curl -O https://raw.githubusercontent.com/terraform-google-modules/terraform-google-network/master/helpers/migrate.py
chmod +x migrate.py
```

2. Run the script to output the migration commands:

```sh
$ ./migrate.sh --dry-run
terraform state mv module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[0] module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[\"us-west1/simple-project-timh-subnet-01\"]
terraform state mv module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[1] module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[\"us-west1/simple-project-timh-subnet-02\"]
$ ./migrate.py --dry-run
terraform state mv 'module.example.module.test-vpc-module-02.google_compute_network.network[0]' 'module.example.module.test-vpc-module-02.module.vpc.google_compute_network.network'
terraform state mv 'module.example.module.test-vpc-module-02.google_compute_subnetwork.subnetwork' 'module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork'
terraform state mv 'module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork[0]' 'module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork["us-west1/multi-vpc-a1-02-subnet-01"]'
terraform state mv 'module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork[1]' 'module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork["us-west1/multi-vpc-a1-02-subnet-02"]'
terraform state mv 'module.example.module.test-vpc-module-02.google_compute_route.route' 'module.example.module.test-vpc-module-02.module.routes.google_compute_route.route'
terraform state mv 'module.example.module.test-vpc-module-02.module.routes.google_compute_route.route[0]' 'module.example.module.test-vpc-module-02.module.routes.google_compute_route.route["multi-vpc-a1-02-egress-inet"]'
terraform state mv 'module.example.module.test-vpc-module-02.module.routes.google_compute_route.route[1]' 'module.example.module.test-vpc-module-02.module.routes.google_compute_route.route["multi-vpc-a1-02-testapp-proxy"]'

```

3. Execute the migration command

```sh
$ ./migrate.sh
Move "module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[0]" to "module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[\"us-west1/simple-project-timh-subnet-01\"]"
$ ./migrate.py
---- Migrating the following modules:
-- module.example.module.test-vpc-module-02
---- Commands to run:
Move "module.example.module.test-vpc-module-02.google_compute_network.network[0]" to "module.example.module.test-vpc-module-02.module.vpc.google_compute_network.network"
Successfully moved 1 object(s).
Move "module.example.module.test-vpc-module-02.google_compute_subnetwork.subnetwork" to "module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork"
Successfully moved 1 object(s).
Move "module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork[0]" to "module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork[\"us-west1/multi-vpc-a1-02-subnet-01\"]"
Successfully moved 1 object(s).
Move "module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork[1]" to "module.example.module.test-vpc-module-02.module.subnets.google_compute_subnetwork.subnetwork[\"us-west1/multi-vpc-a1-02-subnet-02\"]"
Successfully moved 1 object(s).
Move "module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[1]" to "module.example.module.test-vpc-module.google_compute_subnetwork.subnetwork[\"us-west1/simple-project-timh-subnet-02\"]"
Move "module.example.module.test-vpc-module-02.google_compute_route.route" to "module.example.module.test-vpc-module-02.module.routes.google_compute_route.route"
Successfully moved 1 object(s).
Move "module.example.module.test-vpc-module-02.module.routes.google_compute_route.route[0]" to "module.example.module.test-vpc-module-02.module.routes.google_compute_route.route[\"multi-vpc-a1-02-egress-inet\"]"
Successfully moved 1 object(s).
Move "module.example.module.test-vpc-module-02.module.routes.google_compute_route.route[1]" to "module.example.module.test-vpc-module-02.module.routes.google_compute_route.route[\"multi-vpc-a1-02-testapp-proxy\"]"
Successfully moved 1 object(s).

```

4. Run `terraform plan` to confirm no changes are expected.
2 changes: 1 addition & 1 deletion examples/delete_default_gateway_routes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ This VPC has a single subnet with no secondary ranges, and ensures the default i
|------|-------------|
| network\_name | The name of the VPC being created |
| network\_self\_link | The URI of the VPC being created |
| routes | The routes associated with this VPC |
| route\_names | The routes associated with this VPC |
| subnets\_flow\_logs | Whether the subnets will have VPC flow logs enabled |
| subnets\_ips | The IP and cidrs of the subnets being created |
| subnets\_names | The names of the subnets being created |
Expand Down
4 changes: 2 additions & 2 deletions examples/delete_default_gateway_routes/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ output "subnets_secondary_ranges" {
description = "The secondary ranges associated with these subnets"
}

output "routes" {
value = module.test-vpc-module.routes
output "route_names" {
value = module.test-vpc-module.route_names
description = "The routes associated with this VPC"
}
4 changes: 2 additions & 2 deletions examples/multi_vpc/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ output "network_01_subnets_secondary_ranges" {
}

output "network_01_routes" {
value = module.test-vpc-module-01.routes
value = module.test-vpc-module-01.route_names
description = "The routes associated with network-01"
}

Expand Down Expand Up @@ -102,6 +102,6 @@ output "network_02_subnets_secondary_ranges" {
}

output "network_02_routes" {
value = module.test-vpc-module-02.routes
value = module.test-vpc-module-02.route_names
description = "The routes associated with network-02"
}
4 changes: 2 additions & 2 deletions examples/secondary_ranges/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ ranges and the third being given a single secondary range.
|------|-------------|
| network\_name | The name of the VPC being created |
| network\_self\_link | The URI of the VPC being created |
| routes | The routes associated with this VPC |
| project\_id | VPC project id |
| route\_names | The routes associated with this VPC |
| subnets\_flow\_logs | Whether the subnets will have VPC flow logs enabled |
| subnets\_ips | The IP and cidrs of the subnets being created |
| subnets\_names | The names of the subnets being created |
| subnets\_private\_access | Whether the subnets will have access to Google API's without a public IP |
| subnets\_regions | The region where subnets will be created |
| subnets\_secondary\_ranges | The secondary ranges associated with these subnets |
| svpc\_host\_project\_id | Shared VPC host project id. |

<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
10 changes: 5 additions & 5 deletions examples/secondary_ranges/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ output "network_self_link" {
description = "The URI of the VPC being created"
}

output "svpc_host_project_id" {
value = module.vpc-secondary-ranges.svpc_host_project_id
description = "Shared VPC host project id."
output "project_id" {
value = module.vpc-secondary-ranges.project_id
description = "VPC project id"
}

output "subnets_names" {
Expand Down Expand Up @@ -59,7 +59,7 @@ output "subnets_secondary_ranges" {
description = "The secondary ranges associated with these subnets"
}

output "routes" {
value = module.vpc-secondary-ranges.routes
output "route_names" {
value = module.vpc-secondary-ranges.route_names
description = "The routes associated with this VPC"
}
4 changes: 2 additions & 2 deletions examples/simple_project/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ This VPC has two subnets, with no secondary ranges.
|------|-------------|
| network\_name | The name of the VPC being created |
| network\_self\_link | The URI of the VPC being created |
| routes | The routes associated with this VPC |
| project\_id | VPC project id |
| route\_names | The routes associated with this VPC |
| subnets\_flow\_logs | Whether the subnets will have VPC flow logs enabled |
| subnets\_ips | The IP and cidrs of the subnets being created |
| subnets\_names | The names of the subnets being created |
| subnets\_private\_access | Whether the subnets will have access to Google API's without a public IP |
| subnets\_regions | The region where subnets will be created |
| subnets\_secondary\_ranges | The secondary ranges associated with these subnets |
| svpc\_host\_project\_id | Shared VPC host project id. |

<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
10 changes: 5 additions & 5 deletions examples/simple_project/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ output "network_self_link" {
description = "The URI of the VPC being created"
}

output "svpc_host_project_id" {
value = module.test-vpc-module.svpc_host_project_id
description = "Shared VPC host project id."
output "project_id" {
value = module.test-vpc-module.project_id
description = "VPC project id"
}

output "subnets_names" {
Expand Down Expand Up @@ -59,7 +59,7 @@ output "subnets_secondary_ranges" {
description = "The secondary ranges associated with these subnets"
}

output "routes" {
value = module.test-vpc-module.routes
output "route_names" {
value = module.test-vpc-module.route_names
description = "The routes associated with this VPC"
}
4 changes: 2 additions & 2 deletions examples/simple_project_with_regional_network/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ This VPC has two subnets, with no secondary ranges.
|------|-------------|
| network\_name | The name of the VPC being created |
| network\_self\_link | The URI of the VPC being created |
| routes | The routes associated with this VPC |
| project\_id | VPC project id |
| route\_names | The routes associated with this VPC |
| subnets\_flow\_logs | Whether the subnets will have VPC flow logs enabled |
| subnets\_ips | The IP and cidrs of the subnets being created |
| subnets\_names | The names of the subnets being created |
| subnets\_private\_access | Whether the subnets will have access to Google API's without a public IP |
| subnets\_regions | The region where subnets will be created |
| subnets\_secondary\_ranges | The secondary ranges associated with these subnets |
| svpc\_host\_project\_id | Shared VPC host project id. |

<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
10 changes: 5 additions & 5 deletions examples/simple_project_with_regional_network/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ output "network_self_link" {
description = "The URI of the VPC being created"
}

output "svpc_host_project_id" {
value = module.test-vpc-module.svpc_host_project_id
description = "Shared VPC host project id."
output "project_id" {
value = module.test-vpc-module.project_id
description = "VPC project id"
}

output "subnets_names" {
Expand Down Expand Up @@ -59,7 +59,7 @@ output "subnets_secondary_ranges" {
description = "The secondary ranges associated with these subnets"
}

output "routes" {
value = module.test-vpc-module.routes
output "route_names" {
value = module.test-vpc-module.route_names
description = "The routes associated with this VPC"
}
4 changes: 2 additions & 2 deletions examples/submodule_firewall/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ This VPC has two subnets, with no secondary ranges.
| internal\_ranges | Firewall attributes for internal ranges. |
| network\_name | The name of the VPC being created |
| network\_self\_link | The URI of the VPC being created |
| routes | The routes associated with this VPC |
| project\_id | VPC project id |
| route\_names | The routes associated with this VPC |
| subnets\_flow\_logs | Whether the subnets will have VPC flow logs enabled |
| subnets\_ips | The IP and cidrs of the subnets being created |
| subnets\_names | The names of the subnets being created |
| subnets\_private\_access | Whether the subnets will have access to Google API's without a public IP |
| subnets\_regions | The region where subnets will be created |
| subnets\_secondary\_ranges | The secondary ranges associated with these subnets |
| svpc\_host\_project\_id | Shared VPC host project id. |

<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
10 changes: 5 additions & 5 deletions examples/submodule_firewall/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ output "network_self_link" {
description = "The URI of the VPC being created"
}

output "svpc_host_project_id" {
value = module.test-vpc-module.svpc_host_project_id
description = "Shared VPC host project id."
output "project_id" {
value = module.test-vpc-module.project_id
description = "VPC project id"
}

output "subnets_names" {
Expand Down Expand Up @@ -69,7 +69,7 @@ output "subnets_secondary_ranges" {
description = "The secondary ranges associated with these subnets"
}

output "routes" {
value = module.test-vpc-module.routes
output "route_names" {
value = module.test-vpc-module.route_names
description = "The routes associated with this VPC"
}
4 changes: 2 additions & 2 deletions examples/submodule_svpc_access/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ module "net-vpc-shared" {
source = "../.."
project_id = var.host_project_id
network_name = var.network_name
shared_vpc_host = "true"
shared_vpc_host = true

subnets = [
{
Expand All @@ -43,7 +43,7 @@ module "net-vpc-shared" {

module "net-svpc-access" {
source = "../../modules/fabric-net-svpc-access"
host_project_id = module.net-vpc-shared.svpc_host_project_id
host_project_id = module.net-vpc-shared.project_id
service_project_num = 1
service_project_ids = [var.service_project_id]
host_subnets = ["data"]
Expand Down
Loading