-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
1 changed file
with
46 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,30 +1,63 @@ | ||
# Description | ||
Cloud agnostic, enterprise grade, bulletproof, battle tested IaC skeleton for SaaS solutions. | ||
Cloud agnostic IaC based SaaS skeleton. | ||
![Infrastructure Instance](ii.png) | ||
|
||
## Features | ||
Framework: | ||
* supports AWS, Azure, GCP, Digitalocean provider | ||
* provides Multi-tenancy feature via layers architecture | ||
* implements nested configurations for Infrastructure Instance and Environments | ||
Framework | ||
* supports AWS, DO (Azure, GCP - in progress) | ||
* provides Multi-tenancy feature via layers architecture (provider, network, managed, appl, tenant) | ||
* implements easy-to-construct multiple environment approach (single env var) | ||
* is based on IaC (Terraform) | ||
* includes support of multiple backend providers - Local, Cloud, Remote, PG, S3 | ||
* supports of multiple backend providers - Local, Cloud (PG, S3 - in progress) | ||
|
||
## Quick start | ||
* Install [tln](https://www.npmjs.com/package/tln-cli) | ||
* Goto **projects** and clone repository | ||
* Goto **projects** folder from tln-cli installation above and clone repository | ||
``` | ||
git clone [email protected]:project-talan/tln-clouds.git | ||
git clone --depth 1 --branch v23.7.0 [email protected]:project-talan/tln-clouds.git | ||
``` | ||
* Use **.env.template** files as an examples and fill it with actual values (create .env file at repository root level and inside every provider: do, aws, azure, gcp folders) | ||
* NOTE. Commands below assume that Terraform Cloud is used as a storage for states | ||
* Commands below will guide you to configure k8s infrastructure usign DO. By replacing <do> with <aws> you can have AWS based infrastructure | ||
* Use **.env.template** file as an examples and fill it with actual values | ||
* root .env | ||
``` | ||
TF_VAR_org_id=project-talan | ||
TF_VAR_project_id=tln-clouds | ||
TF_VAR_env_id=dev | ||
#TF_VAR_tenant_id= | ||
TF_TOKEN_app_terraform_io=<your_token> | ||
``` | ||
* do/.env | ||
``` | ||
DIGITALOCEAN_TOKEN=<your_token> | ||
TF_VAR_do_region=nyc3 | ||
TF_VAR_do_k8s_version=1.27.4-do.0 | ||
TF_VAR_do_k8s_nodes_min=1 | ||
TF_VAR_do_k8s_nodes_max=2 | ||
TF_VAR_do_k8s_nodes_size=s-2vcpu-2gb | ||
``` | ||
* aws/.env | ||
``` | ||
AWS_ACCESS_KEY_ID=<your_token> | ||
AWS_SECRET_ACCESS_KEY=<your_token> | ||
AWS_SESSION_TOKEN= | ||
AWS_DEFAULT_REGION=eu-central-1 | ||
TF_VAR_aws_k8s_version=1.27 | ||
TF_VAR_aws_k8s_nodes_min=1 | ||
TF_VAR_aws_k8s_nodes_desired=2 | ||
TF_VAR_aws_k8s_nodes_max=3 | ||
TF_VAR_aws_k8s_nodes_size=t3a.medium | ||
TF_VAR_aws_k8s_nodes_disk=50 | ||
``` | ||
* NOTE. Commands below assume that Terraform Cloud is used as a storage for states | ||
* Next commands will guide you to configure k8s infrastructure usign DO. By replacing **do** with **aws** you can have AWS based infrastructure | ||
* Install dependencies | ||
``` | ||
tln install do --depends | ||
``` | ||
* Construct DO Dev infrastructure i | ||
* Construct DO Dev infrastructure instance | ||
``` | ||
tln construct do -- --backend cloud --init --plan --apply | ||
``` | ||
|
@@ -49,5 +82,5 @@ Framework: | |
``` | ||
* Deconstruct DO Dev infrastructure instance | ||
``` | ||
tln deconstruct do -- --backend cloud --init --plan --apply | ||
tln deconstruct do -- --backend cloud --plan --apply | ||
``` |