使用联合服务主体凭据登录

问题描述 投票:0回答:1

我想通过 Terraform Cloud 中的工作区在 Azure 中部署资源。

我正在使用 Terraform Cloud 的动态提供程序凭据功能来向 Azure 进行身份验证,如this文章中所述。 它涉及使用联合凭据创建服务主体,因此没有秘密。

它工作正常,我能够在 Azure 中部署资源。

但是,我有一个

local-exec
资源,使用
az login

az login --service-principal -u <client-id> -p <client-secret> --tenant <tenant>

由于我没有

client-secret
,我该如何使用
az login

我遇到了this文章,该文章显示可以通过 GitHub Action 执行此操作,但我不想走 Actions 路线。

提前感谢您的帮助!

azure terraform azure-cli terraform-cloud
1个回答
0
投票

需要检查以下内容:-

由于我没有

client-secret
,我该如何使用
az login

方法1:

首先,要在不使用

az login
的情况下使用
CLIENT_SECRET
,您可以尝试使用
CLIENT_ID
和 Azure
TENANT_ID
进行日志记录。要使用这些值,请借助 export 中的
AzCLI
命令将它们设置为
环境变量

转到

Terraform Cloud
,您需要通过选择特定的
CLIENT_ID
来设置环境变量
TENANT_ID
workspace >> variables
,如@Monkey Supersonic的SO中所述。

export TENANT_ID = "xxx"

现在使用 local-exec 资源登录 Azure,它会按预期工作。

resource "null_resource" "azlogin"
 {
  local_exec { command = "az login --service-principal -u ${CLIENT_ID} --tenant ${TENANT_ID}" 
   } 
  }

方法2:

使用

az login --use-device-code
命令是在 Terraform Cloud 中使用
local-exec
资源而无需
clientsecret
的另一种方法。

resource "null_resource" "azlogin"
 {
  local_exec { command = "az login --use-device-code" 
   } 
  }

执行上述命令后,它会提示您打开网址并输入设备代码,如图所示。然后就可以成功登录Azure了。

enter image description here

方法3:

其他方法是使用托管身份登录。您可以使用托管身份登录。

--identity
标志用于使用资源的身份登录。

az login --identity --username CLIENT_ID

错误:构建 AzureRM 客户端:请确保您已安装 Azure CLI 版本 2.0.79 或更高版本。从 Azure CLI 解析 json 结果时出错:启动 Azure CLI:exec:“az”:在 $PATH 中找不到可执行文件:

出现上述错误是因为

Azure CLI
未正确安装或未在系统路径中识别。有时使用
Azure CLI
升级
az upgrade
可以解决此错误。

升级后,重新启动

Azure CLI
。如果升级不起作用,请删除现有的 CLI 配置并重新安装。

参考 MS Doc CLI 安装

注意: 如果问题仍然存在,请检查

Azure CLI
的安装位置是否在系统的
PATH
环境变量中。如果不存在则添加它。

有关相关问题,请参阅 github 文档。

© www.soinside.com 2019 - 2024. All rights reserved.