From 73b78e721ac8157ac9224d77634a9cad111d718b Mon Sep 17 00:00:00 2001 From: Nikita Dugar Date: Sat, 10 Aug 2019 13:20:53 +0530 Subject: [PATCH] Update README.md --- README.md | 252 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 153 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index 83a9a2a..05522d4 100644 --- a/README.md +++ b/README.md @@ -1,109 +1,163 @@ -

TOC of All CloudDrove Packages and Tools

This repo is a useful way to discover all CloudDrove developed and maintained repositories. It is mainly designed for clients of CloudDrove.


- -## Terraform Packages - -CloudDrove offers the below terraform modules: - -1. **[terraform-github-users](https://github.com/clouddrove/terraform-github-users):** Terraform module to manage github users. -2. **[terraform-aws-vpc-old](https://github.com/clouddrove/terraform-aws-vpc-old):** Terraform module to create VPC resource on AWS. -3. **[terraform-aws-acm](https://github.com/clouddrove/terraform-aws-acm):** This terraform module is used for requesting or importing SSL/TLS certificate with validation. -4. **[terraform-aws-production-access-role](https://github.com/clouddrove/terraform-aws-production-access-role):** This terraform module is used for creating an IAM Role which can give permission to another AWS account for accessing it's inventory. -5. **[terraform-aws-cross-account-role](https://github.com/clouddrove/terraform-aws-cross-account-role):** This terraform module is used to create an IAM Role to access another AWS account inventory. -6. **[terraform-aws-public-subnet](https://github.com/clouddrove/terraform-aws-public-subnet):** Terraform module for public subnets provisioning. -7. **[terraform-aws-ecr](https://github.com/clouddrove/terraform-aws-ecr):** This terraform module is used to create ECR on AWS for store docker images. -8. **[terraform-aws-s3-old](https://github.com/clouddrove/terraform-aws-s3-old):** Terraform module to create default S3 bucket with logging and encryption type specific features. -9. **[terraform-aws-vpc-peering](https://github.com/clouddrove/terraform-aws-vpc-peering):** Terraform module to connect two VPC's on AWS. -10. **[terraform-aws-ebs-volume](https://github.com/clouddrove/terraform-aws-ebs-volume):** Terraform module to get EBS volume resource on AWS. -11. **[terraform-aws-cloudtrail](https://github.com/clouddrove/terraform-aws-cloudtrail):** Terraform module to provision an AWS CloudTrail and an encrypted S3 bucket with versioning to store CloudTrail logs -12. **[terraform-aws-security-group](https://github.com/clouddrove/terraform-aws-security-group):** This terraform module creates set of Security Group and Security Group Rules resources in various combinations. -13. **[terraform-aws-aurora](https://github.com/clouddrove/terraform-aws-aurora):** Terraform module which creates RDS Aurora database resources on AWS and can create different type of databases. Currently it supports Postgres and MySQL. -14. **[terraform-aws-elasticache-redis](https://github.com/clouddrove/terraform-aws-elasticache-redis):** This terraform module creates Elasticache standalone server for Redis on AWS. -15. **[terraform-aws-elasticache-redis-cluster](https://github.com/clouddrove/terraform-aws-elasticache-redis-cluster):** This terraform module creates Elasticache multiple replica for Redis on AWS. -16. **[terraform-digitalocean](https://github.com/clouddrove/terraform-digitalocean):** Terraform module to manage Digital Ocean Account. -17. **[terraform-digitalocean-k8s](https://github.com/clouddrove/terraform-digitalocean-k8s):** A terraform module for managing and creating a Kubernetes cluster on digital ocean. -18. **[terraform-aws-ses](https://github.com/clouddrove/terraform-aws-ses):** Terraform module to create an SES Identity with SES IAM user on AWS. -19. **[terraform-aws-vpn](https://github.com/clouddrove/terraform-aws-vpn):** Terraform module is used to create VPN resource on AWS for network connectivity. -20. **[terraform-aws-cloudfront-cdn](https://github.com/clouddrove/terraform-aws-cloudfront-cdn):** Terraform module provisions CloudFront CDN resource on AWS. -21. **[terraform-aws-logging](https://github.com/clouddrove/terraform-aws-logging):** Terraform module to enable logging on AWS. -22. **[terraform-aws-nuke](https://github.com/clouddrove/terraform-aws-nuke):** This module is used to cleanup the AWS account inventory. -23. **[terraform-aws-subnet-old](https://github.com/clouddrove/terraform-aws-subnet-old):** Terraform module to create public, private and public-private subnet with network acl, route table, Elastic IP, nat gateway, flow log. -24. **[terraform-aws-sns](https://github.com/clouddrove/terraform-aws-sns):** Terraform module is used to setup SNS service to manage notifications on application. -25. **[terraform-aws-bastion](https://github.com/clouddrove/terraform-aws-bastion):** Terraform module to deploy bastion host on AWS. -26. **[terraform-aws-eks](https://github.com/clouddrove/terraform-aws-eks):** Terraform module for provisioning an EKS cluster. -27. **[terraform-aws-eks-workers](https://github.com/clouddrove/terraform-aws-eks-workers):** Terraform module to provision an AWS AutoScaling Group, IAM Role, and Security Group for EKS Workers. -28. **[terraform-aws-autoscaling](https://github.com/clouddrove/terraform-aws-autoscaling):** Terraform module to provision Auto Scaling Group and Launch Template on AWS. -29. **[terraform-aws-kms](https://github.com/clouddrove/terraform-aws-kms):** This terraform module creates a KMS Customer Master Key (CMK) and its alias. -30. **[terraform-aws-0-11-baseline](https://github.com/clouddrove/terraform-aws-0-11-baseline):** This module creates baseline like VPC, EC2, Subnet etc with terraform 0.11. -31. **[terraform-aws-eks-cluster](https://github.com/clouddrove/terraform-aws-eks-cluster):** Terraform module will be created Autoscaling, Workers, EKS Clusters. -32. **[terraform-aws-transit-gateway](https://github.com/clouddrove/terraform-aws-transit-gateway):** Terraform module to create Transit gateway resource on AWS. -33. **[terraform-aws-vpn-transit-gateway](https://github.com/clouddrove/terraform-aws-vpn-transit-gateway):** Terraform module to create Transit gateway for VPN resource on AWS. -34. **[terraform-aws-consul](https://github.com/clouddrove/terraform-aws-consul):** Terraform module to create Consul server cluster on EC2. -35. **[terraform-aws-sqs](https://github.com/clouddrove/terraform-aws-sqs):** Terraform module to create SQS resource on AWS for managing queue. -36. **[terraform-aws-efs](https://github.com/clouddrove/terraform-aws-efs):** Terraform module to create or deploy EFS on AWS. -37. **[terraform-aws-cloudwatch-alarms-old](https://github.com/clouddrove/terraform-aws-cloudwatch-alarms-old):** Terraform module creates Cloudwatch Alarm on AWS for monitoriing AWS services. -38. **[terraform-aws-elastic-beanstalk](https://github.com/clouddrove/terraform-aws-elastic-beanstalk):** Terraform module to deploy Elastic Beanstalk resource on AWS. -39. **[terraform-aws-iam](https://github.com/clouddrove/terraform-aws-iam):** Terraform module to create IAM role resource on AWS. -40. **[terraform-aws-baseline](https://github.com/clouddrove/terraform-aws-baseline):** Internal repo for testing terraform modules. -41. **[terraform-labels](https://github.com/clouddrove/terraform-labels):** This terraform module is designed to generate consistent label names and tags for resources. You can use terraform-labels to implement a strict naming convention. -42. **[terraform-aws-ec2](https://github.com/clouddrove/terraform-aws-ec2):** Terraform module to create an EC2 resource on AWS with Elastic IP Addresses and Elastic Block Store. -43. **[terraform-aws-keypair](https://github.com/clouddrove/terraform-aws-keypair):** Terraform module for generating or importing an SSH public key file into AWS. -44. **[terraform-aws-subnet](https://github.com/clouddrove/terraform-aws-subnet):** Terraform module to create public, private and public-private subnet with network acl, route table, Elastic IP, nat gateway, flow log. -45. **[terraform-aws-alb](https://github.com/clouddrove/terraform-aws-alb):** This terraform module is used to create ALB on AWS. -46. **[terraform-aws-vpc](https://github.com/clouddrove/terraform-aws-vpc)** -47. **[terraform-aws-s3](https://github.com/clouddrove/terraform-aws-s3)** - -## Ansible Packages - -CloudDrove offers the below ansible roles: - -1. **[ansible-commands](https://github.com/clouddrove/ansible-commands):** This repository is used to understand how to use ansible commands. -2. **[ansible-role-docker](https://github.com/clouddrove/ansible-role-docker):** This ansible role installs docker at Debian. -3. **[ansible-role-common](https://github.com/clouddrove/ansible-role-common):** This ansible role installs common packages for Debian. -4. **[ansible-role-redis](https://github.com/clouddrove/ansible-role-redis):** This ansible role is used to install Redis server on Debian. -5. **[ansible-role-keys](https://github.com/clouddrove/ansible-role-keys):** Ansible role to manage keys. -6. **[ansible-role-php](https://github.com/clouddrove/ansible-role-php):** This ansible role is used to install PHP server on Debian. -7. **[ansible-role-jenkins-agent](https://github.com/clouddrove/ansible-role-jenkins-agent):** This ansible role is used to install Jenkins Agent on Debian. -8. **[ansible-role-docker-php](https://github.com/clouddrove/ansible-role-docker-php):** This ansible ro used to install PHP with docker on Debian. -9. **[ansible-role-docker-nginx](https://github.com/clouddrove/ansible-role-docker-nginx):** This ansible role is used for the installation of Nginx server with docker on Debian. -10. **[ansible-role-docker-redis](https://github.com/clouddrove/ansible-role-docker-redis):** This ansible role is used to setup Redis server with docker on Debian. -11. **[ansible-role-docker-mysql](https://github.com/clouddrove/ansible-role-docker-mysql):** This ansible role is used for formation of MySQL server with docker on Debian. -12. **[ansible-role-mongo-cluster](https://github.com/clouddrove/ansible-role-mongo-cluster):** This ansible role is used to setup Mongo cluster on Debian. -13. **[ansible-role-docker-mongo-cluster](https://github.com/clouddrove/ansible-role-docker-mongo-cluster):** This ansible role is used to setup Mongo cluster with docker on Debian. -14. **[ansible-role-solr](https://github.com/clouddrove/ansible-role-solr):** Ansible role to run setup solr using docker. -15. **[ansible-role-logz-io](https://github.com/clouddrove/ansible-role-logz-io):** This ansible role is used to install logz.io tool dependency on Debian. -16. **[ansible-role-nginx](https://github.com/clouddrove/ansible-role-nginx):** This ansible role is used to setup Redis server with docker on Debian. -17. **[ansible-role-mount-efs](https://github.com/clouddrove/ansible-role-mount-efs):** This ansible role is used for installing & Mounting AWS EFS on Debian. -18. **[ansible-role-user](https://github.com/clouddrove/ansible-role-user):** This ansible role is used to create users on server. -19. **[ansible-role-redash](https://github.com/clouddrove/ansible-role-redash):** This ansible role is used for the installation of Redash tool on Debian. -20. **[ansible-modules](https://github.com/clouddrove/ansible-modules):** This repo contains all ansible modules. -21. **[ansible-role-gitlab-runner](https://github.com/clouddrove/ansible-role-gitlab-runner):** ansible role is used for installing gitlab runner. -22. **[ansible-role-docker-superset](https://github.com/clouddrove/ansible-role-docker-superset):** This ansible role is used for installing Superset tool with docker on Debian. -23. **[ansible-role-docker-metabase](https://github.com/clouddrove/ansible-role-docker-metabase):** This ansible role is used for installing Metabase tool with docker on Debian. - -## Docker Packages - -CloudDrove offers the below docker packages: - -1. **[docker-terraform](https://github.com/clouddrove/docker-terraform):** Running terraform using docker for better CI/CD. -2. **[docker-pritunl](https://github.com/clouddrove/docker-pritunl):** Virtualize your private networks across datacenters. - -## CloudDrove Internal Tools - -CloudDrove offers the below internal tools: - -1. **[genie](https://github.com/clouddrove/genie):** This repository is a collection of Makefiles to facilitate some task easily like dynamic readme, terraform and git related. -2. **[slack-ssh-notifier](https://github.com/clouddrove/slack-ssh-notifier):** This repository is used to send Slack notification when any user logs in on the server. -3. **[aladdin](https://github.com/clouddrove/aladdin):** This repository is a collection of packages which can be installed directly by a single command on Debian(Linux) and Darwin(Mac) bases. + +

+

+ Terraform Aws Acm +

+ +

+ Terraform module to create an ACM with either DNS or Email verificaton. +

+ +

+ + + Terraform + + + Licence + + + +

+

+ + + + + + + + + + + +

+
+ +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 Bigger problems are always solved by breaking them into smaller manageable problems. Resonating with microservices architecture, it is considered best-practice to run database, cluster, storage in smaller connected yet manageable pieces 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: + +- [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) + +## 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-acm/releases). + +Here are some examples of how you can use this module in your inventory structure: +### ACM with DNS +```hcl +module "acm" { + source = "git::https://github.com/clouddrove/terraform-aws-acm.git" + name = "certificate" + application = "clouddrove" + environment = "test" + label_order = ["environment", "name", "application"] + domain_name = "clouddrove.com" + validation_method = "DNS" + dns_validation = false +} +``` + +### ACM with Email +```hcl +module "acm" { + source = "git::https://github.com/clouddrove/terraform-aws-acm.git" + name = "certificate" + application = "clouddrove" + environment = "test" + label_order = ["environment", "name", "application"] + domain_name = "clouddrove.com" + validation_method = "EMAIL" + validate_certificate = false +} +``` + +### ACM with Import Certificate +```hcl +module "acm" { + source = "git::https://github.com/clouddrove/terraform-aws-acm.git" + name = "certificate" + application = "clouddrove" + environment = "dev" + label_order = ["environment", "name", "application"] + private_key = "./../../../clouddrove-private-key.pem" + certificate_body = "./../../../clouddrove-cert.pem" + certificate_chain = "./../../../clouddrove-chain.crt" + import_certificate = true +} +``` + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|:----:|:-----:|:-----:| +| application | Application (e.g. `cp` or `clouddrove`). | string | - | yes | +| certificate_body | Path of certificate body. | string | `~` | no | +| certificate_chain | Path of certificate chain. | string | `` | no | +| create_acm_certificate | Set to false to prevent the creation of a acm certificate. | string | `true` | no | +| dns_validation | Set to prevent validation of DNS. | string | `false` | no | +| domain_name | A domain name for which the certificate should be issued. | string | `` | no | +| environment | Environment (e.g. `prod`, `dev`, `staging`). | string | - | yes | +| import_certificate | Set to true or false to decide the creation and import of a acm certificate. | string | `false` | no | +| label_order | Label order, e.g. `name`,`application`. | list | `` | no | +| name | Name (e.g. `app` or `cluster`) | string | - | yes | +| private_key | Path of private key. | string | `` | no | +| ttl | Time to live. | string | `600` | no | +| validate_certificate | Set to false to prevent the validation of a acm certificate. | string | `false` | no | +| validation_method | Which method to use for validation, DNS or EMAIL. | string | `` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| arn | The ARN of the Certificate. | +| domain_validation_options | The domain validation option of the Certificate. | +| id | The ID of the Certificate. | +| tags | A mapping of tags to assign to the resource. | + +## 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 -If you come accross a bug or have any feedback, please log it in our [issue tracker](https://github.com/clouddrove/toc/issues), or feel free to drop us an email at [hello@clouddrove.com](mailto:hello@clouddrove.com). +If you come accross a bug or have any feedback, please log it in our [issue-tracker](https://github.com/clouddrove/terraform-aws-acm/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-acm)! ## About us -At [CloudDrove][https://clouddrove.com], 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. +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. -

We are The Cloud Experts!


We ❤️ Open Source and you can check out our other modules to get help with your new Cloud ideas.

+

We are The Cloud Experts!

+
+

We ❤️ Open Source and you can check out our other modules to get help with your new Cloud ideas.

+ + [logo]: https://clouddrove.com/media/images/logo.png + [website]: https://clouddrove.com + [github]: https://github.com/clouddrove + [linkedin]: https://cpco.io/linkedin + [twitter]: https://twitter.com/clouddrove/ + [email]: https://clouddrove.com/contact-us.html + [we_love_open_source]: https://github.com/clouddrove + [terraform_modules]: https://github.com/clouddrove?utf8=%E2%9C%93&q=terraform-&type=&language= + [share_twitter]: https://twitter.com/intent/tweet/?text=terraform-aws-acm&url=https://github.com/clouddrove/terraform-aws-acm + [share_linkedin]: https://www.linkedin.com/shareArticle?mini=true&title=terraform-aws-acm&url=https://github.com/clouddrove/terraform-aws-acm + [share_facebook]: https://facebook.com/sharer/sharer.php?u=https://github.com/clouddrove/terraform-aws-acm