This terraform module creates set of Security Group and Security Group Rules resources in various combinations.
## Prerequisites
This module has a few dependencies:
- Terraform 0.13
- Go
- github.com/stretchr/testify/assert
- github.com/gruntwork-io/terratest/modules/terraform
IMPORTANT: Since the master
branch used in source
varies based on new modifications, we suggest that you use the release versions here.
Here is an example of how you can use this module in your inventory structure:
# use this
module "security_group" {
source = "devops4mecode/security-group/aws"
version = "1.0.0"
name = "security-group"
application = "devops4me"
environment = "test"
protocol = "tcp"
label_order = ["environment", "application", "name"]
vpc_id = "vpc-xxxxxxxxx"
allowed_ip = ["172.16.0.0/16", "10.0.0.0/16"]
allowed_ipv6 = ["2405:201:5e00:3684:cd17:9397:5734:a167/128"]
allowed_ports = [22, 27017]
}
Name | Description | Type | Default | Required |
---|---|---|---|---|
allowed_ip | List of allowed ip. | list |
[] |
no |
allowed_ipv6 | List of allowed ipv6. | list |
[] |
no |
allowed_ports | List of allowed ingress ports. | list |
[] |
no |
application | Application (e.g. do4m or devops4me ). |
string |
"" |
no |
description | The security group description. | string |
"Instance default security group (only egress access is allowed)." |
no |
enable_security_group | Enable default Security Group with only Egress traffic allowed. | bool |
true |
no |
environment | Environment (e.g. prod , dev , staging ). |
string |
"" |
no |
label_order | Label order, e.g. name ,application . |
list |
[] |
no |
managedby | ManagedBy, eg 'DevOps4Me' or 'NajibRadzuan'. | string |
"[email protected]" |
no |
name | Name (e.g. app or cluster ). |
string |
"" |
no |
prefix_list | List of prefix list IDs (for allowing access to VPC endpoints)Only valid with egress | list |
[] |
no |
protocol | The protocol. If not icmp, tcp, udp, or all use the. | string |
"tcp" |
no |
security_groups | List of Security Group IDs allowed to connect to the instance. | list(string) |
[] |
no |
tags | Additional tags (e.g. map(BusinessUnit ,XYZ ). |
map(string) |
{} |
no |
vpc_id | The ID of the VPC that the instance security group belongs to. | string |
"" |
no |
Name | Description |
---|---|
security_group_ids | IDs on the AWS Security Groups associated with the instance. |
tags | A mapping of public tags to assign to the resource. |
In this module testing is performed with terratest and it creates a small piece of infrastructure, matches the output like ARN, ID and Tags name etc and destroy infrastructure in your AWS account. This testing is written in GO, so you need a GO environment in your system.
You need to run the following command in the testing folder:
go test -run Test