Трубопровод Azure Devops Terraform создает идентификатор клиента и секрет - PullRequest
0 голосов
/ 27 марта 2019

Я использую этот манифест terraform для развертывания AKS в Azure.Я могу сделать это через командную строку нормально, и это работает, так как у меня на компьютере настроен azure cli для генерации идентификатора клиента и секрета

https://github.com/anubhavmishra/terraform-azurerm-aks

Однако сейчас я строю это наТрубопровод Azure Devops

Итак, до сих пор мне удавалось запускать terraform init и планировать с внутренним хранилищем в Azure, используя Azure Devops, используя это расширение

https://marketplace.visualstudio.com/items?itemName=charleszipp.azure-pipelines-tasks-terraform

Вопрос:Как получить идентификатор клиента и секретный ключ в конвейере разработчиков Devure Azure и установить его в качестве переменной среды для terraform?Я попытался создать команду bash az в конвейере

> az ad sp create-for-rbac --role="Contributor"
> --scopes="/subscriptions/YOUR_SUBSCRIPTION_ID"

, но потерпел неудачу с этой ошибкой

> 2019-03-27T10:41:58.1042923Z 
2019-03-27T10:41:58.1055624Z Setting AZURE_CONFIG_DIR env variable to: /home/vsts/work/_temp/.azclitask
2019-03-27T10:41:58.1060006Z Setting active cloud to: AzureCloud
2019-03-27T10:41:58.1069887Z [command]/usr/bin/az cloud set -n AzureCloud
2019-03-27T10:41:58.9004429Z [command]/usr/bin/az login --service-principal -u *** -p *** --tenant ***
2019-03-27T10:42:00.0695154Z [
2019-03-27T10:42:00.0696915Z   {
2019-03-27T10:42:00.0697522Z     "cloudName": "AzureCloud",
2019-03-27T10:42:00.0698958Z     "id": "88bfee03-551c-4ed3-98b0-be68aee330bb",
2019-03-27T10:42:00.0704752Z     "isDefault": true,
2019-03-27T10:42:00.0705381Z     "name": "Visual Studio Enterprise",
2019-03-27T10:42:00.0706362Z     "state": "Enabled",
2019-03-27T10:42:00.0707434Z     "tenantId": "***",
2019-03-27T10:42:00.0716107Z     "user": {
2019-03-27T10:42:00.0717485Z       "name": "***",
2019-03-27T10:42:00.0718161Z       "type": "servicePrincipal"
2019-03-27T10:42:00.0718675Z     }
2019-03-27T10:42:00.0719185Z   }
2019-03-27T10:42:00.0719831Z ]
2019-03-27T10:42:00.0728173Z [command]/usr/bin/az account set --subscription 88bfee03-551c-4ed3-98b0-be68aee330bb
2019-03-27T10:42:00.8569816Z [command]/bin/bash /home/vsts/work/_temp/azureclitaskscript1553683312219.sh
2019-03-27T10:42:02.4431342Z ERROR: Directory permission is needed for the current user to register the application. For how to configure, please refer 'https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal'. Original error: Insufficient privileges to complete the operation.
2019-03-27T10:42:02.5271752Z [command]/usr/bin/az account clear
2019-03-27T10:42:03.3092558Z ##[error]Script failed with error: Error: /bin/bash failed with return code: 1
2019-03-27T10:42:03.3108490Z ##[section]Finishing: Azure CLI 

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Вот как я это делаю с конвейерами Azure.

  1. Создание принципала обслуживания для Terraform.
  2. Создайте следующие переменные в вашем конвейере
    • ARM_CLIENT_ID
    • ARM_CLIENT_SECRET
    • ARM_SUBSCRIPTION_ID
    • ARM_TENANT_ID

Если вы решите сохранить ARM_CLIENT_SECRET в качестве секрета в DevOps Azure, вам потребуется выполнить следующее в своей задаче в разделах Переменные среды задачи, чтобы ее расшифровать, чтобы terraform мог ее прочитать.

enter image description here

0 голосов
/ 27 марта 2019

вам просто нужно предоставить права на подключение к службе для создания участников службы.но я бы вообще советовал против этого, просто предварительно создайте принципал службы и используйте его в своем конвейере.создание нового участника службы при каждом запуске кажется чрезмерным.

вы можете использовать переменные build \ release и заполнить их переменными с идентификатором клиента \ secret

...