Creating a Mattermost Instance Using Terraform

Step 1: Prerequisites

Before you start creating a Mattermost instance using Terraform, ensure that you have the following prerequisites:

  1. Terraform and awscli installed on your local machine.

  2. An AWS account with appropriate permissions to create resources.

Step 2: Set Up Terraform and AWS CLI - V2

  1. To set up Terraform, refer to the page Terraform installation.

  2. To set up AWS CLI - V2, refer to the page AWS CLI installation.

Step 3: Configure AWS Credentials

  1. To configure your AWS credentials, refer to the page To Generating aws access key and secret key.

Step 4: Set AWS Credentials in Your Local Machine

  1. Open a command prompt or PowerShell window.

  2. Run the following command to configure your AWS credentials:

$ aws configure
  1. Enter the Access Key ID and Secret Access Key when prompted.

  2. Provide the default AWS region (e.g., ap-south-1) and output format (e.g., json or text).

ex:
  access_key = "<your-access-key>"
  secret_access_key = "<your-secret-access-key>"
  region = "<your-aws-region>"
  output_format = "<json>"

Step 5: Terraform Configuration Files / Clone the Repository

Make sure that the SSH key is set up between your local machine and the remote GitLab Server. Refer to the page → Setting Up GitLab on how to connect and setup SSH keys.

merco_ecosystem/mattermost in this repo we have a mattermost terraform files
clone this repo using git clone command.

  • To clone the repository using SSH, follow the below steps.

  • In the GitLab repository, select Clone and then copy the Clone with SSH URL.

Then, type the following command in your local machine

git clone <url>
ex: git clone git@gitlab.com:merco_ecosystem/mattermost.git

After clone repo open mattermost_terraform folder, open versions.tf file

ex:
terraform {
  required_version = "~> 1.4.6" <change_Version>
  required_providers{
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.5.0"
    }
  }
  backend "s3" {
    bucket  = "data-state-tf"
    key     = "terraform.tfstate" < create_your_own_state_file >
    region  = "ap-south-1"
    encrypt = true
  }
}

Replace the place holders <required_version>, <backend_s3_key>,and with your specific terraform configuration details.

Step 6: Terraform Variables Files (optional)

open variables.tf file, "You can modify the variables in the variables.tf file according to your specific requirements."

ex:
variable "vpc_id" {
  type    = string
  default = "vpc-004360fc01cbcbc29"
}
variable "subnet_id" {
  type    = string
  default = "subnet-00de860d84398601f"
}
variable "security_group_id" {
  type    = string
  default = "sg-0ecf309265ccc604d"
}
variable "key_name" {
  type    = string
  default = "mattermost"
}
variable "domain_name" {
  type    = string
  default = "kbtconnect.kanilebettu.in"
}
variable "zone_id" {
  default = "Z0221120RSG766W3M095"
}

Step 7: Run Terraform Commands

Once you have set up your Terraform configuration file, run the following commands in the directory where your main.tf file is located:

  1. Initialize Terraform:

$ terraform init
  1. Preview the resources that Terraform will create:

$ terraform plan
  1. Create the Mattermost instance:

$ terraform apply --auto-approve

Terraform will provision the necessary AWS resources and create your Mattermost instance based on the configuration specified in your main.tf file.

Step 8: Output

  1. By following these steps, you can easily create a Mattermost instance using Terraform.

  2. This code will create AWS EC2 instance and create Netwok load balancer with TLS Certification and hosting in Route 53.

  3. it’s giving output as aws_instance_public_ip ,nlb_dns_name,`route53_domain_name.

  4. To browse the Mattermost server, please click on the following link: https://kbtconnect.kanilebettu.in