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

如何在Azure中使用Terraform创建UIPathRobot虚拟机

Terraform在现有Azure网络环境部署带UiPath Robot扩展虚拟机方案

你已经完成VNet、子网、NSG部署的前提下,不需要改动现有网络资源配置,直接通过Terraform引用现有网络资源,依次创建网卡、绑定NSG、创建虚拟机、部署自定义扩展完成UiPath Robot的安装注册即可,具体配置如下:

前置准备

  • 确保本地Terraform已完成AzureRM Provider的认证配置,建议使用3.x及以上版本的AzureRM Provider,避免旧版本API兼容问题
  • 提前准备好UiPath Robot部署所需参数:对应版本的Robot安装包访问地址、Orchestrator连接地址、机器注册密钥、所属机器组信息、Robot运行账号的凭证
  • 确认现有网络资源的名称、所属资源组信息:如果网络资源和当前虚拟机部署不在同一个Terraform state中,通过Terraform数据源拉取资源属性即可;如果在同一个state中,直接引用原有资源的属性即可
  • 确认现有NSG已经放通虚拟机到Orchestrator、安装包存储位置的出站访问权限,避免后续扩展安装失败

核心配置代码

以下示例以网络资源在独立资源组、不在当前Terraform state的场景编写,同state场景直接替换资源引用即可。

1. 引用现有网络资源

# 拉取现有资源组信息
data "azurerm_resource_group" "existing" {
  name = "你的网络资源所属资源组名称"
}

# 拉取现有虚拟网络
data "azurerm_virtual_network" "existing_vnet" {
  name                = "你已创建的虚拟网络名称"
  resource_group_name = data.azurerm_resource_group.existing.name
}

# 拉取现有目标子网
data "azurerm_subnet" "existing_subnet" {
  name                 = "你计划部署虚拟机的子网名称"
  resource_group_name  = data.azurerm_resource_group.existing.name
  virtual_network_name = data.azurerm_virtual_network.existing_vnet.name
}

# 拉取现有NSG
data "azurerm_network_security_group" "existing_nsg" {
  name                = "你已创建的网络安全组名称"
  resource_group_name = data.azurerm_resource_group.existing.name
}

2. 创建虚拟机网卡并绑定NSG

# 创建虚拟机网卡
resource "azurerm_network_interface" "uipath_nic" {
  name                = "uipath-robot-nic-01"
  location            = data.azurerm_resource_group.existing.location
  resource_group_name = data.azurerm_resource_group.existing.name

  ip_configuration {
    name                          = "internal-ip"
    subnet_id                     = data.azurerm_subnet.existing_subnet.id
    private_ip_address_allocation = "Dynamic"
    # 不需要公网IP就不要配置公网关联,Robot只要能出网连Orchestrator即可正常工作
  }
}

# 将现有NSG关联到虚拟机网卡
resource "azurerm_network_interface_security_group_association" "nic_nsg_bind" {
  network_interface_id      = azurerm_network_interface.uipath_nic.id
  network_security_group_id = data.azurerm_network_security_group.existing_nsg.id
}

3. 创建UiPath Robot所属Windows虚拟机

resource "azurerm_windows_virtual_machine" "uipath_vm" {
  name                = "uipath-robot-01"
  computer_name       = "UiPathRobot01"
  location            = data.azurerm_resource_group.existing.location
  resource_group_name = data.azurerm_resource_group.existing.name
  # 虚拟机规格根据Robot负载调整,无人值守Robot建议至少2核4G配置
  size                = "Standard_D2s_v3"
  admin_username      = "本地管理员账号名"
  # 敏感参数不要硬编码,用Terraform敏感变量或Key Vault引用传入
  admin_password      = var.vm_admin_password
  network_interface_ids = [azurerm_network_interface.uipath_nic.id]

  # 使用Azure官方认证的Windows Server镜像,推荐2019/2022数据中心版,和UiPath兼容性最好
  source_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2022-datacenter-azure-edition"
    version   = "latest"
  }

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Premium_LRS"
    disk_size_gb         = 128
  }

  enable_automatic_updates = true
  # 不需要启动诊断可以删除boot_diagnostics块,节省存储成本
  boot_diagnostics {}
}

4. 部署自定义扩展安装配置UiPath Robot

使用Azure原生自定义脚本扩展完成Robot的静默安装、Orchestrator注册动作,不需要额外跳板机操作:

resource "azurerm_virtual_machine_extension" "uipath_robot_deploy" {
  name                 = "uipath-robot-installer"
  virtual_machine_id   = azurerm_windows_virtual_machine.uipath_vm.id
  publisher            = "Microsoft.Compute"
  type                 = "CustomScriptExtension"
  type_handler_version = "1.10"

  settings = <<SETTINGS
  {
    "commandToExecute": "powershell -ExecutionPolicy Unrestricted -Command \\"# 下载Robot安装包; Invoke-WebRequest -Uri '[你的UiPath Robot对应版本MSI安装包可访问直链]' -OutFile 'C:\\Windows\\Temp\\UiPathRobot.msi'; # 静默安装Robot,参数根据你的实际需求调整; msiexec /i 'C:\\Windows\\Temp\\UiPathRobot.msi' /quiet /qn ADDLOCAL=Robot,RobotService; Start-Sleep -Seconds 60; # 注册到Orchestrator,替换为你实际的连接参数; & 'C:\\Program Files\\UiPath\\Studio\\UiPath.Robot.exe' connect --url '[你的Orchestrator访问地址]' --key '[你的Orchestrator机器注册密钥]' --machinegroup '[所属机器组名称]'; Remove-Item 'C:\\Windows\\Temp\\UiPathRobot.msi' -Force\\""
  }
SETTINGS

  depends_on = [azurerm_windows_virtual_machine.uipath_vm]
}

如果安装逻辑复杂,建议把完整PowerShell脚本上传到私有Azure存储Blob,通过fileUris参数指定脚本地址,commandToExecute直接执行本地脚本即可,避免长命令转义出错。

排错与注意事项

  • 所有敏感凭证包括虚拟机管理员密码、Orchestrator注册密钥必须用敏感变量或Azure Key Vault引用传入,禁止硬编码在Terraform配置文件中
  • 下载的UiPath Robot安装包版本必须和你使用的Orchestrator版本完全匹配,否则会出现注册失败、流程执行兼容问题
  • 如果扩展执行失败,登录虚拟机到C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\路径下查看执行日志,根据报错定位是网络不通、安装参数错误还是权限问题
  • 如果需要运行带UI交互的无人值守流程,需要给Robot运行账号配置本地管理员权限,同时调整组策略关闭会话0隔离限制,避免流程执行时找不到UI元素
  • 批量部署Robot时可以把上述配置封装成Terraform模块,传入不同的机器名、注册密钥即可快速批量创建,不需要重复编写配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:21:41