- Website: managed.hopsworks.ai
- Community: community.hopsworks.ai
The Terraform Hopsworks.ai provider is a plugin for Terraform that allows for creating and managing Hopsworks clusters on Hopsworks.ai
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.16.0"
}
hopsworksai = {
source = "logicalclocks/hopsworksai"
}
}
}
variable "region" {
type = string
default = "us-east-2"
}
provider "aws" {
region = var.region
}
provider "hopsworksai" {
# Highly recommended to use the HOPSWORKSAI_API_KEY environment variable instead
api_key = "YOUR HOPSWORKS API KEY"
}
# Step 1: create the required aws resources, an ssh key, an s3 bucket, and an instance profile with the required hopsworks permissions
module "aws" {
source = "logicalclocks/helpers/hopsworksai//modules/aws"
region = var.region
version = "2.3.0"
}
# Step 2: create a cluster with 1 worker
data "hopsworksai_instance_type" "head" {
cloud_provider = "AWS"
node_type = "head"
region = var.region
}
data "hopsworksai_instance_type" "rondb_data" {
cloud_provider = "AWS"
node_type = "rondb_data"
region = var.region
}
data "hopsworksai_instance_type" "smallest_worker" {
cloud_provider = "AWS"
node_type = "worker"
region = var.region
}
resource "hopsworksai_cluster" "cluster" {
name = "tf-hopsworks-cluster"
ssh_key = module.aws.ssh_key_pair_name
head {
instance_type = data.hopsworksai_instance_type.head.id
}
workers {
instance_type = data.hopsworksai_instance_type.smallest_worker.id
count = 1
}
aws_attributes {
region = var.region
bucket {
name = module.aws.bucket_name
}
instance_profile_arn = module.aws.instance_profile_arn
}
rondb {
single_node {
instance_type = data.hopsworksai_instance_type.rondb_data.id
}
}
open_ports {
ssh = true
}
}
# Outputs the url of the newly created cluster
output "hopsworks_cluster_url" {
value = hopsworksai_cluster.cluster.url
}
- Terraform >= 0.13.x
- Go >= 1.20
- golangci-lint = 1.55.2