Official Terraform provider for Thalassa Cloud. Manage infrastructure, Kubernetes clusters, databases, identity, DNS, object storage, KMS keys, and secrets as code.
Documentation
Requirements
- Terraform >= 1.0
- A Thalassa Cloud account with API access
Quick start
Add the provider to your Terraform configuration:
terraform {
required_providers {
thalassa = {
source = "thalassa-cloud/thalassa"
version = "~> 0.24"
}
}
}
provider "thalassa" {
organisation_id = "my-org"
}
Authenticate with a personal API token:
export THALASSA_API_TOKEN="your-token"
Then run terraform init and terraform apply as usual.
Provider configuration
The provider block supports the following arguments. Each can also be set via environment variable.
| Argument |
Environment variable |
Description |
token |
THALASSA_API_TOKEN |
Personal API token |
access_token |
THALASSA_ACCESS_TOKEN |
Access token (OIDC flow) |
client_id |
THALASSA_CLIENT_ID |
OIDC client ID |
client_secret |
THALASSA_CLIENT_SECRET |
OIDC client secret |
allow_insecure_oidc |
THALASSA_ALLOW_INSECURE_OIDC |
Allow insecure OIDC (default: false) |
api |
THALASSA_API_ENDPOINT |
API endpoint (default: https://api.thalassa.cloud) |
organisation_id |
THALASSA_ORGANISATION |
Default organisation ID |
project_id |
THALASSA_PROJECT_ID |
Default project ID |
Many resources accept an optional organisation_id attribute to override the provider default.
Supported services
Infrastructure (IaaS)
Resources
| Resource |
Description |
thalassa_vpc |
Virtual private cloud |
thalassa_subnet |
Subnet within a VPC |
thalassa_security_group |
Security group |
thalassa_security_group_ingress_rule |
Ingress rule |
thalassa_security_group_egress_rule |
Egress rule |
thalassa_route_table |
Route table |
thalassa_route_table_route |
Route within a route table |
thalassa_natgateway |
NAT gateway |
thalassa_reserved_ip |
Reserved public IP |
thalassa_vpc_peering_connection |
VPC peering request |
thalassa_vpc_peering_connection_acceptance |
Accept a VPC peering request |
thalassa_vpc_firewall_rule |
VPC firewall rule |
thalassa_virtual_machine_instance |
Virtual machine |
thalassa_block_volume |
Block storage volume |
thalassa_block_volume_attachment |
Volume attachment |
thalassa_snapshot |
Volume snapshot |
thalassa_snapshot_policy |
Automated snapshot policy |
thalassa_cloud_init_template |
Cloud-init template |
thalassa_loadbalancer |
Load balancer |
thalassa_loadbalancer_listener |
Load balancer listener |
thalassa_target_group |
Target group |
thalassa_target_group_attachment |
Target group attachment |
Data sources
| Data source |
Description |
thalassa_region |
Single region |
thalassa_regions |
List of regions |
thalassa_machine_image |
Machine image |
thalassa_machine_type |
Machine type |
thalassa_volume_type |
Block volume type |
thalassa_vpc |
VPC |
thalassa_subnet |
Subnet |
thalassa_vpc_default_route_table |
Default route table for a VPC |
thalassa_route_table |
Route table |
thalassa_security_group |
Security group |
thalassa_natgateway |
NAT gateway |
thalassa_loadbalancer |
Load balancer |
thalassa_snapshot |
Snapshot |
thalassa_snapshot_policy |
Snapshot policy |
thalassa_vpc_peering_connection |
VPC peering connection |
thalassa_vpc_peering_connections |
VPC peering connections |
thalassa_vpc_firewall_rule |
VPC firewall rule |
thalassa_vpc_firewall_rules |
VPC firewall rules |
Kubernetes (KaaS)
Resources
| Resource |
Description |
thalassa_kubernetes_cluster |
Kubernetes cluster |
thalassa_kubernetes_node_pool |
Node pool |
thalassa_kubernetes_cluster_role |
Cluster-scoped RBAC role |
thalassa_kubernetes_cluster_role_binding |
Cluster-scoped RBAC role binding |
Data sources
| Data source |
Description |
thalassa_kubernetes_version |
Available Kubernetes versions |
thalassa_kubernetes_cluster |
Cluster details |
thalassa_kubernetes_cluster_session_token |
Cluster session token |
thalassa_kubernetes_cluster_role |
Cluster role |
Database as a Service (DBaaS)
Resources
| Resource |
Description |
thalassa_dbaas_db_cluster |
Database cluster |
thalassa_dbaas_pg_database |
PostgreSQL database |
thalassa_dbaas_pg_roles |
PostgreSQL roles |
thalassa_dbaas_pg_grant |
PostgreSQL grants |
thalassa_dbaas_db_backupschedule |
Backup schedule |
Data sources
| Data source |
Description |
thalassa_dbaas_db_cluster |
Database cluster |
thalassa_dbaas_pg_database |
PostgreSQL database |
thalassa_dbaas_pg_roles |
PostgreSQL roles |
thalassa_dbaas_db_backupschedule |
Backup schedule |
thalassa_dbaas_db_backup |
Backup |
Identity & Access Management (IAM)
Resources
| Resource |
Description |
thalassa_iam_team |
Team |
thalassa_iam_role |
IAM role |
thalassa_iam_role_rule |
IAM role rule |
thalassa_iam_role_binding |
Role binding |
thalassa_iam_service_account |
Service account |
thalassa_iam_service_account_access_credential |
Service account credential |
Data sources
| Data source |
Description |
thalassa_iam_team |
Team |
thalassa_iam_role |
IAM role |
thalassa_iam_service_account |
Service account |
thalassa_iam_organisation_members |
Organisation members |
Key Management Service (KMS)
KMS is in early access. The API and resource schema may change.
Resources
| Resource |
Description |
thalassa_kms_key |
Encryption key |
Data sources
| Data source |
Description |
thalassa_kms_key |
KMS key |
thalassa_kms_summary |
KMS availability summary |
Secrets Manager
Resources
| Resource |
Description |
thalassa_secret |
Secret |
thalassa_secret_version |
Secret version |
thalassa_secret_access_policy |
Secret access policy |
DNS
Resources
| Resource |
Description |
thalassa_dns_zone |
DNS zone |
thalassa_dns_record |
DNS record |
thalassa_dns_zone_dnssec |
DNSSEC configuration |
Object Storage
Resources
| Resource |
Description |
thalassa_objectstorage_bucket |
Object storage bucket |
thalassa_objectstorage_bucket_lifecycle |
Bucket lifecycle rules |
Data sources
| Data source |
Description |
thalassa_objectstorage_bucket |
Object storage bucket |
Thalassa File Service (TFS)
Resources
| Resource |
Description |
thalassa_tfs_instance |
TFS instance |
Data sources
| Data source |
Description |
thalassa_tfs_instance |
TFS instance |
Organisation
Data sources
| Data source |
Description |
thalassa_organisation |
Organisation |
Examples
Runnable examples live under examples/.
Provider configuration
Infrastructure (IaaS)
Networking
Compute & storage
Load balancing
Kubernetes (KaaS)
Database as a Service (DBaaS)
Identity & Access Management (IAM)
Key Management Service (KMS)
Secrets Manager
DNS
Object Storage
Development
Prerequisites
- Go (see
go.mod for the required version)
- Make
Build and install locally
Build the provider binary and install it into the local Terraform plugin directory:
make install NAMESPACE=thalassa HOSTNAME=thalassa.cloud OS_ARCH=darwin_arm64
Adjust OS_ARCH for your platform (e.g. linux_amd64, darwin_amd64).
Reference the locally installed provider in your Terraform configuration:
terraform {
required_providers {
thalassa = {
source = "thalassa.cloud/thalassa/thalassa"
}
}
}
Run tests
make test
Generate documentation
Provider docs in docs/ are generated from schema definitions:
make docs
Contributing
Contributions are welcome. Please open an issue or pull request on GitHub.
When adding or changing resources, run make docs to regenerate the registry documentation and add an example under examples/ where practical.
License
Apache 2.0 License