Niestandardowe dane i inicjowanie chmury na maszynach wirtualnych platformy Azure

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny wirtualne z systemem Windows — elastyczne zestawy ✔️ ✔️ skalowania

Może być konieczne wstrzyknięcie skryptu lub innych metadanych do maszyny wirtualnej platformy Microsoft Azure w czasie aprowizacji. W innych chmurach ta koncepcja jest często nazywana danymi użytkownika. Platforma Microsoft Azure ma podobną funkcję o nazwie dane niestandardowe.

Dane niestandardowe są udostępniane maszynie wirtualnej podczas pierwszego uruchamiania lub konfiguracji, która jest nazywana aprowizowaniem. Inicjowanie obsługi administracyjnej to proces, w którym parametry tworzenia maszyny wirtualnej (na przykład nazwa hosta, nazwa użytkownika, hasło, certyfikaty, dane niestandardowe i klucze) są udostępniane maszynie wirtualnej. Agent aprowizacji, taki jak agent systemu Linux lub cloud-init, przetwarza te parametry.

Przekazywanie danych niestandardowych do maszyny wirtualnej

Aby korzystać z danych niestandardowych, musisz zakodować zawartość base64 przed przekazaniem danych do interfejsu API — chyba że używasz narzędzia interfejsu wiersza polecenia, które wykonuje konwersję, na przykład interfejsu wiersza polecenia platformy Azure. Rozmiar nie może przekraczać 64 KB.

W interfejsie wiersza polecenia możesz przekazać dane niestandardowe jako plik, jak pokazano w poniższym przykładzie. Plik jest konwertowany na base64.

az vm create \
  --resource-group myResourceGroup \
  --name centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

W usłudze Azure Resource Manager dostępna jest funkcja base64:

"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-07-01",
"location": "[parameters('location')]",
"dependsOn": [
..],
"variables": {
        "customDataBase64": "[base64(parameters('stringData'))]"
    },
"properties": {
..
    "osProfile": {
        "computerName": "[parameters('virtualMachineName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "customData": "[variables('customDataBase64')]"
        },

Przetwarzanie danych niestandardowych

Agenci aprowizacji zainstalowani na maszynach wirtualnych obsługują komunikację z platformą i umieszczają dane w systemie plików.

Windows

Dane niestandardowe są umieszczane w folderze %SYSTEMDRIVE%\AzureData\CustomData.bin jako plik binarny, ale nie są przetwarzane. Jeśli chcesz przetworzyć ten plik, musisz utworzyć obraz niestandardowy i napisać kod w celu przetworzenia CustomData.bin.

Linux

W systemach operacyjnych Linux dane niestandardowe są przekazywane do maszyny wirtualnej za pośrednictwem pliku ovf-env.xml . Ten plik jest kopiowany do katalogu /var/lib/waagent podczas aprowizacji. Nowsze wersje agenta systemu Linux skopiuj dane zakodowane w formacie Base64 do /var/lib/waagent/CustomData dla wygody.

Platforma Azure obsługuje obecnie dwóch agentów aprowizacji:

  • Agent systemu Linux. Domyślnie agent nie przetwarza danych niestandardowych. Musisz utworzyć obraz niestandardowy z włączonymi danymi. Odpowiednie ustawienia to:

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    Po włączeniu danych niestandardowych i uruchomieniu skryptu maszyna wirtualna nie zgłosi pomyślnej aprowizacji maszyny wirtualnej do momentu zakończenia wykonywania skryptu. Jeśli skrypt przekroczy całkowity limit czasu aprowizacji maszyny wirtualnej wynoszący 40 minut, tworzenie maszyny wirtualnej zakończy się niepowodzeniem.

    Jeśli uruchomienie skryptu nie powiedzie się lub podczas wykonywania wystąpią błędy, nie jest to błąd krytyczny aprowizacji. Musisz utworzyć ścieżkę powiadomienia, aby otrzymywać alerty dotyczące stanu ukończenia skryptu.

    Aby rozwiązać problemy z wykonywaniem danych niestandardowych, zapoznaj się z artykułem /var/log/waagent.log.

  • cloud-init. Domyślnie ten agent przetwarza dane niestandardowe. Akceptuje wiele formatów danych niestandardowych , takich jak konfiguracja cloud-init i skrypty.

    Podobnie jak w przypadku agenta systemu Linux, jeśli błędy występują podczas wykonywania przetwarzania konfiguracji lub skryptów, gdy usługa cloud-init przetwarza dane niestandardowe, nie jest to błąd krytyczny aprowizacji. Musisz utworzyć ścieżkę powiadomienia, aby otrzymywać alerty dotyczące stanu ukończenia skryptu.

    Jednak w przeciwieństwie do agenta systemu Linux,cloud-init nie czeka na niestandardowe konfiguracje danych od użytkownika, aby zakończyć przed raportowaniem do platformy, że maszyna wirtualna jest gotowa. Aby uzyskać więcej informacji na temat pakietu cloud-init na platformie Azure, w tym rozwiązywania problemów, zobacz obsługa pakietu cloud-init dla maszyn wirtualnych na platformie Azure.

Często zadawane pytania

Czy mogę zaktualizować dane niestandardowe po utworzeniu maszyny wirtualnej?

W przypadku pojedynczych maszyn wirtualnych nie można zaktualizować danych niestandardowych w modelu maszyny wirtualnej. Jednak w przypadku zestawów skalowania maszyn wirtualnych można zaktualizować dane niestandardowe. Aby uzyskać więcej informacji, zobacz Modyfikowanie zestawu skalowania. Podczas aktualizowania danych niestandardowych w modelu dla zestawu skalowania maszyn wirtualnych:

  • Istniejące wystąpienia w zestawie skalowania nie pobierają zaktualizowanych danych niestandardowych, dopóki nie zostaną zaktualizowane do najodpowidniejszego modelu i nie zostaną odzowione.
  • Nowe wystąpienia otrzymują nowe dane niestandardowe.

Czy mogę umieścić poufne wartości w danych niestandardowych?

Zalecamy , aby nie przechowywać poufnych danych w danych niestandardowych. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące zabezpieczeń i szyfrowania danych platformy Azure.

Czy dane niestandardowe są udostępniane w usłudze IMDS?

Dane niestandardowe nie są dostępne w usłudze Azure Instance Metadata Service (IMDS). Sugerujemy zamiast tego używanie danych użytkownika w usłudze IMDS. Aby uzyskać więcej informacji, zobacz Dane użytkownika za pośrednictwem usługi Azure Instance Metadata Service.