You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:已部署Azure CycleCloud虚拟机,如何用Terraform创建集群?

通过Terraform创建Azure CycleCloud集群的实操方案

1. 配置Terraform Providers

先声明所需的Terraform提供者,包括AzureRM和CycleCloud官方提供者,将以下内容写入main.tf:

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.0"
    }
    cyclecloud = {
      source  = "hashicorp/cyclecloud"
      version = "~> 1.0"
    }
  }
}

# 配置Azure RM提供者
provider "azurerm" {
  features {}
}

# 配置CycleCloud提供者(需提前获取API Token)
provider "cyclecloud" {
  endpoint = "https://<your-cyclecloud-server-ip>"
  token    = "<your-cyclecloud-api-token>"
  insecure = true # 仅用于自签名证书的测试环境,生产环境禁用
}

注意:API Token可在CycleCloud Web界面的「用户设置」中生成,需确保该用户拥有集群创建权限。

2. 引用CycleCloud内置集群模板

CycleCloud内置Slurm、PBS等集群模板,可通过Terraform直接读取引用,以Slurm为例:

# 读取内置Slurm模板
data "cyclecloud_template" "slurm" {
  name = "slurm"
}

如果使用自定义模板,可通过以下资源上传:

resource "cyclecloud_template" "custom_slurm" {
  name = "custom-slurm"
  file = "./slurm-template.zip"
}

3. 定义CycleCloud集群资源

对应Web界面的集群配置项,通过cyclecloud_cluster资源完成节点、队列、网络等参数设置:

resource "cyclecloud_cluster" "slurm_cluster" {
  name        = "my-slurm-cluster"
  template_id = data.cyclecloud_template.slurm.id
  description = "Terraform-provisioned Slurm cluster on Azure CycleCloud"

  # 主节点配置
  node {
    name               = "head"
    machine_type       = "Standard_D2s_v3"
    subnet_id          = "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>"
    os_image           = "OpenLogic:CentOS:7_9-gen2:latest"
    ssh_public_key     = "<your-ssh-public-key>"
    storage_account_id = "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<sa-name>"
  }

  # 计算节点队列配置
  queue {
    name           = "execute"
    machine_type   = "Standard_D4s_v3"
    min_nodes      = 0
    max_nodes      = 10
    subnet_id      = "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>"
    os_image       = "OpenLogic:CentOS:7_9-gen2:latest"
    ssh_public_key = "<your-ssh-public-key>"
  }

  # 全局Azure资源配置
  azure {
    resource_group_name = "<your-resource-group>"
    location            = "eastus"
  }
}

4. 部署与验证

  1. 初始化Terraform环境:
terraform init
  1. 预览部署计划:
terraform plan
  1. 执行集群部署:
terraform apply
  1. 验证结果:部署完成后,可登录CycleCloud Web界面查看集群状态,或使用CLI命令:
cyclecloud show_cluster my-slurm-cluster

常见问题排查

  • API认证失败:检查CycleCloud服务器端点是否可达,API Token是否有效,insecure参数仅用于自签名证书环境。
  • 资源权限不足:确保Azure服务principal拥有Contributor或更高权限,CycleCloud用户拥有集群创建权限。
  • 模板不兼容:确认CycleCloud版本与Terraform CycleCloud提供者版本匹配。

内容的提问来源于stack exchange,提问作者anshu anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:05:11