【问题标题】:Use Azure DevOps service principal details in Azure Powershell task在 Azure Powershell 任务中使用 Azure DevOps 服务主体详细信息
【发布时间】:2020-03-30 14:05:55
【问题描述】:

在 Azure DevOps 管道中编写 Azure CLI 脚本时,您可以访问服务主体 ID、密钥和租户 ID。有没有办法在 Azure Powershell 任务中获取此信息?

【问题讨论】:

  • Azure Powershell 任务没有直接访问这些信息的功能,因此我们必须在 Azure PS 任务之前添加一个 Azure Cli 任务,以将这些值传递给我们自己的变量,然后将其共享给跟随 Azure PS 任务。 (task.setvariable variable xxx)。如果您看到***,则表示这些值已正确传递,因为 devops 只会在日志中显示秘密值...

标签: azure-devops


【解决方案1】:

addSpnToEnvironment 输入将您选择的 Azure 端点的服务主体 ID 和密钥添加到脚本的上下文中,这是一种仅在 Azure ClI Task 中可用的选项,但在 Azure Powershell Task 中不可用。

有没有办法在 Azure Powershell 任务中获取此信息?

作为替代解决方法,我们可以在 Azure ClI Task 中定义作业范围的变量,检查 this document

测试步骤:

1.使用最新的Azure CLI task2.0-preview并选择Powershell类型。试试这样的内联脚本:

Write-Host "##vso[task.setvariable variable=SpId;]$env:servicePrincipalId"

Write-Host "##vso[task.setvariable variable=SpKey;]$env:servicePrincipalKey"

Write-Host "##vso[task.setvariable variable=TenantId;]$env:tenantId"

Write-Host "##vso[task.setvariable variable=TestVar;]JustForTest"

2.然后在Azure CLI Task后面加一个Azure Powershell task进行测试:

Write-Host $env:SpId

Write-Host $env:SpKey

Write-Host $env:TenantId

Write-Host $env:TestVar

3.输出:

因此,如果您使用Write-Host "##vso[task.setvariable variable=xxx]xxx"(Powershell) 或echo "##vso[task.setvariable variable=xxx]xxx"(Batch) 定义作业范围的变量,则可以使用$env:VariableName 之类的东西来访问信息。日志中的 *** 是因为这些是 Azure Devops 投射的秘密,所以它们被屏蔽了。

【讨论】:

  • 有点破解,我考虑过,但我希望有更好的东西。
猜你喜欢
  • 2021-11-04
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2020-01-09
  • 2020-01-08
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多