/tf-free

Create cloud-native resources on all the major cloud providers, completely free of charge. This project is currently under heavy development.

Primary LanguageHCLApache License 2.0Apache-2.0

Logo Animation

docs-img drone-img

Objective

Creating and managing all available resources offered by major cloud providers exclusively in free-tier plans. Using Terraform to create and manage all the resources in a simplified and centralized manner.

Motivation

Every major cloud provider offers a free tier that allows for some kind of resource free of charge, still, learning every cloud and managing these resources can prove burdensome to most.

The goal is to automate the management of these resources using Terraform as the centralizing tool. It also aims to provide resources for learning and improve your skills as a SRE/DevOps Engineer and as a Terraform user, even if you're developer that never touched cloud infrastructure, nowadays there's great value in learning these tools.

A CLI tool is part of this project for those who wish a more KIS-like approach.

List of free-tier resources

Google Cloud Platform

GCP Available Resources

More information at the provider's documentation page.


Amazon Web Services

AWS Available Resources

More information at the provider's documentation page.


Microsoft Azure (has limited testing)

Available Resources

More information at the provider's documentation page.


Oracle Cloud (not available)

Available Resources

More information at the provider's documentation page.



terraform init
terraform apply -auto-approve

If you preffer a help utility before using this tool, you must have Task installed, to run the project's Taskfile:

# Installing Task (requires sudo)
sudo sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
# List all available commands
task --list # or task help

CLI Tool Documentation

Module documentation

Modules

Name Source Version
aws ./modules/aws
azure ./modules/azure
google_cloud ./modules/gcp
terraform_state_backend cloudposse/tfstate-backend/aws 0.33.1

Inputs

Name Description Type Default
aws_default_region Your default region for AWS resources creation. Available regions for Google Compute on Free Tier. string "us-east-1"
backend_destroy Allows destroying all resourcesinside the configured S3 Remote Backend. See more at tf-free's Backend Documentation string "false"
backend_stage Stages possible for Backend. Set for a random string. string "test"
ec2_aws Allow for the creation of EC2 instances on AWS. bool true
gcp_instance_name Your VM instance name. Naming resources convention string "gcp-machine"
gcp_project_id Your static IP network nameP. Naming resources convention string "test"
gcp_project_region Zone location of your instance, see the list of available regions - Terraform provider documentation string "us-west1"
gcp_storage_permissions See all available values for the parameter at Predefined ACL's on GCS Permissions string "publicread"
prevents_destroy Prevents destroying the previously provisioned S3 Remote Backend. See more at tf-free's Backend Documentation bool true
rds_aws Allow for the creation of a PostgreSQL database on AWS bool true

Outputs

Name Description
aws_ec2_ipv6_addresses AWS EC2 IPv6 Public Address
aws_ec2_password_data List of Base-64 encoded encrypted password data for AWS EC2 instances
aws_ec2_private_ip AWS EC2 assigned Private IP
aws_ec2_public_ip AWS EC2 IPv4 Public Address
db_backend_name Name of the resulting DynamoDB created for locking state files.
gcp_public_ip GCP VM Compute IPv4 Public Address
s3_backend_bucket ID of the resulting S3 bucket created on AWS as part of the backend infrastructure
s3_backend_domain Domain name of the S3 bucket created on AWS as part of the backend infrastructure

License

The MIT license grant is not for Hashicorp's trademarks, which include the logo designs. Hashicorp reserves all trademark and copyright rights in and to all Hashicorp trademarks.

This repository is not associated with any of the cloud providers or Hashicorp. Terraform®, Vault®, Hashicorp's logos and names are Hasicorp's registered Trademarks. When using Hashicorp's logos, be sure to follow their community and brand usage guidelines. Be sure to read the terms of usage to understand the responsabilities involved.