我想通过 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 路线。
提前感谢您的帮助!
需要检查以下内容:-
由于我没有
,我该如何使用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了。
方法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 文档。