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

Azure DevOps发布流水线中如何配置Pulumi CLI使用Azure服务主体认证

我完全懂你现在的困扰——错误提示给了Terraform的链接,但咱们用的是Pulumi,根本没法直接照搬。别慌,我给你整理了几个在Azure DevOps流水线里让Pulumi用Azure服务主体认证的靠谱方法:

方法1:利用Azure DevOps自动注入的环境变量(最推荐)

Azure DevOps的「Azure CLI」任务在绑定了正确的ARM服务连接后,会自动把服务主体的凭据注入成4个关键环境变量:

  • ARM_CLIENT_ID:服务主体的应用ID
  • ARM_CLIENT_SECRET:服务主体的密钥
  • ARM_TENANT_ID:Azure AD租户ID
  • ARM_SUBSCRIPTION_ID:目标订阅ID

Pulumi的AzureRM provider本来就支持读取这些变量,但它默认会优先尝试用Azure CLI的上下文认证——而服务主体的CLI上下文刚好不被这种方式支持,所以咱们只要加个环境变量强制它跳过CLI认证就行:

在你的Azure CLI任务里,添加环境变量:

PULUMI_AZURERM_SKIP_AZURE_CLI=true

之后直接运行pulumi up -s develop --yes就可以了,Pulumi会自动读取上面的ARM_*变量完成服务主体认证。

方法2:手动配置Pulumi Stack的认证参数

如果你更习惯把认证信息存在Pulumi Stack的配置里,可以在流水线里先运行这几条命令(用Azure DevOps自动提供的预定义变量填充敏感信息,绝对安全):

pulumi config set azure:clientId $(servicePrincipalId) --stack develop
pulumi config set azure:clientSecret $(servicePrincipalKey) --stack develop --secret
pulumi config set azure:tenantId $(tenantId) --stack develop
pulumi config set azure:subscriptionId $(subscriptionId) --stack develop

执行完这些配置命令后,再运行pulumi up -s develop --yes就没问题了。这里的$(servicePrincipalId)等变量都是Azure DevOps绑定ARM服务连接后自动生成的,不用你手动创建。

方法3:用Pulumi官方的Azure DevOps任务(最省心)

如果你不想手动折腾环境变量或配置命令,直接用Pulumi官方发布的Azure DevOps任务就行(在Azure Marketplace里搜「Pulumi」就能找到):

  • 在流水线里添加「Pulumi」任务
  • 选择你的目标Stack(也就是develop)
  • 在「Azure Authentication」板块直接选你已经配置好的ARM服务连接
  • 命令类型选up,再勾选「Skip Confirmation」(对应--yes参数)

这个任务会自动处理所有认证细节,你不用管任何变量或配置,一键搞定。

最后提醒几点

  • 确保你的服务主体拥有足够的Azure资源权限(比如至少是Contributor角色),不然Pulumi还是会报错
  • 不管用哪种方法,都要先在流水线里安装好Pulumi CLI——可以用Azure DevOps的「Tool Installer」任务快速安装
  • 敏感信息比如服务主体密钥,绝对不要明文写在流水线里,Azure DevOps的服务连接会安全地帮你注入这些变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:33:05