我正在尝试创建一个管道,在其中我将针对来自 Azure DevOps 管道的 Azure 订阅运行 terraform 配置。一切正常,但是当我尝试使用 az cli 以用户身份登录时,它失败了:
ERROR: Authentication failed due to error of 'Unsupported wstrust endpoint version. Current support version is wstrust2005 or wstrust13.' This typically happens when attempting a Microsoft account, which requires interactive login. Please invoke 'az login' to cross check. More details are available at https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication
ERROR: Please run 'az login' to setup account.
尽管从我本地的 cli 可以执行 az log in -u user -p pass
命令是从脚本执行的,因为登录后我将转到需要这些凭据的 terraform 命令:
- script: |
az login -u $(u) -p $(p)
terraform init
terraform plan
我知道使用用户而不是服务主体并不是最佳实践,但现在我必须坚持使用这种方法。那么有没有一种方法可以自动从 Azure DevOps 管道进行 az 登录?
最佳答案
az login -u $(secretUser) -p $(secretPassword)
将用户 ID 和密码放入 Azure Key Vault,命名为 secretUser
和 secretPassword
,然后使用 AzureKeyVault@1
任务进行填充它
- task: AzureKeyVault@1
inputs:
ConnectedServiceName: Your Service Connection Name
KeyVaultName: Your Key Vault Name
SecretsFilter: 'secretUser,secretPassword'
RunAsPreJob: true
- script: |
az login -u $(secretUser) -p $(secretPassword)
terraform init
terraform plan
关于Azure DevOps az cli 以用户身份从管道登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66173322/