Azure devops 从pipeline.yaml中的服务连接导出ARM_CLIENT_ID和ARM_CLIENT_SECRET

Azure devops 从pipeline.yaml中的服务连接导出ARM_CLIENT_ID和ARM_CLIENT_SECRET,azure-devops,Azure Devops,我已经创建了将现有Azure资源导入terraform的管道。由于Terraform导入需要提供程序详细信息或环境变量,因此必须从服务连接提取以下详细信息 steps: - task: AzureCLI@2 displayName: Terraform Init inputs: azureSubscription: ${{ parameters.service_connection }} addSpnToEnvironment: true scriptType:

我已经创建了将现有Azure资源导入terraform的管道。由于Terraform导入需要提供程序详细信息或环境变量,因此必须从服务连接提取以下详细信息

steps:
- task: AzureCLI@2
  displayName: Terraform Init
  inputs:
    azureSubscription: ${{ parameters.service_connection }} 
    addSpnToEnvironment: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
        export ARM_CLIENT_ID=$servicePrincipalId
        export ARM_CLIENT_SECRET=$servicePrincipalKey
        export ARM_SUBSCRIPTION_ID=$(az account show --query id | xargs)
        export ARM_TENANT_ID=$(az account show --query tenantId | xargs)
        ls
        terraform init -upgrade -input=false  \
            -backend-config="subscription_id=${{ parameters.tf_state_subscription_id }}" \
            -backend-config="tenant_id=$tenantId" \
            -backend-config="client_id=$servicePrincipalId" \
            -backend-config="client_secret=$servicePrincipalKey" \
            -backend-config="resource_group_name=${{ parameters.resource_group_name }}" \
            -backend-config="storage_account_name=${{ parameters.storage_account_name }}" \
            -backend-config="container_name=${{ parameters.tf_state_key }}" \
            -backend-config="key=${{ parameters.tf_state_key }}.tfstate"
        if [ $(az resource list --name pytestkeyvault --query '[].id' -o tsv) != null ]
        then
          echo "using Keyvault $(az resource list --name pytestkeyvault --query '[].id' -o tsv)"
          terraform import azurerm_key_vault.this $(az resource list --name pytestkeyvault --query '[].id' -o tsv) 
        else
          echo "Keyvault does not exist"
        fi
echo $ARM_CLIENT_ID
导出的环境变量ARM\u CLIENT\u ID为空。以下变量未作为环境变量导出

echo$ARM\u客户端\u ID echo$ARM\u客户端\u机密 echo$ARM\u订阅\u ID
echo$ARM\u TENANT\u ID

尝试使用系统变量$env:servicePrincipalId、$env:servicePrincipalKey、$env:tenantId获取SPN详细信息。

尝试使用系统变量$env:servicePrincipalId、$env:servicePrincipalKey、$env:tenantId获取SPN详细信息。

对于我的设置,我无法从azure powershell访问服务主体。 但我可以从Azure CLI

这篇文章为我指明了正确的方向,请查看:

对于我的设置,我无法从azure powershell访问服务主体。 但我可以从Azure CLI

这篇文章为我指明了正确的方向,请查看:

您可以尝试改用
$env:servicePrincipalId
。你可以参考类似的问题。没有得到你的最新信息,解决方法对你有帮助吗?或者,如果您有任何问题,请随时在此处分享。您可以尝试改用
$env:servicePrincipalId
。你可以参考类似的问题。没有得到你的最新信息,解决方法对你有帮助吗?或者如果你有任何问题,请在这里分享。