求助:已部署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. 部署与验证
- 初始化Terraform环境:
terraform init
- 预览部署计划:
terraform plan
- 执行集群部署:
terraform apply
- 验证结果:部署完成后,可登录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
相关产品推荐
相关产品推荐

