Google Cloud Platform

This page documents a preview version. v2.23 Preview
Preview includes features under active development and is for development and testing only.
For production, use the latest stable version (v2024.1).

Prerequisites

Download and install Terraform.

Verify the installation using the terraform command.

$ terraform

You should see output similar to the following.

Usage: terraform [--version] [--help] <command> [args]
...
Common commands:
    apply              Builds or changes infrastructure
    console            Interactive console for Terraform interpolations
    destroy            Destroy Terraform-managed infrastructure
    env                Workspace management
    fmt                Rewrites config files to canonical format

Create a terraform configuration file

  1. Create a terraform file with provider details.

    provider "google"
    {
      # Provide your Creadentilals
      credentials = "${file("yugabyte-pcf-bc8114281026.json")}"
    
      # The name of your GCP project
      project = "<Your-GCP-Project-Name>"
    }
    

    To obtain your credentials file, refer to Getting started with authentication in the GCP documentation.

  2. Add the Yugabyte Terraform module to your file.

    module "yugabyte-db-cluster"
    {
      source = "github.com/Yugabyte/terraform-gcp-yugabyte.git"
    
      # The name of the cluster to be created.
      cluster_name = "test-cluster"
    
      # key pair.
      ssh_private_key = "SSH_PRIVATE_KEY_HERE"
      ssh_public_key = "SSH_PUBLIC_KEY_HERE"
      ssh_user = "SSH_USER_NAME_HERE"
    
      # The region name where the nodes should be spawned.
      region_name = "YOUR_VPC_REGION"
    
      # Replication factor.
      replication_factor = "3"
    
      # The number of nodes in the cluster, this cannot be lower than the replication factor.
      node_count = "3"
    }
    

Create a cluster

Init terraform first if you haven't already done so.

$ terraform init

To check what changes are going to happen in your environment, run the following:

$ terraform plan

Run the following to create the instances and bring up the cluster:

$ terraform apply

After the cluster is created, go to the URL http://<node ip or dns name>:7000 to view the UI. You can find the node's IP or DNS by running the following:

$ terraform state show google_compute_instance.yugabyte_node[0]

You can check the state of the nodes at any point by running the following command:

$ terraform show

Verify resources created

The following resources are created by this module:

  • module.terraform-gcp-yugabyte.google_compute_instance.yugabyte_node

    The GCP VM instances.

    For a cluster named test-cluster, the instances are named yugabyte-test-cluster-n1, yugabyte-test-cluster-n2, and yugabyte-test-cluster-n3.

  • module.terraform-gcp-yugabyte.google_compute_firewall.Yugabyte-Firewall

    The firewall rule that allows various clients to access the YugabyteDB cluster.

    For a cluster named test-cluster, this firewall rule is named default-yugabyte-test-cluster-firewall with the ports 7000, 9000, 9042, and 6379 open to all.

  • module.terraform-gcp-yugabyte.google_compute_firewall.Yugabyte-Intra-Firewall

    The firewall rule that allows communication internal to the cluster.

    For a cluster named test-cluster, this firewall rule is named default-yugabyte-test-cluster-intra-firewall with the ports 7100 and 9100 open to all other VM instances in the same network.

  • module.terraform-gcp-yugabyte.null_resource.create_yugabyte_universe

    A local script that configures the newly created instances to form a new YugabyteDB universe.

Destroy the cluster (optional)

To destroy what you just created, run the following command:

$ terraform destroy