Как удалить неудачные запуски расширений на виртуальной машине Azure с помощью Azure DevOps и PowerShell?

Я хочу удалить неудачные запуски расширений на виртуальной машине Azure с помощью Azure DevOps и PowerShell. И в зависимости от статуса удаления хотите выполнить другой конвейер ADO.


person Yogesh Kulkarni    schedule 20.01.2021    source источник


Ответы (1)


Вы можете добавить задача azure powershell для запуска сценариев Az Powershell для удаления расширений.

Чтобы использовать задачу Azure PowerShel в вашем конвейере. Вам необходимо создать подключение к службе Azure Resource Manager, чтобы подключиться к вашей подписке на Azure. См., Например, эту ветку.

Примечание. Необходимо убедиться, что субъект-служба, которую вы использовали в подключении к службе Azure Resource Manager, правильно назначила роль для удаления расширения виртуальной машины.

Затем вы можете запустить нижеуказанные команды az powershell, чтобы проверить состояния ваших расширений и удалить их.

  • Установите все расширения на виртуальную машину:

    Get-AzVMExtension -ResourceGroupName "ResourceGroup11" -VMName "VirtualMachine22"

  • Получить свойства расширения:

    Get-AzVMExtension -ResourceGroupName "ResourceGroup11" -VMName "VirtualMachine22" -Name "CustomScriptExtension"

  • Удалите расширение с виртуальной машины:

    Remove-AzVMExtension -ResourceGroupName "ResourceGroup11" -Name "ContosoTest" -VMName "VirtualMachine22"

Для запуска другого конвейера ADO на основе статуса удаления. Вы можете вызвать Runs - Run Pipeline rest api в вышеупомянутой лазурной оболочке PowerShell для запуска другого конвейера. См. Пример ниже:

steps:
- task: AzurePowerShell@5
  displayName: 'Azure PowerShell script: InlineScript copy'
  inputs:
    azureSubscription: 'Microsoft-Azure'
    ScriptType: InlineScript
    Inline: |
     #remove extension
     $result = Remove-AzVMExtension -ResourceGroupName "ResourceGroup11" -Name "ContosoTest" -VMName "VirtualMachine22"
     
     if($result.IsSuccessStatusCode){
           
          $url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/pipelines/{pipelineId}/runs?api-version=6.1-preview.1"
          #invoke rest api to trigger another ado pipeline
          Invoke-RestMethod -Uri $url -Headers @{authorization = "Bearer $(system.accesstoken)"} -ContentType "application/json" -Method Post
        
     }
     
    azurePowerShellVersion: LatestVersion
person Levi Lu-MSFT    schedule 21.01.2021
comment
Спасибо, Леви. Я попробую это и обновлю ветку. - person Yogesh Kulkarni; 21.01.2021
comment
@YogeshKulkarni Как дела с вышеуказанными скриптами? - person Levi Lu-MSFT; 26.01.2021
comment
Привет, Леви, удаление расширения сработало. Большое спасибо. - person Yogesh Kulkarni; 27.01.2021