Skip to content

Commit

Permalink
Migrate AzureVmssDeploymentV0 to Node20 (#19216)
Browse files Browse the repository at this point in the history
  • Loading branch information
qianz2 authored Nov 3, 2023
1 parent 946fc9f commit 1b13f75
Show file tree
Hide file tree
Showing 49 changed files with 15,205 additions and 4 deletions.
3,587 changes: 3,587 additions & 0 deletions Tasks/AzureVmssDeploymentV0/_buildConfigs/Node20/package-lock.json

Large diffs are not rendered by default.

19 changes: 19 additions & 0 deletions Tasks/AzureVmssDeploymentV0/_buildConfigs/Node20/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "AzureVmssDeployment",
"main": "main.js",
"dependencies": {
"@types/mocha": "^9.1.1",
"@types/node": "^20.3.1",
"@types/q": "1.0.7",
"agent-base": "^6.0.2",
"artifact-engine": "^1.2.0",
"azp-tasks-az-blobstorage-provider": "^3.229.0",
"azure-pipelines-task-lib": "^4.4.0",
"azure-pipelines-tasks-azure-arm-rest": "^3.226.0",
"azure-pipelines-tasks-utility-common": "^3.0.0-preview.0",
"moment": "^2.29.4"
},
"devDependencies": {
"typescript": "5.1.6"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ export default class VirtualMachineScaleSet {
var vmssList: azureModel.VMSS[] = result;
if (vmssList.length == 0) {
console.log(tl.loc("NoVMSSFound", this.taskParameters.vmssName));
return resolve();
return resolve(null);
}

var resourceGroupName: string;
Expand Down
2 changes: 1 addition & 1 deletion Tasks/AzureVmssDeploymentV0/task.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"version": {
"Major": 0,
"Minor": 230,
"Patch": 1
"Patch": 2
},
"demands": [],
"minimumAgentVersion": "2.0.0",
Expand Down
2 changes: 1 addition & 1 deletion Tasks/AzureVmssDeploymentV0/task.loc.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"version": {
"Major": 0,
"Minor": 230,
"Patch": 1
"Patch": 2
},
"demands": [],
"minimumAgentVersion": "2.0.0",
Expand Down
2 changes: 2 additions & 0 deletions _generated/AzureVmssDeploymentV0.versionmap.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Default|0.230.2
Node20_229_6|0.230.3
1 change: 1 addition & 0 deletions _generated/AzureVmssDeploymentV0_Node20/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
scripts-prepend-node-path=true
6 changes: 6 additions & 0 deletions _generated/AzureVmssDeploymentV0_Node20/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Azure virtual machine scale set deployment task

## FAQ
### The script execution is reported as successful, however the VMSS instances are not updated
_Ans_: This might be due to the upgrade policy set on the VMSS. You can read more about it [here](https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-upgrade-scale-set#how-to-bring-vms-up-to-date-with-the-latest-scale-set-model). You can use the documentation there to update the virtual machine instance to latest model. You can also switch the upgrade policy. For example, to upgrade the policy, followig Az CLI command can be used:
```az vmss update --set upgradePolicy.mode=Automatic -g <resource group name> -n <vmss name>```
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Param(
[string]$zipName,
[string]$script,
[string]$scriptArgs,
[string]$prefixPath
)

$ErrorActionPreference = 'Stop'

$cwd = (Get-Location).Path
$filesPath = Join-Path $cwd $prefixPath

if ($zipName) {
$zipPath = Join-Path $filesPath $zipName
$filesPath = Join-Path $filesPath 'a'
Write-Host "Unzipping $zipPath"
try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { }
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipPath, $filesPath)
}

Push-Location $filesPath

Write-Host "Invoking command: $script $scriptArgs"
Invoke-Expression "$script $scriptArgs"
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash
if [ -n "$1" ]; then
mkdir a
echo "extracting archive $1"
tar -xzC ./a -f $1
cd ./a
fi

command=$2" "$3
echo "Invoking command: "$command

eval $command
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"loc.friendlyName": "Azure-VM-Skalierungsgruppenbereitstellung",
"loc.helpMarkDown": "[Weitere Informationen zu dieser Aufgabe](https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/azure-vmss-deployment)",
"loc.description": "Hiermit wird ein Image einer VM-Skalierungsgruppe bereitgestellt.",
"loc.instanceNameFormat": "Azure-VMSS $(vmssName): $(action)",
"loc.releaseNotes": "- Aktualisiert die Azure-VM-Skalierungsgruppe mit einem benutzerdefinierten Computerimage.",
"loc.group.displayName.AzureDetails": "Azure-Details",
"loc.group.displayName.Image": "Imagedetails",
"loc.group.displayName.StartupConfiguration": "Start konfigurieren",
"loc.group.displayName.Advanced": "Erweitert",
"loc.input.label.ConnectedServiceName": "Azure-Abonnement",
"loc.input.help.ConnectedServiceName": "Wählen Sie das Azure Resource Manager-Abonnement für die Skalierungsgruppe aus.",
"loc.input.label.action": "Aktion",
"loc.input.help.action": "Wählen Sie zwischen der Aktualisierung einer VM-Skalierungsgruppe unter Verwendung eines VHD-Images und/oder der Ausführung von Bereitstellungs-/Installationsskripts unter Verwendung der Custom Script VM extension.<br/>Der Ansatz mit VHD-Images ist besser geeignet, um eine schnelle Skalierung und ein Rollback durchzuführen. Die Verwendung der Erweiterung ist nützlich für die Konfiguration nach der Bereitstellung, für die Softwareinstallation oder jede andere Konfigurations- und Verwaltungsaufgabe.<br/>Sie können ein VHD-Image nur dann zum Aktualisieren einer VM-Skalierungsgruppe verwenden, wenn sie mit einem benutzerdefinierten Image erstellt wurde. Die Aktualisierung führt zu einem Fehler, wenn die VM-Skalierungsgruppe mit einem in Azure verfügbaren Plattform-/Katalogimage erstellt wurde.<br/>Die Custom Script VM Extension kann für VM-Skalierungsgruppen verwendet werden, die entweder mithilfe eines benutzerdefinierten Images oder einem Plattform-/Katalogimage erstellt wurden.",
"loc.input.label.vmssName": "Name der VM-Skalierungsgruppe",
"loc.input.help.vmssName": "Der Name der VM-Skalierungsgruppe, die Sie entweder mit einem VHD-Image oder über die Custom script VM extension aktualisieren möchten.",
"loc.input.label.vmssOsType": "Betriebssystemtyp",
"loc.input.help.vmssOsType": "Wählen Sie den Betriebssystemtyp der VM-Skalierungsgruppe aus.",
"loc.input.label.imageUrl": "Image-URL",
"loc.input.help.imageUrl": "Geben Sie die URL für die Image-VHD an. Falls es sich um eine Azure Storage Blob-URL handelt, muss der Standort des Speicherkontos mit dem Standort der Skalierungsgruppe identisch sein.",
"loc.input.label.customScriptsDirectory": "Verzeichnis für benutzerdefinierte Skripts",
"loc.input.help.customScriptsDirectory": "Der Pfad zum Verzeichnis für benutzerdefinierte Skripts, die mithilfe der Custom Script VM extension ausgeführt werden. Die Verwendung der Erweiterung ist nützlich für die Konfiguration nach der Bereitstellung, für die Anwendungs-/Softwareinstallation oder jede andere Aufgabe für die Anwendungskonfiguration oder -verwaltung. Beispielsweise kann das Skript eine von der Anwendung verwendete Umgebungsvariable auf Computerebene festlegen, wie etwa eine Datenbankverbindungszeichenfolge.",
"loc.input.label.customScript": "Befehl",
"loc.input.help.customScript": "Das Skript, das bei Verwendung der Custom Script VM extension ausgeführt wird. Dieses Skript kann andere Skripts im Verzeichnis aufrufen. Das Skript wird mit den nachfolgend aufgeführten Argumenten aufgerufen. <br/>Dieses Skript kann gemeinsam mit diesen Argumenten zur Ausführung von Befehlen verwendet werden. Beispiel:<br/>1. Update-DatabaseConnectionStrings.ps1 -clusterType dev -user $(dbUser) -password $(dbUserPwd): Hiermit wird eine Verbindungszeichenfolge in der Datei \"web.config\" der Webanwendung aktualisiert.<br/>2. install-secrets.sh --key-vault-type prod -key serviceprincipalkey: Hiermit wird eine verschlüsselte Datei erstellt, die den Dienstprinzipalschlüssel enthält.",
"loc.input.label.customScriptArguments": "Argumente",
"loc.input.help.customScriptArguments": "Das benutzerdefinierte Skript wird mit den übergebenen Argumenten aufgerufen. Durch die Möglichkeit zum Einsatz von Build-/Releasevariablen ist es einfach, Geheimnisse zu verwenden.",
"loc.input.label.customScriptsStorageAccount": "Azure Storage-Konto, in das die benutzerdefinierten Skripts hochgeladen werden",
"loc.input.help.customScriptsStorageAccount": "Die benutzerdefinierte Skripterweiterung lädt Skripts herunter, die Sie für jeden virtuellen Computer in der VM-Skalierungsgruppe bereitgestellt haben, und führt diese aus. Die Skripts werden im hier angegebenen Speicherkonto gespeichert. Geben Sie ein bereits vorhandenes ARM-Speicherkonto an.",
"loc.input.label.skipArchivingCustomScripts": "Archivierung benutzerdefinierter Skripts überspringen",
"loc.input.help.skipArchivingCustomScripts": "Standardmäßig erstellt diese Aufgabe ein komprimiertes Verzeichnisarchiv, das benutzerdefinierte Skripts enthält. Dies verbessert die Leistung und Zuverlässigkeit beim Hochladen nach Azure Storage. Ist diese Option nicht aktiviert, wird keine Archivierung durchgeführt, und alle Dateien werden einzeln hochgeladen.",
"loc.messages.InvalidAction": "Diese Aktion ist nicht definiert. Wenden Sie sich an den Ersteller der Aufgabe.",
"loc.messages.TaskNotFound": "Task.json-Datei nicht gefunden: %s",
"loc.messages.TaskConstructorFailed": "Fehler beim Initialisieren der Aufgabe. Fehler: %s",
"loc.messages.InvalidValue": "%s ist kein gültiger Wert. Die gültigen Werte sind: %s",
"loc.messages.VMSSListFetchFailed": "Fehler beim Fetchen der VMSS-Details. Fehler: %s",
"loc.messages.NoVMSSFound": "Es wurde keine VMSS mit dem Namen %s gefunden.",
"loc.messages.FailedToGetRGForVMSS": "Fehler beim Abrufen der Ressourcengruppeninformationen für die VMSS %s.",
"loc.messages.VMSSImageUpdateFailed": "Fehler beim Aktualisieren des Images für die VMSS %s. Fehler: %s",
"loc.messages.UpdatedVMSSImage": "Das VMSS-Image wurde erfolgreich aktualisiert.",
"loc.messages.GetVMSSExtensionsListFailed": "Fehler beim Fetchen der Liste der VM-Erweiterungen für die VMSS %s. Fehler: %s.",
"loc.messages.CustomScriptExtensionRemoved": "Die benutzerdefinierte Skripterweiterung %s wurde erfolgreich entfernt.",
"loc.messages.CustomScriptExtensionInstalled": "Die benutzerdefinierte Skripterweiterung %s wurde erfolgreich installiert.",
"loc.messages.RemovingCustomScriptExtension": "Die VMSS verfügt bereits über eine benutzerdefinierte Skripterweiterung %s. Diese Erweiterung wird zuerst entfernt.",
"loc.messages.RemoveVMSSExtensionsFailed": "Fehler beim Entfernen der VM-Erweiterung %s. Fehler: %s.",
"loc.messages.SettingVMExtensionFailed": "Fehler beim Installieren der benutzerdefinierten VM-Skripterweiterung für die VMSS. Fehler: %s.",
"loc.messages.VMSSNameCannotBeNull": "Der VMSS-Name darf weder NULL noch nicht definiert sein und muss den Typ \"string\" aufweisen.",
"loc.messages.GetVMSSFailed": "Fehler beim Abrufen der VMSS-Details mit der Ressourcengruppe %s und dem Namen %s. Fehler: %s",
"loc.messages.VMSSDoesNotHaveCustomImage": "Die VMSS %s kann nicht aktualisiert werden, weil sie ein Plattformimage verwendet. Nur eine VMSS, die gegenwärtig ein benutzerdefiniertes Image verwendet, kann aktualisiert werden.",
"loc.messages.VMSSImageUrlCannotBeNull": "Die Image-URL darf keine leere Zeichenfolge sein.",
"loc.messages.VMSSImageAlreadyUptoDate": "Das Image ist bereits aktuell für %s. Das Imageupdate wird übersprungen.",
"loc.messages.NewVMSSImageUrl": "URL für das neue VMSS-Image: %s.",
"loc.messages.VMSSUpdateImage": "VMSS %s wird zur Verwendung des neuen Images aktualisiert...",
"loc.messages.ResourceNameCannotBeNull": "Der Ressourcenname darf nicht NULL sein.",
"loc.messages.ArchivingCustomScripts": "Ein komprimiertes Archiv des benutzerdefinierten Skriptverzeichnisses %s wird erstellt.",
"loc.messages.SkippedArchivingCustomScripts": "Das Verzeichnis zur Archivierung benutzerdefinierter Skripts wurde übersprungen.",
"loc.messages.CustomScriptsArchiveFile": "Das benutzerdefinierte Skriptarchiv wurde unter %s erstellt.",
"loc.messages.CopiedInvokerScript": "Das Skript zum Extrahieren und Ausführen des benutzerdefinierten Skriptarchivs wurde in \"%s\" kopiert.",
"loc.messages.CustomScriptsArchivingFailed": "Die benutzerdefinierten Skripts konnten nicht komprimiert werden. Es werden einzelne Dateien verwendet.",
"loc.messages.UploadingCustomScriptsBlobs": "Benutzerdefinierte Skripts aus %s werden in Azure-BLOBs hochgeladen.",
"loc.messages.UploadingToStorageBlobsFailed": "Fehler beim Hochladen der benutzerdefinierten Skripts in den Azure Blob Storage. Fehler: %s.",
"loc.messages.DestinationBlobContainer": "Die Dateien werden in folgende Container-URL hochgeladen: %s.",
"loc.messages.StorageAccountDoesNotExist": "Fehler beim Abrufen des Azure-Speicherkontos mit dem Namen %s.",
"loc.messages.activeDirectoryResourceIdUrlCannotBeEmpty": "Die Active Directory-Ressourcen-URL darf nicht leer sein.",
"loc.messages.StorageAccountCannotBeNull": "Der accountName des Speichers darf weder NULL noch nicht definiert sein und muss den Typ \"string\" aufweisen.",
"loc.messages.ArtifactItemsTruncationWarning": "Heruntergeladene Elemente werden möglicherweise bei 5000 Elementen abgeschnitten. Eventuell wurden nicht alle Artefaktelemente heruntergeladen.",
"loc.messages.CreatedBlobForItem": "Blob für Element \"%s\" wurde erstellt. Blob-URI: %s.",
"loc.messages.CreatedContainer": "Container \"%s\" wurde erstellt.",
"loc.messages.ErrorInReadStream": "Fehler beim Lesen des Datenstroms: %s.",
"loc.messages.ErrorInWriteStream": "Fehler beim Schreiben des Datenstroms: %s.",
"loc.messages.FailedToCreateBlob": "Fehler beim Erstellen des Blobs \"%s\". Fehler: %s.",
"loc.messages.FailedToCreateContainer": "Fehler beim Erstellen des Containers \"%s\". Fehler: %s.",
"loc.messages.FailedToListItemInsideContainer": "Fehler beim Auflisten von Elementen im Container: %s. Fehler: %s.",
"loc.messages.SuccessFullyFetchedItemList": "Erfolgreich abgerufene Elementliste",
"loc.messages.UnableToFetchItem": "Abrufen des Elements nicht möglich: %s. Fehler: %s.",
"loc.messages.UploadingItem": "\"%s\" wird hochgeladen.",
"loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Ein Zugriffstoken für Azure konnte nicht abgerufen werden. Statuscode: %s, Statusmeldung: %s",
"loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Ein Zugriffstoken für den verwalteten Dienstprinzipal konnte nicht abgerufen werden. Konfigurieren Sie die verwaltete Dienstidentität (MSI) für den virtuellen Computer (https://aka.ms/azure-msi-docs). Statuscode: %s, Statusmeldung: %s",
"loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Ein Zugriffstoken für den verwalteten Dienstprinzipal konnte nicht abgerufen werden. Statuscode: %s, Statusmeldung: %s",
"loc.messages.ExpiredServicePrincipal": "Das Zugriffstoken für Azure konnte nicht abgerufen werden. Stellen Sie sicher, dass der verwendete Dienstprinzipal gültig und nicht abgelaufen ist."
}
Loading

0 comments on commit 1b13f75

Please sign in to comment.