Я хочу удалить неудачные запуски расширений на виртуальной машине Azure с помощью Azure DevOps и PowerShell. И в зависимости от статуса удаления хотите выполнить другой конвейер ADO.
Как удалить неудачные запуски расширений на виртуальной машине Azure с помощью Azure DevOps и PowerShell?
Ответы (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