Skip to content

Commit

Permalink
update protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
Sohan Yadav committed Sep 27, 2019
1 parent 8350381 commit 351b6a1
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 6 deletions.
35 changes: 31 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
<!-- This file was automatically generated by the `geine`. Make all changes to `README.yaml` and run `make readme` to rebuild this file. -->

<p align="center"> <img src="https://user-images.githubusercontent.com/50652676/62349836-882fef80-b51e-11e9-99e3-7b974309c7e3.png" width="100" height="100"></p>


<h1 align="center">
Terraform AWS Security Group
</h1>

<p align="center" style="font-size: 1.2rem;">
<p align="center" style="font-size: 1.2rem;">
This terraform module creates set of Security Group and Security Group Rules resources in various combinations.
</p>

Expand Down Expand Up @@ -36,12 +38,24 @@
<hr>


We eat, drink, sleep and most importantly love **DevOps**. We are working towards stratergies for standardizing architecture while ensuring security for the infrastructure. We are strong believer of the philosophy <b>Bigger problems are always solved by breaking them into smaller manageable problems</b>. Resonating with microservices architecture, it is considered best-practice to run database, cluster, storage in smaller <b>connected yet manageable pieces</b> within the infrastructure.

This module is basically combination of [Terraform open source](https://www.terraform.io/) and includes automatation tests and examples. It also helps to create and improve your infrastructure with minimalistic code instead of maintaining the whole infrastructure code yourself.

We have [*fifty plus terraform modules*][terraform_modules]. A few of them are comepleted and are available for open source usage while a few others are in progress.




## Prerequisites

This module has a few dependencies:
This module has a few dependencies:

- [Terraform 0.12](https://learn.hashicorp.com/terraform/getting-started/install.html)
- [Go](https://golang.org/doc/install)
- [github.com/stretchr/testify/assert](https://github.com/stretchr/testify)
- [github.com/gruntwork-io/terratest/modules/terraform](https://github.com/gruntwork-io/terratest)




Expand All @@ -50,6 +64,7 @@ This module has a few dependencies:

## Examples


**IMPORTANT:** Since the `master` branch used in `source` varies based on new modifications, we suggest that you use the release versions [here](https://github.com/clouddrove/terraform-aws-security-group/releases).


Expand All @@ -61,6 +76,7 @@ Here is an example of how you can use this module in your inventory structure:
name = "security-group"
application = "clouddrove"
environment = "test"
protocol = "tcp"
label_order = ["environment", "name", "application"]
vpc_id = "vpc-xxxxxxxxx"
allowed_ip = ["172.16.0.0/16", "10.0.0.0/16"]
Expand All @@ -70,6 +86,9 @@ Here is an example of how you can use this module in your inventory structure:






## Inputs

| Name | Description | Type | Default | Required |
Expand All @@ -82,6 +101,7 @@ Here is an example of how you can use this module in your inventory structure:
| environment | Environment (e.g. `prod`, `dev`, `staging`). | string | `` | no |
| label_order | Label order, e.g. `name`,`application`. | list | `<list>` | no |
| name | Name (e.g. `app` or `cluster`). | string | `` | 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 | `<list>` | no |
| tags | Additional tags (e.g. map(`BusinessUnit`,`XYZ`). | map(string) | `<map>` | no |
| vpc_id | The ID of the VPC that the instance security group belongs to. | string | `` | no |
Expand All @@ -95,14 +115,21 @@ Here is an example of how you can use this module in your inventory structure:




## Testing
In this module testing is performed with [terratest](https://github.com/gruntwork-io/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](https://golang.org/doc/install) in your system.

You need to run the following command in the testing folder:
```hcl
go test -run Test
```



## Feedback
## Feedback
If you come accross a bug or have any feedback, please log it in our [issue tracker](https://github.com/clouddrove/terraform-aws-security-group/issues), or feel free to drop us an email at [hello@clouddrove.com](mailto:hello@clouddrove.com).

If you have found it worth your time, go ahead and give us a * on [our GitHub](https://github.com/clouddrove/terraform-aws-security-group)!
If you have found it worth your time, go ahead and give us a on [our GitHub](https://github.com/clouddrove/terraform-aws-security-group)!

## About us

Expand Down
1 change: 1 addition & 0 deletions README.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ usage : |-
name = "security-group"
application = "clouddrove"
environment = "test"
protocol = "tcp"
label_order = ["environment", "name", "application"]
vpc_id = "vpc-xxxxxxxxx"
allowed_ip = ["172.16.0.0/16", "10.0.0.0/16"]
Expand Down
4 changes: 3 additions & 1 deletion _example/example.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
provider "aws" {
region = "eu-west-1"
profile = "cd"
}

module "vpc" {
Expand All @@ -14,14 +15,15 @@ module "vpc" {
}

module "security_group" {
source = "git::https://github.com/clouddrove/terraform-aws-security-group.git?ref=tags/0.12.1"
source = "git::https://github.com/clouddrove/terraform-aws-security-group.git?ref=tags/0.12.2"

name = "security-group"
application = "clouddrove"
environment = "test"
label_order = ["environment", "name", "application"]

vpc_id = module.vpc.vpc_id
protocol = "tcp"
description = "Instance default security group (only egress access is allowed)."
allowed_ip = ["172.16.0.0/16", "10.0.0.0/16"]
allowed_ports = [22, 27017]
Expand Down
2 changes: 1 addition & 1 deletion main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ resource "aws_security_group_rule" "ingress" {
type = "ingress"
from_port = element(var.allowed_ports, count.index)
to_port = element(var.allowed_ports, count.index)
protocol = "tcp"
protocol = var.protocol
cidr_blocks = var.allowed_ip
security_group_id = aws_security_group.default[0].id
}
6 changes: 6 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,10 @@ variable "security_groups" {
type = list
default = []
description = "List of Security Group IDs allowed to connect to the instance."
}

variable "protocol" {
type = string
default = "tcp"
description = "The protocol. If not icmp, tcp, udp, or all use the."
}

0 comments on commit 351b6a1

Please sign in to comment.