Skip to content

Commit

Permalink
Merge pull request #3 from confusdcodr/t12
Browse files Browse the repository at this point in the history
Upgrade to terraform 0.12.x
  • Loading branch information
confusdcodr authored Sep 11, 2019
2 parents 8f972f1 + 8503a24 commit e57a763
Show file tree
Hide file tree
Showing 22 changed files with 288 additions and 78 deletions.
3 changes: 2 additions & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[bumpversion]
current_version = 0.0.0
current_version = 1.0.0
commit = True
message = Bumps version to {new_version}
tag = False
tag_name = {new_version}

20 changes: 20 additions & 0 deletions .dependabot/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,23 @@ update_configs:
- package_manager: "terraform"
directory: "/"
update_schedule: "daily"

- package_manager: "terraform"
directory: "/tests/no_endpoints"
update_schedule: "daily"

- package_manager: "terraform"
directory: "/tests/config_endpoint"
update_schedule: "daily"

- package_manager: "terraform"
directory: "/tests/multiple_endpoints"
update_schedule: "daily"

- package_manager: "terraform"
directory: "/tests/no_create"
update_schedule: "daily"

- package_manager: "go:modules"
directory: "/tests"
update_schedule: "daily"
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,22 @@ insert_final_newline = true
indent_style = space
indent_size = 2
charset = utf-8
tab_width = 4

[*.md]
trim_trailing_whitespace = false

[*.py]
indent_size = 4

[go.mod]
indent_style = tab
indent_size = 1

[*.go]
indent_style = tab
indent_size = 1

[Makefile]
indent_style = tab
indent_size = 1
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).

### 1.0.0

**Released**: 2019.09.11

**Commit Delta**: [Change from 0.0.0 release](https://github.com/plus3it/terraform-aws-tardigrade-vpc-endpoints/compare/0.0.0...1.0.0)

**Summary**:

* Upgrade to terraform 0.12.x
* Add test cases

### 0.0.0

**Commit Delta**: N/A
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 2019 Maintainers of plus3it/terraform-aws-tardigrade-vpc-endpoints

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
24 changes: 15 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -100,24 +100,30 @@ json/format: | guard/program/jq
$(FIND_JSON) | $(XARGS) bash -c 'echo "$$(jq --indent 4 -S . "{}")" > "{}"'
@ echo "[$@]: Successfully formatted JSON files!"

docs/%: README_PARTS := _docs/MAIN.md <(echo) <(terraform-docs markdown table .)
tfdocs-awk/install: $(BIN_DIR)
tfdocs-awk/install: ARCHIVE := https://github.com/plus3it/tfdocs-awk/archive/master.tar.gz
tfdocs-awk/install:
$(CURL) $(ARCHIVE) | tar -C $(BIN_DIR) --strip-components=1 --wildcards '*.sh' --wildcards '*.awk' -xzvf -

docs/%: README_PARTS := _docs/MAIN.md <(echo) <($(BIN_DIR)/terraform-docs.sh markdown table .)
docs/%: README_FILE ?= README.md

docs/lint: | guard/program/terraform-docs
docs/lint: | guard/program/terraform-docs tfdocs-awk/install
@ echo "[$@]: Linting documentation files.."
diff $(README_FILE) <(cat $(README_PARTS))
@ echo "[$@]: Documentation files PASSED lint test!"

docs/generate: | guard/program/terraform-docs
docs/generate: | guard/program/terraform-docs tfdocs-awk/install
@ echo "[$@]: Creating documentation files.."
cat $(README_PARTS) > $(README_FILE)
@ echo "[$@]: Documentation files creation complete!"

dep/install: guard/program/curl
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh

terratest/install: | guard/program/go guard/program/dep
cd tests && dep ensure
terratest/install: | guard/program/go
cd tests && go mod init terraform-aws-tardigrade-vpc-endpoints/tests
cd tests && go build ./...
cd tests && go mod tidy

terratest/test: | guard/program/go guard/program/dep
terratest/test: | guard/program/go
cd tests && go test -timeout 20m

test: terratest/test
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Terraform module to create VPC Endpoints

| Name | Description | Type | Default | Required |
|------|-------------|:----:|:-----:|:-----:|
| create\_vpc\_endpoints | toggle to create vpc endpoints | string | `"false"` | no |
| subnet\_ids | target subnet ids | list | `<list>` | no |
| tags | A map of tags to add to the VPC endpoint SG | map | `<map>` | no |
| vpc\_endpoint\_interfaces | List of aws api endpoints that are used to create VPC Interface endpoints. See https://docs.aws.amazon.com/general/latest/gr/rande.html for full list. | list | `<list>` | no |
| create\_vpc\_endpoints | toggle to create vpc endpoints | string | `"true"` | no |
| subnet\_ids | target subnet ids | list(string) | `<list>` | no |
| tags | A map of tags to add to the VPC endpoint SG | map(string) | `<map>` | no |
| vpc\_endpoint\_interfaces | List of aws api endpoints that are used to create VPC Interface endpoints. See https://docs.aws.amazon.com/general/latest/gr/rande.html for full list. | list(string) | `<list>` | no |

33 changes: 16 additions & 17 deletions main.tf
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
data "aws_subnet" "selected" {
count = "${var.create_vpc_endpoints ? 1 : 0}"
count = var.create_vpc_endpoints ? 1 : 0

id = "${var.subnet_ids[0]}"
id = var.subnet_ids[0]
}

data "aws_vpc" "selected" {
count = "${var.create_vpc_endpoints ? 1 : 0}"
count = var.create_vpc_endpoints ? 1 : 0

id = "${local.vpc_id}"
id = local.vpc_id
}

locals {
vpc_id = "${join("", data.aws_subnet.selected.*.vpc_id)}"
vpc_cidr = "${join("", data.aws_vpc.selected.*.cidr_block)}"
vpc_id = join("", data.aws_subnet.selected.*.vpc_id)
vpc_cidr = join("", data.aws_vpc.selected.*.cidr_block)
}

resource "aws_security_group" "this" {
count = "${var.create_vpc_endpoints ? 1 : 0}"
count = var.create_vpc_endpoints ? 1 : 0

description = "VPC Interface Endpoints - Allow inbound from ${local.vpc_id} and allow all outbound"
vpc_id = "${local.vpc_id}"
vpc_id = local.vpc_id

ingress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["${local.vpc_cidr}"]
cidr_blocks = [local.vpc_cidr]
}

egress {
Expand All @@ -35,24 +35,23 @@ resource "aws_security_group" "this" {
cidr_blocks = ["0.0.0.0/0"]
}

tags = "${var.tags}"
tags = var.tags
}

resource "aws_vpc_endpoint" "interface_services" {
count = "${var.create_vpc_endpoints ? length(var.vpc_endpoint_interfaces) : 0}"
count = var.create_vpc_endpoints ? length(var.vpc_endpoint_interfaces) : 0

vpc_id = "${local.vpc_id}"
service_name = "${var.vpc_endpoint_interfaces[count.index]}"
vpc_id = local.vpc_id
service_name = var.vpc_endpoint_interfaces[count.index]
vpc_endpoint_type = "Interface"
auto_accept = true

subnet_ids = [
"${var.subnet_ids}",
]
subnet_ids = var.subnet_ids

security_group_ids = [
"${aws_security_group.this.id}",
aws_security_group.this[0].id,
]

private_dns_enabled = true # https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-private-dns
}

35 changes: 35 additions & 0 deletions tests/config_endpoint/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
provider aws {
region = "us-east-1"
}

resource "random_string" "this" {
length = 6
upper = false
special = false
number = false
}

module "vpc" {
source = "github.com/terraform-aws-modules/terraform-aws-vpc?ref=v2.15.0"
providers = {
aws = aws
}

name = "tardigrade-vpc-endpoints-${random_string.this.result}"
cidr = "10.0.0.0/16"
azs = ["us-east-1a", "us-east-1b"]
private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
enable_dns_hostnames = true
enable_dns_support = true
}

module "config_endpoint" {
source = "../../"
providers = {
aws = aws
}

create_vpc_endpoints = true
vpc_endpoint_interfaces = ["com.amazonaws.us-east-1.config"]
subnet_ids = module.vpc.private_subnets
}
3 changes: 3 additions & 0 deletions tests/config_endpoint/versions.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
terraform {
required_version = ">= 0.12"
}
7 changes: 0 additions & 7 deletions tests/example_testcase/main.tf

This file was deleted.

11 changes: 11 additions & 0 deletions tests/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module terraform-aws-tardigrade-vpc-endpoints/tests

go 1.12

require (
github.com/gruntwork-io/terratest v0.18.6
github.com/magiconair/properties v1.8.1 // indirect
github.com/stretchr/testify v1.4.0 // indirect
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 // indirect
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect
)
25 changes: 25 additions & 0 deletions tests/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gruntwork-io/terratest v0.18.6 h1:6LQeJC7O3NErZLv7MNRUuUuFtlekg3z8rYSwOqtJ6ws=
github.com/gruntwork-io/terratest v0.18.6/go.mod h1:NjUn6YXA5Skxt8Rs20t3isYx5Rl+EgvGB8/+RRXddqk=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 h1:Gv7RPwsi3eZ2Fgewe3CBsuOebPwO27PoXzRpJPsvSSM=
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
68 changes: 34 additions & 34 deletions tests/module_test.go
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
package testing

import (
"io/ioutil"
"log"
"os"
"testing"
"io/ioutil"
"log"
"os"
"testing"

"github.com/gruntwork-io/terratest/modules/terraform"
"github.com/gruntwork-io/terratest/modules/terraform"
)

func TestModule(t *testing.T) {
files, err := ioutil.ReadDir("./")

if err != nil {
log.Fatal(err)
}

for _, f := range files {
// look for directories with test cases in it
if f.IsDir() && f.Name() != "vendor" {
investigateDirectory(t, f)
}
}
files, err := ioutil.ReadDir("./")

if err != nil {
log.Fatal(err)
}

for _, f := range files {
// look for directories with test cases in it
if f.IsDir() && f.Name() != "vendor" {
investigateDirectory(t, f)
}
}
}

func investigateDirectory(t *testing.T, directory os.FileInfo) {
// check if a prereq directory exists
prereqDir := directory.Name() + "/prereq/"
if _, err := os.Stat(prereqDir); err == nil {
prereqOptions := createTerraformOptions(prereqDir)
defer terraform.Destroy(t, prereqOptions)
terraform.InitAndApply(t, prereqOptions)
}

// run terraform code for test case
terraformOptions := createTerraformOptions(directory.Name())
defer terraform.Destroy(t, terraformOptions)
terraform.InitAndApply(t, terraformOptions)
// check if a prereq directory exists
prereqDir := directory.Name() + "/prereq/"
if _, err := os.Stat(prereqDir); err == nil {
prereqOptions := createTerraformOptions(prereqDir)
defer terraform.Destroy(t, prereqOptions)
terraform.InitAndApply(t, prereqOptions)
}

// run terraform code for test case
terraformOptions := createTerraformOptions(directory.Name())
defer terraform.Destroy(t, terraformOptions)
terraform.InitAndApply(t, terraformOptions)
}

func createTerraformOptions(directory string) *terraform.Options {
terraformOptions := &terraform.Options{
TerraformDir: directory,
NoColor: true,
}
terraformOptions := &terraform.Options{
TerraformDir: directory,
NoColor: true,
}

return terraformOptions
return terraformOptions
}
Loading

0 comments on commit e57a763

Please sign in to comment.