- Split cloudinit.tf into cloudinit-hermes.tf and cloudinit-openclaw.tf - Split variables.tf into variables-common.tf, variables-hermes.tf, variables-openclaw.tf - Move templates into hermes/templates/ and openclaw/templates/ - Move models/ into openclaw/models/ - Move hermes-openclaw.json to openclaw/openclaw-reference.json - Move hermes docs to hermes/docs/ - OpenClaw cloudinit now uses variables instead of hardcoded values - All 48 variable references verified against definitions
58 lines
No EOL
1.6 KiB
HCL
58 lines
No EOL
1.6 KiB
HCL
# OpenBoatmobile - Agent Deployment
|
|
# Provider-agnostic infrastructure for OpenClaw or Hermes agents
|
|
|
|
terraform {
|
|
required_version = ">= 1.5.4"
|
|
|
|
required_providers {
|
|
digitalocean = {
|
|
source = "digitalocean/digitalocean"
|
|
version = "~> 2.0"
|
|
}
|
|
hcloud = {
|
|
source = "hetznercloud/hcloud"
|
|
version = "~> 1.0"
|
|
}
|
|
random = {
|
|
source = "hashicorp/random"
|
|
version = "~> 3.0"
|
|
}
|
|
cloudinit = {
|
|
source = "hashicorp/cloudinit"
|
|
version = "~> 2.0"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Provider configuration - selected by var.cloud_provider
|
|
# Secrets (API tokens) are set via environment variables:
|
|
# TF_VAR_do_token or TF_VAR_hcloud_token
|
|
|
|
provider "digitalocean" {
|
|
token = var.do_token
|
|
}
|
|
|
|
provider "hcloud" {
|
|
token = var.hcloud_token
|
|
}
|
|
|
|
# Locals for provider selection and framework-specific defaults
|
|
locals {
|
|
is_digitalocean = var.cloud_provider == "digitalocean"
|
|
is_hetzner = var.cloud_provider == "hetzner"
|
|
|
|
# Framework-specific admin user defaults
|
|
admin_user_framework_default = var.agent_framework == "hermes" ? "hermes" : "openclaw"
|
|
# Use framework default if admin_user not explicitly set
|
|
effective_admin_user = var.admin_user != "" ? var.admin_user : local.admin_user_framework_default
|
|
|
|
# Common tags/labels for resource tracking
|
|
common_tags = {
|
|
project = var.project_name
|
|
managed = "terraform"
|
|
component = var.agent_framework == "hermes" ? "hermes-agent" : "openclaw-gateway"
|
|
}
|
|
|
|
# Select userdata based on framework
|
|
userdata = var.agent_framework == "hermes" ? data.cloudinit_config.hermes[0].rendered : data.cloudinit_config.openclaw[0].rendered
|
|
} |