title | excerpt | products | keywords | tags | |||||
---|---|---|---|---|---|---|---|---|---|
Integrate Terraform with Timescale Cloud |
Manage your Timescale Cloud services with a Terraform provider |
|
|
|
import IntegrationPrereqs from "versionContent/_partials/_integration-prereqs.mdx";
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.
- Download and install Terraform.
Configure Terraform based on your deployment type:
You use the $COMPANY Terraform provider to manage $SERVICE_LONGs:
-
Generate client credentials for programmatic use
-
In $CONSOLE, click
Timescale project
and save yourProject ID
, then clickProject settings
. -
Click
Create credentials
, then savePublic key
andSecret key
.
-
-
Configure $COMPANY Terraform provider
-
Create a
main.tf
configuration file with at least the following content. Changex.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 }
-
Create a
terraform.tfvars
file in the same directory as yourmain.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>"
-
-
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.