使用Pulumi中的服务原则与Azure进行身份验证

kokeuurv  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(175)

我有一个Pulumi程序,它在我的开发机器上运行良好。配置存储在Azure中,创建的资源也存储在Azure中。
要运行此程序,我设置了以下环境变量:

SET ARM_SUBSCRIPTION_ID=<id>

我在本地使用az login登录Azure,然后它会要求我提供凭据。之后,我可以使用pulumi up更新Azure中的更改。这一切都工作正常,没有任何问题。
现在,我想使用发布管道在Azure Devops中实现相同的功能。我使用“Azure CLI”-任务,并正确配置了ARM连接。该任务包含pulumi up -s develop --yes(其中“develop”是我的pulumi堆栈)
我可以在日志中看到Azure-login按预期工作,但pulumi抛出以下错误:错误:
构建AzureRM客户端时出错:仅支持以用户身份(不支持以服务主体身份)使用Azure CLI进行身份验证。若要使用服务主体向Azure进行身份验证,你可以使用单独的“使用服务主体进行身份验证”身份验证方法-有关该方法的说明,请参阅以下内容:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/service_principal_client_secret
虽然错误很明显,甚至包含一个解决方案的URL来解决这个问题:这并没有真正帮助我,因为我不直接使用terraform,而是用pulumi代替。
TL;DR:如何将pulumi cli配置为使用Azure的服务主体身份验证?

qxsslcnc

qxsslcnc1#

有两个选项可配置Pulumi以使用服务主体进行身份验证:
1.设置环境变量ARM_CLIENT_IDARM_CLIENT_SECRETARM_TENANT_IDARM_SUBSCRIPTION_ID,或者
1.使用配置设置它们

pulumi config set azure:clientId <clientID>
pulumi config set azure:clientSecret <clientSecret> --secret
pulumi config set azure:tenantId <tenantID>
pulumi config set azure:subscriptionId <subscriptionId>

参考:服务主体身份验证

相关问题