Skip to content

Commit f2d0a0e

Browse files
committed
inital commit
0 parents  commit f2d0a0e

19 files changed

+625
-0
lines changed

.github/workflows/readme.yml

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: 'Create README.md file'
2+
on:
3+
push:
4+
branches:
5+
- master
6+
7+
jobs:
8+
readme-create:
9+
name: 'readme-create'
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: 'Checkout'
13+
uses: actions/[email protected]
14+
15+
- name: 'Set up Python 3.7'
16+
uses: actions/setup-python@v2
17+
with:
18+
python-version: '3.x'
19+
20+
- name: 'create readme'
21+
uses: 'clouddrove/[email protected]'
22+
with:
23+
actions_subcommand: 'readme'
24+
github_token: '${{ secrets.GITHUB }}'
25+
env:
26+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27+
28+
29+
- name: 'pre-commit check errors'
30+
uses: pre-commit/[email protected]
31+
continue-on-error: true
32+
33+
- name: 'pre-commit fix errors'
34+
uses: pre-commit/[email protected]
35+
continue-on-error: true
36+
37+
- name: 'push readme'
38+
uses: 'clouddrove/[email protected]'
39+
continue-on-error: true
40+
with:
41+
actions_subcommand: 'push'
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44+
45+
- name: 'Slack Notification'
46+
uses: clouddrove/action-slack@v2
47+
with:
48+
status: ${{ job.status }}
49+
fields: repo,author
50+
author_name: 'CloudDrove'
51+
env:
52+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # required
53+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_TERRAFORM }} # required
54+
if: always()

.github/workflows/terraform.yml

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: 'Terraform GitHub Actions'
2+
on:
3+
pull_request:
4+
branches:
5+
- master
6+
7+
jobs:
8+
terraform:
9+
name: 'Terraform'
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: 'Checkout'
13+
uses: actions/checkout@master
14+
15+
- name: 'Terraform Format'
16+
uses: 'clouddrove/[email protected]'
17+
with:
18+
actions_subcommand: 'fmt'
19+
20+
- name: 'Terraform init'
21+
uses: 'clouddrove/[email protected]'
22+
with:
23+
actions_subcommand: 'init'
24+
tf_actions_working_dir: ./_example
25+
26+
- name: 'Terraform validate'
27+
uses: 'clouddrove/[email protected]'
28+
with:
29+
actions_subcommand: 'validate'
30+
tf_actions_working_dir: ./_example
31+
32+
- name: 'Terraform plan'
33+
uses: 'clouddrove/[email protected]'
34+
with:
35+
actions_subcommand: 'plan'
36+
tf_actions_working_dir: ./_example
37+
38+
- name: 'Slack Notification'
39+
uses: clouddrove/action-slack@v2
40+
with:
41+
status: ${{ job.status }}
42+
fields: repo,author
43+
author_name: 'CloudDrove'
44+
env:
45+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # required
46+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_TERRAFORM }} # required
47+
if: always()

.github/workflows/terratest.yml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: 'Terratest GitHub Actions'
2+
on:
3+
pull_request:
4+
branches:
5+
- master
6+
types: [labeled]
7+
8+
jobs:
9+
terraform:
10+
name: 'Terraform'
11+
runs-on: ubuntu-latest
12+
steps:
13+
14+
- name: 'Checkout'
15+
uses: actions/checkout@master
16+
17+
- name: Configure AWS Credentials
18+
uses: clouddrove/configure-aws-credentials@v1
19+
with:
20+
aws-access-key-id: ${{ secrets.TEST_AWS_ACCESS_KEY }}
21+
aws-secret-access-key: ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
22+
aws-region: us-east-2
23+
24+
25+
- name: 'Terratest'
26+
if: ${{ github.event.label.name == 'terratest' }}
27+
uses: 'clouddrove/[email protected]'
28+
with:
29+
actions_subcommand: 'terratest'
30+
tf_actions_working_dir: '_test'
31+
env:
32+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
33+
34+
35+
- name: 'Slack Notification'
36+
uses: clouddrove/action-slack@v2
37+
with:
38+
status: ${{ job.status }}
39+
fields: repo,author
40+
author_name: 'CloudDrove'
41+
env:
42+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # required
43+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_TERRAFORM }} # required
44+
if: always()

.gitignore

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# ignored files
2+
*.tfstate
3+
*.tfstate.backup
4+
.terraform
5+
.idea
6+
*.iml

.pre-commit-config.yaml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
repos:
2+
3+
- repo: https://github.com/gruntwork-io/pre-commit
4+
rev: v0.1.12 # Get the latest from: https://github.com/gruntwork-io/pre-commit/releases
5+
hooks:
6+
- id: terraform-fmt
7+
- id: shellcheck
8+
- id: tflint
9+
10+
- repo: git://github.com/pre-commit/pre-commit-hooks
11+
rev: v4.0.1 # Use the ref you want to point at
12+
hooks:
13+
- id: end-of-file-fixer
14+
- id: trailing-whitespace
15+
- id: mixed-line-ending
16+
- id: check-byte-order-marker
17+
- id: check-executables-have-shebangs
18+
- id: check-merge-conflict
19+
- id: debug-statements
20+
- id: check-yaml
21+
- id: check-added-large-files

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2019 Cloud Drove
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

Makefile

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export GENIE_PATH ?= $(shell 'pwd')/../../../../genie
2+
3+
include $(GENIE_PATH)/Makefile

README.md

+145
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
<!-- This file was automatically generated by the `geine`. Make all changes to `README.yaml` and run `make readme` to rebuild this file. -->
2+
3+
<p align="center"> <img src="https://user-images.githubusercontent.com/50652676/62349836-882fef80-b51e-11e9-99e3-7b974309c7e3.png" width="100" height="100"></p>
4+
5+
6+
<h1 align="center">
7+
Terraform DigitalOcean VPC
8+
</h1>
9+
10+
<p align="center" style="font-size: 1.2rem;">
11+
VPCs are virtual networks containing resources that can communicate with each other in full isolation, using private IP addresses.
12+
</p>
13+
14+
<p align="center">
15+
16+
<a href="https://www.terraform.io">
17+
<img src="https://img.shields.io/badge/Terraform-v0.13-green" alt="Terraform">
18+
</a>
19+
<a href="LICENSE.md">
20+
<img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="Licence">
21+
</a>
22+
23+
24+
</p>
25+
<p align="center">
26+
27+
<a href='https://facebook.com/sharer/sharer.php?u=https://github.com/clouddrove/terraform-digitalocean-vpc'>
28+
<img title="Share on Facebook" src="https://user-images.githubusercontent.com/50652676/62817743-4f64cb80-bb59-11e9-90c7-b057252ded50.png" />
29+
</a>
30+
<a href='https://www.linkedin.com/shareArticle?mini=true&title=Terraform+DigitalOcean+VPC&url=https://github.com/clouddrove/terraform-digitalocean-vpc'>
31+
<img title="Share on LinkedIn" src="https://user-images.githubusercontent.com/50652676/62817742-4e339e80-bb59-11e9-87b9-a1f68cae1049.png" />
32+
</a>
33+
<a href='https://twitter.com/intent/tweet/?text=Terraform+DigitalOcean+VPC&url=https://github.com/clouddrove/terraform-digitalocean-vpc'>
34+
<img title="Share on Twitter" src="https://user-images.githubusercontent.com/50652676/62817740-4c69db00-bb59-11e9-8a79-3580fbbf6d5c.png" />
35+
</a>
36+
37+
</p>
38+
<hr>
39+
40+
41+
We eat, drink, sleep and most importantly love **DevOps**. We are working towards strategies 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.
42+
43+
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.
44+
45+
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.
46+
47+
48+
49+
50+
## Prerequisites
51+
52+
This module has a few dependencies:
53+
54+
- [Terraform 0.13](https://learn.hashicorp.com/terraform/getting-started/install.html)
55+
- [Go](https://golang.org/doc/install)
56+
- [github.com/stretchr/testify/assert](https://github.com/stretchr/testify)
57+
- [github.com/gruntwork-io/terratest/modules/terraform](https://github.com/gruntwork-io/terratest)
58+
59+
60+
61+
62+
63+
64+
65+
## Examples
66+
67+
68+
**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-digitalocean-vpc/releases).
69+
70+
71+
### Simple Example
72+
Here is an example of how you can use this module in your inventory structure:
73+
```hcl
74+
module "vpc" {
75+
source = "clouddrove/vpc/digitalocean"
76+
version = "0.13.0"
77+
name = "vpc"
78+
application = "clouddrove"
79+
environment = "test"
80+
label_order = ["environment", "application", "name"]
81+
enable_vpc = true
82+
region = "bangalore-1"
83+
}
84+
```
85+
86+
87+
88+
89+
90+
91+
## Inputs
92+
93+
| Name | Description | Type | Default | Required |
94+
|------|-------------|------|---------|:--------:|
95+
| application | Application (e.g. `cd` or `clouddrove`). | `string` | `""` | no |
96+
| delimiter | Delimiter to be used between `organization`, `environment`, `name` and `attributes`. | `string` | `"-"` | no |
97+
| description | A free-form text field up to a limit of 255 characters to describe the VPC. | `string` | `"VPC"` | no |
98+
| enable\_vpc | A boolean flag to enable/disable vpc. | `bool` | `true` | no |
99+
| environment | Environment (e.g. `prod`, `dev`, `staging`). | `string` | `""` | no |
100+
| ip\_range | The range of IP addresses for the VPC in CIDR notation. Network ranges cannot overlap with other networks in the same account and must be in range of private addresses as defined in RFC1918. It may not be larger than /16 or smaller than /24. | `string` | `"10.10.0.0/16"` | no |
101+
| label\_order | Label order, e.g. `name`,`application`. | `list` | `[]` | no |
102+
| name | Name (e.g. `app` or `cluster`). | `string` | `""` | no |
103+
| region | The region to create VPC, like `london-1` , `bangalore-1` ,`newyork-3` `toronto-1`. | `string` | `"bangalore-1"` | no |
104+
105+
## Outputs
106+
107+
| Name | Description |
108+
|------|-------------|
109+
| created\_at | The date and time of when the VPC was created. |
110+
| default | A boolean indicating whether or not the VPC is the default one for the region. |
111+
| id | The unique identifier for the VPC.. |
112+
| urn | The uniform resource name (URN) for the VPC. |
113+
114+
115+
116+
117+
## Testing
118+
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.
119+
120+
You need to run the following command in the testing folder:
121+
```hcl
122+
go test -run Test
123+
```
124+
125+
126+
127+
## Feedback
128+
If you come accross a bug or have any feedback, please log it in our [issue tracker](https://github.com/clouddrove/terraform-digitalocean-vpc/issues), or feel free to drop us an email at [[email protected]](mailto:[email protected]).
129+
130+
If you have found it worth your time, go ahead and give us a ★ on [our GitHub](https://github.com/clouddrove/terraform-digitalocean-vpc)!
131+
132+
## About us
133+
134+
At [CloudDrove][website], we offer expert guidance, implementation support and services to help organisations accelerate their journey to the cloud. Our services include docker and container orchestration, cloud migration and adoption, infrastructure automation, application modernisation and remediation, and performance engineering.
135+
136+
<p align="center">We are <b> The Cloud Experts!</b></p>
137+
<hr />
138+
<p align="center">We ❤️ <a href="https://github.com/clouddrove">Open Source</a> and you can check out <a href="https://github.com/clouddrove">our other modules</a> to get help with your new Cloud ideas.</p>
139+
140+
[website]: https://clouddrove.com
141+
[github]: https://github.com/clouddrove
142+
[linkedin]: https://cpco.io/linkedin
143+
[twitter]: https://twitter.com/clouddrove/
144+
[email]: https://clouddrove.com/contact-us.html
145+
[terraform_modules]: https://github.com/clouddrove?utf8=%E2%9C%93&q=terraform-&type=&language=

README.yaml

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
#
3+
# This is the canonical configuration for the `README.md`
4+
# Run `make readme` to rebuild the `README.md`
5+
#
6+
7+
# Name of this project
8+
name : Terraform DigitalOcean VPC
9+
10+
# License of this project
11+
license: "MIT"
12+
13+
# Canonical GitHub repo
14+
github_repo: clouddrove/terraform-digitalocean-vpc
15+
16+
# Badges to display
17+
badges:
18+
- name: "Terraform"
19+
image: "https://img.shields.io/badge/Terraform-v0.15-green"
20+
url: "https://www.terraform.io"
21+
- name: "Licence"
22+
image: "https://img.shields.io/badge/License-MIT-blue.svg"
23+
url: "LICENSE.md"
24+
25+
# description of this project
26+
description: |-
27+
VPCs are virtual networks containing resources that can communicate with each other in full isolation, using private IP addresses.
28+
29+
# extra content
30+
include:
31+
- "terraform.md"
32+
33+
# How to use this project
34+
usage : |-
35+
### Simple Example
36+
Here is an example of how you can use this module in your inventory structure:
37+
```hcl
38+
module "vpc" {
39+
source = "clouddrove/spaces/digitalocean"
40+
name = "clouddrove"
41+
environment = "test"
42+
label_order = ["name"]
43+
acl = "public-read"
44+
force_destroy = true
45+
region = "nyc3"
46+
}
47+
```

0 commit comments

Comments
 (0)