запустить виртуальную машину Azure из конвейера сборки - PullRequest
1 голос
/ 17 мая 2019

Помогите мне запустить определенную виртуальную машину из конвейера сборки.

Есть https://dev.azure.com/organization и https://portal.azure.com/#home, к которым я могу получить доступ, используя мою учетную запись домена.

Я хотел бы написать конвейер сборки, который будет подключаться к порталу и запускать виртуальную машину

Итак, я создал служебное соединение и написал код конвейера сборки как:

variables:
  resourceGroup: group-AZDCWBLA03-017732
  system.Debug: true
pool: server
steps:

    - task: InvokeRESTAPI@1
      displayName: 'Invoke REST API: POST'
      inputs:
        serviceConnection: 'devTest VM start'
        headers: |
         {
         "Content-Type":"application/json", 
         "Authorization": "Bearer $env:TOKEN"
         }
        urlSuffix: '/resourceGroups/$(resourceGroup)/providers/Microsoft.Compute/virtualMachines/AZDCWBLA03/start?api-version=2018-06-01'
      env:
        TOKEN: $(system.accesstoken)

Имя машины - AZDCWBLA03.Результат сборки:

============================================================================== 
Task         : Invoke REST API: POST
Description  : Invoke a REST API as a part of your pipeline.
Version      : 1.0.6
Author       : Microsoft Corporation
Help         : [More information](https://go.microsoft.com/fwlink/?linkid=870236)
============================================================================== 



POST https://management.azure.com/subscriptions/ orgid /resourceGroups/group-AZDCWBLA03-017732/providers/Microsoft.Compute/virtualMachines/AZDCWBLA03/start?api-version=2018-06-01
                Response Code: 0
                Response: An error was encountered while processing request. Exception: {"error":{"code":"InvalidAuthenticationToken","message":"The access token is invalid."}}
Exception Message: The remote server returned an error: (401) Unauthorized. (type WebException)

Проблема в том, что я не знаю, как токен сборки может быть связан с порталом виртуальной машины Azure.Я полагаю, что $(system.accesstoken) может быть не тем, что мне нужно.Я не хотел бы использовать свои учетные данные пользователя (кроме только для целей тестирования) и использовать текущий токен сборки, если возможно выполнить API REST Azure

. Из журнала видно, что POST использует правильный URI справильные имена организаций и групп ресурсов.

Не могли бы вы дать мне подсказку?

1 Ответ

1 голос
/ 17 мая 2019

Я вполне уверен, что $ (system.accesstoken) действителен только для вызовов самого Azure Devops. Поэтому вам нужно как-то передать токен (получить его на одном из предыдущих шагов).

Но, честно говоря, намного проще просто использовать шаг Azure Powershell:

- task: AzurePowerShell@3
  inputs:
    azureSubscription: Subscription Name
    ScriptType: InlineScript
    Inline: |
        Start-AzVm -Name AZDCWBLA03 -ResourceGroupName group-AZDCWBLA03-017732
    azurePowerShellVersion: LatestVersion

Он позаботится об аутентификации для вас, но вам нужно будет создать подключение к службе и предоставить ему соответствующие права (скажем, VM Contributor)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...