Pulumi配置Azure服务主体后GitHub Actions运行出现认证错误
错误产生原因
- Pulumi Azure 提供程序默认会优先尝试从Azure CLI读取认证信息,你使用的Windows运行环境没有预先完成Azure CLI登录,即使你已在Pulumi栈配置中写入服务主体参数,旧版本的Azure提供程序仍会先调用Azure CLI接口,触发报错。
- 你没有将Azure服务主体的敏感认证参数传递到Pulumi Action的环境变量中,Pulumi运行时无法正常读取标记为secret的配置项,导致认证逻辑降级到调用Azure CLI获取信息,触发错误。
- 你使用的
pulumi/actions@v3版本较老旧,对Windows环境下的Pulumi配置读取兼容存在缺陷,会优先触发Azure CLI认证逻辑。
解决方案
方案1(推荐,无需修改Pulumi配置)
- 先将你的服务主体四个参数
clientId、clientSecret、tenantId、subscriptionId存入GitHub仓库的Secrets中,命名为ARM_CLIENT_ID、ARM_CLIENT_SECRET、ARM_TENANT_ID、ARM_SUBSCRIPTION_ID。 - 修改Pulumi Action的配置,补充认证环境变量,强制Pulumi优先使用服务主体认证,跳过Azure CLI读取逻辑,同时升级Action版本到稳定版:
- uses: pulumi/actions@v5 with: command: preview stack-name: trinsic/Cramer work-dir: infrastructure/Source/Trinsic.Okapi env: PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }} ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }} ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }} ARM_USE_AZURECLI: false
方案2(保留Azure CLI认证逻辑)
在安装Pulumi CLI步骤后,新增Azure CLI登录步骤,提前完成身份认证:
- name: 登录Azure uses: azure/login@v1 with: client-id: ${{ secrets.ARM_CLIENT_ID }} tenant-id: ${{ secrets.ARM_TENANT_ID }} subscription-id: ${{ secrets.ARM_SUBSCRIPTION_ID }} client-secret: ${{ secrets.ARM_CLIENT_SECRET }}
内容的提问来源于stack exchange,提问作者Steven T. Cramer
相关产品推荐
相关产品推荐

