Udostępnij przez


Tworzenie i wdrażanie aplikacji maszyny wirtualnej

Aplikacja maszyny wirtualnej to typ zasobu w galerii obliczeń platformy Azure, który upraszcza zarządzanie, udostępnianie i globalną dystrybucję aplikacji dla maszyn wirtualnych. Dowiedz się więcej o aplikacji maszyny wirtualnej

Aby utworzyć i wdrożyć aplikacje na maszynie wirtualnej platformy Azure, najpierw spakuj i przekaż aplikację na konto usługi Azure Storage jako obiekt blob magazynu. Następnie utwórz Azure VM application zasób i VM application version zasób odwołujący się do tych obiektów blob magazynu. Na koniec wdróż aplikację na dowolnej maszynie wirtualnej lub zestawie skalowania maszyn wirtualnych, przekazując odwołanie do aplikacji w programie applicationProfile.

Wymagania wstępne

  1. Tworzenie konta usługi Azure Storage i kontenera magazynu. Ten kontener służy do przekazywania plików aplikacji. Zaleca się używanie konta magazynu z wyłączonym dostępem anonimowym w celu zwiększenia bezpieczeństwa.
  2. Tworzenie galerii zasobów obliczeniowych platformy Azure na potrzeby przechowywania i udostępniania zasobów aplikacji.

Spakuj aplikację

Zrzut ekranu przedstawiający strukturę folderów zalecaną do przekazywania i tworzenia aplikacji maszyn wirtualnych.

1. Spakuj pliki aplikacji

  • Jeśli instalacja aplikacji wymaga pojedynczego pliku (.exe, .msi, .sh, .ps itp.), możesz użyć go w taki sposób, jak jest.
  • Jeśli instalacja aplikacji wymaga wielu plików (plik wykonywalny z plikiem konfiguracji, zależnościami, plikami manifestu, skryptami itp.), musisz zarchiwizować go (przy użyciu .zip, .tar, .tar.gz itp.) w jednym pliku.
  • W przypadku aplikacji mikrousług można spakować i opublikować każdą mikrousługę jako oddzielną aplikację maszyny wirtualnej platformy Azure. Ułatwia to ponowne użycie aplikacji, tworzenie aplikacji między zespołami i sekwencyjną instalację mikrousług przy użyciu order właściwości w pliku applicationProfile.

2. (Opcjonalnie) Spakuj plik konfiguracji aplikacji

  • Opcjonalnie możesz oddzielnie podać plik konfiguracji. Zmniejsza to nakład pracy związany z archiwizowaniem i niearchiwowaniem pakietów aplikacji. Pliki konfiguracji można również przekazać podczas wdrażania aplikacji, włączając niestandardową instalację na maszynę wirtualną.

3. Tworzenie skryptu instalacji

Po pobraniu aplikacji i obiektu blob konfiguracji na maszynie wirtualnej platforma Azure wykonuje podany skrypt instalacji, aby zainstalować aplikację. Skrypt instalacji jest dostarczany jako ciąg i ma maksymalny limit znaków 4096 znaków. Polecenia instalacji należy napisać przy założeniu, że pakiet aplikacji i plik konfiguracji znajdują się w bieżącym katalogu.

Może być kilka operacji wymaganych do wykonania w skry skrycie instalacji

  • (Opcjonalnie) Użyj odpowiedniego interpretera poleceń Domyślny interpreter poleceń używany przez platformę Azure to /bin/bash system operacyjny Linux i cmd.exe system operacyjny Windows. Jeśli jest zainstalowany na maszynie, można użyć innego interpretera, takiego jak Chocolatey lub PowerShell. Wywołaj plik wykonywalny i przekaż do niego polecenia. Np. powershell.exe -command '<powershell command>'. Jeśli używasz programu PowerShell, musisz użyć wersji 3.11.0 modułu Az.Storage.

  • (Opcjonalnie) Zmienianie nazwy obiektu blob aplikacji i obiektu blob konfiguracji Platforma Azure nie może zachować oryginalnej nazwy pliku i rozszerzeń plików. W związku z tym pobrany plik aplikacji i plik konfiguracji mają domyślną nazwę "MyVMApp" i "MyVMApp-config" bez rozszerzenia pliku. Możesz zmienić nazwę pliku z rozszerzeniem pliku przy użyciu skryptu instalacji lub przekazać nazwy w packageFileName i configFileName właściwości publishingProfile zasobu wersji aplikacji maszyny wirtualnej. Platforma Azure będzie następnie używać tych nazw zamiast nazw domyślnych podczas pobierania plików.

  • (Opcjonalnie) Przenoszenie obiektu blob aplikacji i konfiguracji do odpowiedniej lokalizacji Platforma Azure pobiera obiekt blob aplikacji i obiekt blob konfiguracji do następujących lokalizacji. Skrypt instalacji musi w razie potrzeby przenieść pliki do odpowiednich lokalizacji.

    Linux: /var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<application name>/<application version>

    Windows: C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.16\Downloads\<application name>\<application version>

  • Niearchiwny obiekt blob aplikacji W przypadku zarchiwizowanych pakietów aplikacji należy ją niearchiwizować przed zainstalowaniem aplikacji. Zaleca się używanie .zip lub .tar, ponieważ większość systemów operacyjnych ma wbudowaną obsługę niearchiwnego formatowania tych formatów. W przypadku innych formatów upewnij się, że system operacyjny gościa zapewnia obsługę.

  • (Opcjonalnie) Ustaw odpowiednie zasady wykonywania i uprawnienia Po niearchiwowaniu można zresetować uprawnienia do plików. Dobrym rozwiązaniem jest ustawienie odpowiednich uprawnień przed wykonaniem plików.

  • Konwertowanie skryptu na ciąg Skrypt instalacji jest przekazywany jako ciąg właściwości install w zasobie publishingProfile wersji aplikacji maszyny wirtualnej platformy Azure.

Oto przykładowe skrypty instalacji oparte na rozszerzeniu pliku obiektu blob aplikacji

#!/bin/bash

# Rename blobs
mv MyVMApp app.tar
mv MyVMApp-config app-config.yaml

# Unarchive application
mkdir -p app
tar -xf app.tar -C app

# Set permissions
chmod -R +x app
chmod -R +r app

# Install the script (example: install.sh with config)
bash ./app/install.sh --config app-config.yaml

# OR Install the .deb package (example: install.deb without config)
# sudo dpkg -i ./app/install.deb

# OR Install the .rpm package (example: install.rpm without config)
# sudo rpm -ivh ./app/install.rpm

Skrypt jako ciąg:

"#!/bin/bash\nmv MyVMApp app.tar\nmv MyVMApp-config app-config.yaml\nmkdir -p app\ntar -xf app.tar -C app\nchmod -R +x app\nchmod -R +r app\nbash ./app/install.sh --config app-config.yaml\n# sudo dpkg -i ./app/install.deb\n# sudo rpm -ivh ./app/install.rpm"

4. Tworzenie skryptu usuwania

Skrypt usuwania umożliwia zdefiniowanie operacji usuwania dla aplikacji. Skrypt usuwania jest dostarczany jako ciąg i ma maksymalny limit znaków wynoszący 4096 znaków. Zapisz polecenia usuwania przy założeniu, że pakiet aplikacji i plik konfiguracji znajdują się w bieżącym katalogu.

Może istnieć kilka operacji, które muszą wykonać skrypt usuwania.

  • Odinstaluj aplikację: Poprawnie odinstaluj aplikację z maszyny wirtualnej. Na przykład wykonaj polecenie uninstall.exe w systemie Windows lub sudo apt remove app w systemie Linux.

  • Usuń pliki reszt: Usuń pliki reszt aplikacji z maszyny wirtualnej. Na przykład wykonaj polecenie Remove-Item -Path "$PWD\*" -Recurse -Force -ErrorAction SilentlyContinue w systemie Windows lub sudo rm -rf ./* ./.??* w systemie Linux.

Przekazywanie plików aplikacji do konta usługi Azure Storage

1. Przekaż pliki aplikacji i konfiguracji do kontenera na koncie usługi Azure Storage.

Aplikację można przechowywać w bloku lub stronicowym obiekcie blob. Jeśli zdecydujesz się użyć stronicowego obiektu blob, przed ich przekazaniem należy wyrównać bajty. Użyj poniższego przykładu, aby wyrównać plik względem bajtów.

inputFile="<the file you want to pad>"

# Get the file size
fileSize=$(stat -c %s "$inputFile")

# Calculate the remainder when divided by 512
remainder=$((fileSize % 512))

if [ "$remainder" -ne 0 ]; then
    # Calculate how many bytes to pad
    difference=$((512 - remainder))
    
    # Create padding (empty bytes)
    dd if=/dev/zero bs=1 count=$difference >> "$inputFile"
fi

2. Generowanie adresu URL sygnatury dostępu współdzielonego dla pakietu aplikacji i pliku konfiguracji

Po przekazaniu plików aplikacji i konfiguracji do konta magazynu należy wygenerować adres URL sygnatury dostępu współdzielonego z uprawnieniami do odczytu dla tych obiektów blob. Te adresy URL sygnatur dostępu współdzielonego są następnie udostępniane jako odwołanie podczas tworzenia zasobu wersji aplikacji maszyny wirtualnej. W przypadku kont usługi Storage z włączonym dostępem anonimowym można również użyć adresu URL obiektu blob. Zaleca się jednak używanie adresu URL sygnatury dostępu współdzielonego w celu zwiększenia bezpieczeństwa. Jeśli jeszcze go nie masz, możesz użyć Eksplorator usługi Storage, aby szybko utworzyć identyfikator URI sygnatury dostępu współdzielonego.


#!/bin/bash

# === CONFIGURATION ===
STORAGE_ACCOUNT="yourstorageaccount"
CONTAINER_NAME="yourcontainer"
LOCAL_FOLDER="./your-local-folder"
SAS_EXPIRY_HOURS=24

# === LOGIN (if not already logged in) ===
az login --only-show-errors

# === CREATE CONTAINER IF NOT EXISTS ===
az storage container create \
  --name $CONTAINER_NAME \
  --account-name $STORAGE_ACCOUNT \
  --auth-mode login \
  --only-show-errors

# === UPLOAD FILES ===
az storage blob upload-batch \
  --account-name $STORAGE_ACCOUNT \
  --destination $CONTAINER_NAME \
  --source $LOCAL_FOLDER \
  --auth-mode login \
  --only-show-errors

# === GENERATE SAS URLs ===
echo "Generating SAS URLs..."
FILES=$(find $LOCAL_FOLDER -type f)

for FILE in $FILES; do
  BLOB_NAME="${FILE#$LOCAL_FOLDER/}"
  EXPIRY=$(date -u -d "+$SAS_EXPIRY_HOURS hours" '+%Y-%m-%dT%H:%MZ')

  SAS_TOKEN=$(az storage blob generate-sas \
    --account-name $STORAGE_ACCOUNT \
    --container-name $CONTAINER_NAME \
    --name "$BLOB_NAME" \
    --permissions r \
    --expiry $EXPIRY \
    --auth-mode login \
    -o tsv)

  SAS_URL="https://${STORAGE_ACCOUNT}.blob.core.windows.net/${CONTAINER_NAME}/${BLOB_NAME}?${SAS_TOKEN}"
  echo "$BLOB_NAME: $SAS_URL"
done

Tworzenie aplikacji maszyny wirtualnej

Aby utworzyć aplikację maszyny wirtualnej, najpierw utwórz zasób aplikacji maszyny wirtualnej, który opisuje aplikację. Następnie utwórz w nim zasób wersja aplikacji maszyny wirtualnej, który zawiera ładunek aplikacji maszyny wirtualnej i skrypty umożliwiające instalowanie, aktualizowanie i usuwanie aplikacji. Ładunek jest dostarczany przy użyciu adresu URL sygnatury dostępu współdzielonego do kontenera obiektów blob na koncie usługi Azure Storage.

Zapoznaj się ze schematem zasobu wersji aplikacji maszyny wirtualnej i aplikacji maszyny wirtualnej , aby dowiedzieć się więcej o każdej właściwości.

Utwórz definicję aplikacji maszyny wirtualnej, używając 'create gallery application API'

PUT
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{applicationName}?api-version=2024-03-03

{
    "location": "West US",
    "name": "myApp",
    "properties": {
        "supportedOSType": "Windows | Linux",
        "endOfLifeDate": "2020-01-01",
	"description": "Description of the App",
	"eula": "Link to End-User License Agreement (EULA)",
	"privacyStatementUri": "Link to privacy statement for the application",
	"releaseNoteUri": "Link to release notes for the application"
    }
}

Utwórz wersję aplikacji maszyny wirtualnej przy użyciu API do tworzenia wersji aplikacji w galerii.

PUT
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{applicationName}/versions/{versionName}?api-version=2024-03-03

{
  "location": "$location",
  "properties": {
    "publishingProfile": {
      "source": {
        "mediaLink": "$mediaLink",
        "defaultConfigurationLink": "$configLink"
      },
      "manageActions": {
        "install": "echo installed",
        "remove": "echo removed",
        "update": "echo update"
      },
      "targetRegions": [
        {
          "name": "West US",
          "regionalReplicaCount": 1
        },
	{
	  "name": "East US"
	}
      ]
      "endofLifeDate": "datetime",
      "replicaCount": 1,
      "excludeFromLatest": false,
      "storageAccountType": "PremiumV2_LRS | Premium_LRS | Standard_LRS | Standard_ZRS"
      "safetyProfile": {
	"allowDeletionOfReplicatedLocations": false
      }
      "settings": {
	"scriptBehaviorAfterReboot": "None | Rerun",
	"configFileName": "$appConfigFileName",
	"packageFileName": "$appPackageFileName"
      }
   }
}

Wdrażanie aplikacji maszyny wirtualnej

W usłudze applicationProfile Azure VM Scale Sets można teraz odwoływać się do co najmniej jednej aplikacji maszyny wirtualnej platformy Azure. Następnie platforma Azure ściąga ładunek aplikacji maszyny wirtualnej i instaluje ją na każdej maszynie wirtualnej przy użyciu dostarczonego skryptu instalacji. Właściwość order definiuje kolejność sekwencyjną, w której aplikacje maszyn wirtualnych są instalowane na maszynie wirtualnej.

Zapoznaj się ze schematem aplikacjiProfile maszyny wirtualnej/zestawu skalowania maszyn wirtualnych , aby dowiedzieć się więcej o każdej właściwości.

Aby dodać wersję aplikacji maszyny wirtualnej do maszyny wirtualnej, wykonaj operację PUT na maszynie wirtualnej.

PUT
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VMName}?api-version=2024-03-03

{
  "properties": {
    "applicationProfile": {
      "galleryApplications": [
        {
          "order": 1,
          "packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version | latest}",
          "configurationReference": "{path to configuration storage blob}",
          "treatFailureAsDeploymentFailure": false
        }
      ]
    }
  },
  "name": "{vm name}",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
  "location": "{vm location}"
}

Aby zastosować aplikację maszyny wirtualnej do ujednoliconego zestawu skalowania:

PUT
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMSSName}?api-version=2024-03-03

{
  "properties": {
    "virtualMachineProfile": {
      "applicationProfile": {
        "galleryApplications": [
          {
            "order": 1,
            "packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version | latest}",
            "configurationReference": "{path to configuration storage blob}",
            "treatFailureAsDeploymentFailure": false
          }
        ]
      }
    }
  },
  "name": "{vm name}",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
  "location": "{vm location}"
}

Odpowiedź zawiera pełny model maszyny wirtualnej. Poniżej przedstawiono odpowiednie części.

{
  "name": "{vm name}",
  "id": "{vm id}",
  "type": "Microsoft.Compute/virtualMachines",
  "location": "{vm location}",
  "properties": {
    "applicationProfile": {
      "galleryApplications": ""
    },
    "provisioningState": "Updating"
  },
  "resources": [
    {
      "name": "VMAppExtension",
      "id": "{extension id}",
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "location": "centraluseuap",
      "properties": "@{autoUpgradeMinorVersion=True; forceUpdateTag=7c4223fc-f4ea-4179-ada8-c8a85a1399f5; provisioningState=Creating; publisher=Microsoft.CPlat.Core; type=VMApplicationManagerLinux; typeHandlerVersion=1.0; settings=}"
    }
  ]
}

Następne kroki

Dowiedz się więcej o aplikacjach maszyn wirtualnych platformy Azure. Dowiedz się , jak zarządzać, aktualizować lub usuwać aplikacje maszyn wirtualnych platformy Azure.