Skip to content

Latest commit

 

History

History
153 lines (111 loc) · 4.61 KB

terraform.md

File metadata and controls

153 lines (111 loc) · 4.61 KB
title excerpt products keywords tags
Integrate Terraform with Timescale Cloud
Manage your Timescale Cloud services with a Terraform provider
cloud
Terraform
configuration
deployment
integrate

import IntegrationPrereqs from "versionContent/_partials/_integration-prereqs.mdx";

Integrate Terraform with $CLOUD_LONG

Terraform is an infrastructure-as-code tool that enables you to safely and predictably provision and manage infrastructure.

This page explains how to configure Terraform to manage your $SERVICE_LONG or a self-hosted database.

Prerequisites

Configure Terraform

Configure Terraform based on your deployment type:

You use the $COMPANY Terraform provider to manage $SERVICE_LONGs:

  1. Generate client credentials for programmatic use

    1. In $CONSOLE, click Timescale project and save your Project ID, then click Project settings.

    2. Click Create credentials, then save Public key and Secret key.

  2. Configure $COMPANY Terraform provider

    1. Create a main.tf configuration file with at least the following content. Change x.y.z to the latest version of the provider.

      terraform {
        required_providers {
          timescale = {
            source  = "timescale/timescale"
            version = "x.y.z"
          }
        }
      }
      
      # Authenticate using client credentials generated in Timescale Console.
      # When required, these credentials will change to a short-lived JWT to do the calls.
      provider "timescale" {
       project_id = var.ts_project_id
       access_key = var.ts_access_key
       secret_key = var.ts_secret_key
      }
      
      variable "ts_project_id" {
       type = string
      }
      
      variable "ts_access_key" {
       type = string
      }
      
      variable "ts_secret_key" {
       type = string
      }
    2. Create a terraform.tfvars file in the same directory as your main.tf to pass in the variable values:

      export TF_VAR_ts_project_id="<your-timescale-project-id>"
      export TF_VAR_ts_access_key="<your-timescale-access-key>"
      export TF_VAR_ts_secret_key="<your-timescale-secret-key>"
  3. Add your resources

    Add your $SERVICE_LONGs or $VPC connections to the main.tf configuration file. For example:

    resource "timescale_service" "test" {
      name              = "test-service"   
      milli_cpu         = 500
      memory_gb         = 2
      region_code       = "us-east-1"
      enable_ha_replica = false
    
      timeouts = {
        create = "30m"
      }
    }
    
    resource "timescale_vpc" "vpc" {
      cidr         = "10.10.0.0/16"  
      name         = "test-vpc"
      region_code  = "us-east-1"
    }

You can now manage your resources with Terraform. See more about available resources and data sources.

You use the cyrilgdn/postgresql PostgreSQL provider to connect to your self-hosted $TIMESCALE_DB instance.

Create a main.tf configuration file with the following content, using your connection details:

   terraform {
    required_providers {
     postgresql = {
      source  = "cyrilgdn/postgresql"
      version = ">= 1.15.0"
     }
    }
   }

   provider "postgresql" {
    host            = "your-timescaledb-host"
    port            = "your-timescaledb-port"
    database        = "your-database-name"
    username        = "your-username"
    password        = "your-password"
    sslmode         = "require" # Or "disable" if SSL isn't enabled
   }

You can now manage your database with Terraform.