- 09 Sep 2024
- 1 Minute to read
- Print
- DarkLight
Terraform
- Updated on 09 Sep 2024
- 1 Minute to read
- Print
- DarkLight
Volumez provides Terraform automation to streamline your data management. With Volumez Terraform PaaS, creating, deleting, and managing resources becomes seamless.
The following guide will provide the information needed to create the required infrastructure to deploy the Volumes SaaS platform within the user tenant account.
Pre-requisites:
Terraform installed (version 1.7.0 or higher).
AWS/Azure credentials set as environment variables.
kubectl (for Kubernetes EKS/AKS examples).
Helm v3.8 (for Kubernetes EKS/AKS examples).
AWS CLI / Azure CLI (for Kubernetes EKS/AKS examples).
Steps:
Clone the Git project:
git clone https://github.com/VolumezTech/volumez.git
Select your platform (AWS EC2 / Azure VM / Kubernetes).
Navigate to the relevant directory (Example for AWS EC2):
cd volumez/terraform/aws/examples/ec2/complete/easy_starter
Fill in the prerequisites:
Tenant token: Fetch from Volumez.com -> Sign in -> Developer Info.
Provide necessary permissions.
Configurations: Use the easy starter default values or edit as needed.
Commands:
Create with default values:
terraform init terraform apply -var-file="easy_starter.tfvars"
Custom variables:
terraform init terraform apply -var="media_node_ami=ami-08895422b5f3aa64a" -var="media_node_type=i3en.3xlarge"
Custom variables (edit
easy_starter.tfvars
if needed):region: Target region.
num_of_zones: Number of AZs to create the media/app nodes in (evenly spread between AZs).
create_fault_domain: Set to true for partitioned placement group strategy, otherwise cluster.
tenant_token: Tenant Token (JWT Access Token).
media_node_count: Number of media nodes to create.
media_node_type: Media EC2 type.
app_node_count: Number of performance hosts.
app_node_type: EC2 type for application node.
Example configuration:
code# General Configuration region = "us-east-1" resources_name_prefix = "volumez" num_of_zones = 1 create_fault_domain = false avoid_pg = true deploy_bastion = true key_name = "" # Existing Network Configuration (Optional) target_vpc_id = "" target_subnet_id = "" target_security_group_id = "" target_placement_group_id = "" # Media Nodes media_node_count = 2 media_node_type = "i4i.2xlarge" media_node_iam_role = null media_node_ami = "default" media_node_ami_username = "default" media_node_name_prefix = "media" # App Nodes app_node_count = 1 app_node_type = "m5n.xlarge" app_node_iam_role = null app_node_ami = "default" app_node_ami_username = "default" app_node_name_prefix = "app"
SSH to Node:
If using an existing key, set the
key_name
in the.tfvars
file and use this key to SSH.Otherwise, create a key file from Terraform output and name it:
terraform output ssh_key_value > <ssh-key-name>
SSH to media/app node in a private subnet via Bastion server:
ssh -i <ssh-key-name> -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o "ProxyCommand=ssh -W %h:%p ec2-user@<bastion_public_dns> -i <ssh-key-name> -o StrictHostKeyChecking=no" ec2-user@<media/app_nodes_private_ips>
Terraform will launch EC2 instances and deploy a Volumez Connector. Once complete, you are ready to assign media and launch a Volume.