Awesome
Ever Gauzy Terraform for AWS Cloud
Overview
This Terraform module is designed to provision infrastructure components required for a Gauzy application environment in AWS. It includes modules for creating a Virtual Private Cloud (VPC), a Relational Database Service (RDS) instance, an Amazon Elastic Kubernetes Service (EKS) cluster, and deploying applications using Helm charts.
Features
- Creates a Virtual Private Cloud (VPC) with public and private subnets
- Provisions an RDS instance (PostgreSQL or MySQL) for database needs
- Sets up an Amazon EKS cluster for hosting containerized applications
- Deploys applications using Helm charts, with support for external databases
- Allows for easy configuration of environment-specific variables
Usage
Prerequisites
- Terraform installed on your local machine
- AWS credentials configured with the necessary permissions
Modules
VPC
The VPC module creates a Virtual Private Cloud (VPC) with public and private subnets.
module "vpc" {
source = "./modules/terraform-gauzy-vpc"
environment = var.environment
region = var.region
}
RDS
The RDS module provisions an RDS instance (PostgreSQL or MySQL) for database needs.
module "rds" {
source = "./modules/terraform-gauzy-rds"
environment = var.environment
region = var.region
database_subnet_group = module.vpc.database_subnet_group
vpc_cidr = module.vpc.vpc_cidr
vpc_id = module.vpc.vpc_id
}
EKS
The EKS module sets up an Amazon Elastic Kubernetes Service (EKS) cluster for hosting containerized applications.
module "eks" {
source = "./modules/terraform-gauzy-eks"
environment = var.environment
cluster_version = var.cluster_version
region = var.region
private-subnet_id = module.vpc.private-subnet_id
vpc_id = module.vpc.vpc_id
}
Helm
The Helm module deploys applications using Helm charts, with support for external databases.
module "helm" {
source = "./modules/terraform-gauzy-helm"
environment = var.environment
region = var.region
name = var.name
h_version = var.h_version
chart = var.chart
external_db = var.external_db
api_host = var.api_host
api_secretName = var.api_secretName
web_host = var.web_host
web_secretName = var.web_secretName
cluster_endpoint = module.eks.cluster_endpoint
cluster_certificate_authority_data = module.eks.cluster_certificate_authority_data
cluster_name = module.eks.cluster_name
db_instance_address = module.rds.db_instance_address
db_instance_username = module.rds.db_instance_username
db_instance_name = module.rds.db_instance_name
}
Input Variables
VPC Module
Name | Description | Type | Default |
---|---|---|---|
environment | The environment to provision infrastructure for | string | demo |
region | The AWS region to deploy resources in | string | us-east-1 |
RDS Module
Name | Description | Type | Default |
---|---|---|---|
environment | The environment to provision infrastructure for | string | demo |
region | The AWS region to deploy resources in | string | us-east-1 |
create_rds | Whether to create the RDS instance or not | bool | false |
EKS Module
Name | Description | Type | Default |
---|---|---|---|
environment | The environment to provision infrastructure for | string | demo |
cluster_version | Kubernetes version for the EKS cluster | string | 1.28 |
region | The AWS region to deploy resources in | string | us-east-1 |
create_eks | Whether to create the EKS cluster or not | bool | false |
Helm Module
Name | Description | Type | Default |
---|---|---|---|
environment | The environment to provision infrastructure for | string | demo |
region | The AWS region to deploy resources in | string | us-east-1 |
name | Name of the Helm release | string | ever-gauzy |
h_version | Version of the Helm chart to deploy | string | 0.1.9 |
chart | Name of the Helm chart to deploy | string | ever-gauzy |
external_db | Whether to use an external database | bool | true |
api_host | API host for the application | string | apidemo.gauzy.co |
api_secretName | Secret name for API TLS certificate | string | chart-example-tls |
web_host | Web host for the application | string | demo.gauzy.co |
web_secretName | Secret name for web TLS certificate | string | chart-example-tls |
🌟 What is it
Terraform to deploy Ever Gauzy Platform into AWS Cloud.
🔗 Links
- https://github.com/ever-co/ever-gauzy-terraform - root repository for all our Terraform-related resources.
- https://gauzy.co - get more information about Ever Gauzy Platform.
- https://ever.co - get more information about our company products.
💌 Contact Us
- Ever.co Website Contact Us page
- Slack Community
- Discord Chat
- Gitter Chat
- Telegram
- For business inquiries: mailto:ever@ever.co
- Please report security vulnerabilities to mailto:security@ever.co
🔐 Security
Ever® Gauzy Platform follows good security practices, but 100% security cannot be guaranteed in any software! Ever® Gauzy Platform is provided AS IS without any warranty. Use at your own risk! See more details in the LICENSE.
In a production setup, all client-side to server-side (backend, APIs) communications should be encrypted using HTTPS/WSS/SSL (REST APIs, GraphQL endpoint, Socket.io WebSockets, etc.).
If you discover any issue regarding security, please disclose the information responsibly by sending an email to mailto:security@ever.co and not by creating a GitHub issue.
🛡️ License
We support the open-source community. If you're building awesome non-profit/open-source projects, we're happy to help and will provide (subject to acceptance criteria) Enterprise edition license and free hosting option! Feel free to contact us at mailto:ever@ever.co to make a request. More details are explained in our Wiki.
Ever Gauzy Platform License
- Ever® Gauzy™ Platform Community Edition
- Ever® Gauzy™ Platform Small Business
- Ever® Gauzy™ Platform Enterprise
The default Ever® Gauzy™ Platform license, without a valid Ever® Gauzy™ Platform Enterprise or Ever® Gauzy™ Platform Small Business License agreement, is the Ever® Gauzy™ Platform Community Edition License
Please see LICENSE for more information on licenses.
™️ Trademarks
Ever® is a registered trademark of Ever Co. LTD. Ever® Demand™, Ever® Gauzy™, Ever® Teams™ and Ever® OpenSaaS™ are all trademarks of Ever Co. LTD.
The trademarks may only be used with the written permission of Ever Co. LTD. and may not be used to promote or otherwise market competitive products or services.
All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.
🍺 Contribute
- Please give us :star: on Github, it helps!
- You are more than welcome to submit feature requests in the separate repo
- Pull requests are always welcome! Please base pull requests against the develop branch and follow the contributing guide.