azure-devops - 从 pipeline.yaml 中的服务连接导出 ARM_CLIENT_ID 和 ARM_CLIENT_SECRET
问题描述
我创建了将现有 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_CLIENT_ID 为空。以下变量未导出为环境变量。
echo $ARM_CLIENT_ID echo $ARM_CLIENT_SECRET echo $ARM_SUBSCRIPTION_ID echo $ARM_TENANT_ID
解决方案
尝试使用系统变量 $env:servicePrincipalId、$env:servicePrincipalKey、$env:tenantId 来获取 SPN 详细信息。
推荐阅读
- javascript - Angular 模板上下文改变了持有它的属性
- python - 如果在合并两个 csv 文件时发生冲突,是否有一个函数可以从指定的 csv 文件中选择数据?
- java - 如何让 Chronometer 和 Timer 在 15 分钟后重新启动?
- ubuntu - Juju 将应用程序部署到错误/意外的子网
- sonarqube - 如何在 React 项目中获取覆盖率报告为 jacocoTestReport.xml
- python - 如何合并两个数据框,其中第二个数据框具有不同的列名和长度?
- powershell - 导出到文本文件时比较对象问题
- python-3.x - 从源安装OpenCV,可以导入cv2但不能确定版本
- wso2 - SSL 握手导致无法使用提供的“https://localhost:9443/oauth2/token”异常的颁发者解析配置
- python - 如何将热敏摄像机的插值绘图图像放入 tk 窗口?