Udostępnij za pośrednictwem


Przygotowywanie maszyny wirtualnej bazującej na systemie CentOS dla platformy Azure

Uwaga

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

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

Dowiedz się, jak utworzyć i przekazać wirtualny dysk twardy (VHD) platformy Azure zawierający system operacyjny Linux oparty na systemie operacyjnym CentOS. Aby uzyskać więcej informacji, zobacz:

Wymagania wstępne

W tym artykule założono, że masz już zainstalowany system operacyjny Linux CentOS (lub podobny pochodny) do dysku VHD. Istnieje wiele narzędzi do tworzenia plików vhd. Przykładem jest rozwiązanie wirtualizacji, takie jak funkcja Hyper-V. Aby uzyskać instrukcje, zobacz Instalowanie roli funkcji Hyper-V i konfigurowanie maszyny wirtualnej.

Uwagi dotyczące instalacji systemu CentOS

  • Aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure, zobacz Ogólne informacje o instalacji systemu Linux.
  • Format VHDX nie jest obsługiwany na platformie Azure, tylko stały dysk VHD. Dysk można przekonwertować na format VHD przy użyciu Menedżera funkcji Hyper-V lub convert-vhd polecenia cmdlet. Jeśli używasz usługi VirtualBox, wybierz pozycję Stały rozmiar , a nie domyślny, który jest dynamicznie przydzielany podczas tworzenia dysku.
  • Moduł jądra vfat musi być włączony w jądrze.
  • Podczas instalowania systemu Linux zaleca się używanie partycji standardowych, a nie menedżera woluminów logicznych (LVM), który jest często domyślny dla wielu instalacji. Użycie partycji pozwala uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli do rozwiązywania problemów należy dołączyć dysk systemu operacyjnego do innej identycznej maszyny wirtualnej. LVM lub RAID można również używać na dyskach danych.
  • Wymagana jest obsługa jądra instalowania systemów plików funkcji zdefiniowanych przez użytkownika (UDF). Podczas pierwszego rozruchu na platformie Azure konfiguracja aprowizacji jest przekazywana do maszyny wirtualnej z systemem Linux przy użyciu nośnika sformatowanego przez użytkownika dołączonego do gościa. Agent systemu Linux platformy Azure lub cloud-init musi zainstalować system plików UDF, aby odczytać jego konfigurację i aprowizować maszynę wirtualną.
  • Jądra systemu Linux w wersjach starszych niż 2.6.37 nie obsługują NUMA w funkcji Hyper-V o większych rozmiarach maszyn wirtualnych. Ten problem dotyczy głównie starszych dystrybucji przy użyciu nadrzędnego jądra Centos 2.6.32 i został rozwiązany w centos 6.6 (jądro-2.6.32-504). Systemy z niestandardowymi jądrami starszymi niż 2.6.37 lub Red Hat Enterprise Linux (RHEL) jądra oparte na wersji starszej niż 2.6.32-504 muszą ustawić parametr numa=off rozruchowy w wierszu polecenia jądra w pliku grub.conf. Aby uzyskać więcej informacji, zobacz Red Hat KB 436883.
  • Nie konfiguruj partycji wymiany na dysku systemu operacyjnego.
  • Wszystkie wirtualne dyski twarde na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB. Podczas konwertowania z dysku nieprzetworzonego na dysk VHD należy upewnić się, że rozmiar nieprzetworzonego dysku to wielokrotność 1 MB przed konwersją. Aby uzyskać więcej informacji, zobacz Informacje o instalacji systemu Linux.

Uwaga

Cloud-init >= 21.2 usuwa wymaganie funkcji zdefiniowanej przez użytkownika. Jednak bez włączonego modułu UDF dysk CD-ROM nie zostanie zamontowany podczas aprowizacji, co uniemożliwia stosowanie niestandardowych danych. Obejściem tej sytuacji jest zastosowanie niestandardowych danych przy użyciu danych użytkownika. W przeciwieństwie do danych niestandardowych dane użytkownika nie są szyfrowane. Aby uzyskać więcej informacji, zobacz Formaty danych użytkownika.

CentOS 6.x

Ważne

CentOS 6 osiągnął swój EOL i nie jest już obsługiwany przez społeczność CentOS. Żadne dalsze aktualizacje ani poprawki zabezpieczeń nie zostaną wydane dla tej wersji, co spowoduje, że będzie ona podatna na potencjalne zagrożenia bezpieczeństwa. Zdecydowanie zalecamy uaktualnienie do nowszej wersji systemu CentOS w celu zapewnienia bezpieczeństwa i stabilności systemu. Aby uzyskać dalszą pomoc, skontaktuj się z działem IT lub administratorem systemu.

  1. W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.

  2. Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.

  3. W systemie CentOS 6 NetworkManager może zakłócać działanie agenta systemu Linux platformy Azure. Odinstaluj ten pakiet:

    sudo rpm -e --nodeps NetworkManager
    
  4. Utwórz lub edytuj plik /etc/sysconfig/network i dodaj następujący tekst:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Utwórz lub edytuj plik /etc/sysconfig/network-scripts/ifcfg-eth0 i dodaj następujący tekst:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Zmodyfikuj reguły udev, aby uniknąć generowania reguł statycznych dla interfejsów Ethernet. Te reguły mogą powodować problemy podczas klonowania maszyny wirtualnej na platformie Azure lub funkcji Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    
  7. Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:

    sudo chkconfig network on
    
  8. Jeśli chcesz użyć dublowanych serwerów OpenLogic hostowanych w centrach danych platformy Azure, zastąp /etc/yum.repos.d/CentOS-Base.repo plik następującymi repozytoriami. Ta akcja dodaje również repozytorium [openlogic], które zawiera dodatkowe pakiety, takie jak agent systemu Linux platformy Azure:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that might be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    Uwaga

    W pozostałej części tego artykułu założono, że używasz co najmniej [openlogic] repozytorium, które jest używane do instalowania agenta systemu Linux platformy Azure.

  9. Dodaj następujący wiersz do :/etc/yum.conf

    http_caching=packages
    
  10. Wyczyść bieżące metadane yum i zaktualizuj system przy użyciu najnowszych pakietów:

    sudo yum clean all
    

    Jeśli nie tworzysz obrazu dla starszej wersji systemu CentOS, zalecamy zaktualizowanie wszystkich pakietów do najnowszej wersji:

    sudo yum -y update
    

    Po uruchomieniu tego polecenia może być wymagany ponowny rozruch.

  11. Opcjonalnie: zainstaluj sterowniki dla usług Integracji z systemem Linux (LIS).

    Ważne

    Krok jest wymagany w przypadku systemu CentOS 6.3 i starszej wersji i jest opcjonalny w przypadku nowszych wersji.

    sudo rpm -e hypervkvpd  ## (might return an error if not installed, that's OK)
    sudo yum install microsoft-hyper-v
    

    Alternatywnie możesz wykonać instrukcje instalacji ręcznej na stronie pobierania LIS, aby zainstalować rpm na maszynie wirtualnej.

  12. Zainstaluj agenta i zależności systemu Linux platformy Azure. Uruchom i włącz usługę waagent :

    sudo yum install python-pyasn1 WALinuxAgent
    sudo service waagent start
    sudo chkconfig waagent on
    

    Pakiet WALinuxAgent usuwa NetworkManager pakiety i NetworkManager-gnome , jeśli nie zostały jeszcze usunięte, zgodnie z opisem w kroku 3.

  13. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić inne parametry jądra dla platformy Azure. Aby wykonać ten krok, otwórz /boot/grub/menu.lst plik w edytorze tekstów i upewnij się, że domyślne jądro zawiera następujące parametry:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Ta modyfikacja gwarantuje również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem.

    Zalecamy również usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruch graficzny i cichy nie jest przydatny w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli crashkernel chcesz, można pozostawić opcję skonfigurowaną. Jednak ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problemem dla mniejszych rozmiarów maszyn wirtualnych.

    Ważne

    CentOS 6.5 i starsze muszą również ustawić parametr numa=offjądra . Aby uzyskać więcej informacji, zobacz Red Hat KB 436883.

  14. Upewnij się, że serwer Secure Shell jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym.

  15. Nie twórz miejsca wymiany na dysku systemu operacyjnego.

    Agent systemu Linux platformy Azure może automatycznie skonfigurować miejsce wymiany przy użyciu lokalnego dysku zasobów dołączonego do maszyny wirtualnej po aprowizacji maszyny wirtualnej na platformie Azure. Dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony po anulowaniu aprowizacji maszyny wirtualnej. Po zainstalowaniu agenta systemu Linux platformy Azure (zobacz poprzedni krok) zmodyfikuj odpowiednio następujące parametry /etc/waagent.conf :

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
    
  16. Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej do aprowizacji na platformie Azure:

    sudo waagent -force -deprovision+user
    sudo export HISTSIZE=0
    

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji.

  17. Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

CentOS 7.0+

Jeśli używasz systemu CentOS 7.0 lub nowszego, wykonaj kroki opisane w następnych sekcjach.

Zmiany w systemie CentOS 7 (i podobnych pochodnych)

Przygotowywanie maszyny wirtualnej z systemem CentOS 7 dla platformy Azure jest podobne do centOS 6. Warto zauważyć kilka znaczących różnic:

  • Pakiet NetworkManager nie powoduje już konfliktów z agentem systemu Linux platformy Azure. Ten pakiet jest instalowany domyślnie i zalecamy, aby go nie usuwać.

  • Program GRUB2 jest teraz używany jako domyślny moduł ładujący, więc procedura edytowania parametrów jądra została zmieniona. (Zobacz sekcję "Kroki konfiguracji".

  • System plików XFS jest teraz domyślnym systemem plików. Jeśli chcesz, system plików ext4 nadal może być używany.

  • Ponieważ usługa CentOS 8 Stream i nowsze nie są już domyślnie uwzględniane network.service , należy zainstalować ją ręcznie:

    sudo yum install network-scripts
    sudo systemctl enable network.service
    

Kroki w konfiguracji

  1. W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.

  2. Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.

  3. Utwórz lub edytuj plik /etc/sysconfig/network i dodaj następujący tekst:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Utwórz lub edytuj plik /etc/sysconfig/network-scripts/ifcfg-eth0 i dodaj następujący tekst:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Zmodyfikuj reguły udev, aby uniknąć generowania reguł statycznych dla interfejsów Ethernet. Te reguły mogą powodować problemy podczas klonowania maszyny wirtualnej na platformie Azure lub funkcji Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Jeśli chcesz użyć OpenLogic dublowania hostowanych w centrach danych platformy Azure, zastąp plik /etc/yum.repos.d/CentOS-Base.repo następującymi repozytoriami. Ta akcja dodaje również repozytorium [openlogic], które zawiera pakiety agenta systemu Linux platformy Azure:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that might be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    Uwaga

    W pozostałej części tego artykułu założono, że używasz co najmniej [openlogic] repozytorium, które jest używane do instalowania agenta systemu Linux platformy Azure.

  7. Wyczyść bieżące metadane yum i zainstaluj wszystkie aktualizacje:

    sudo yum clean all
    

    Jeśli nie tworzysz obrazu dla starszej wersji systemu CentOS, zalecamy zaktualizowanie wszystkich pakietów do najnowszej wersji:

    sudo yum -y update
    

    Po uruchomieniu tego polecenia może być wymagany ponowny rozruch.

  8. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić inne parametry jądra dla platformy Azure. Aby wykonać ten krok, otwórz /etc/default/grub plik w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr . Na przykład:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Ta modyfikacja gwarantuje również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem. Wyłącza również nowe konwencje nazewnictwa systemu CentOS 7 dla kart sieciowych. Zalecamy również usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruch graficzny i cichy nie jest przydatny w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli crashkernel chcesz, można pozostawić opcję skonfigurowaną. Jednak ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problemem dla mniejszych rozmiarów maszyn wirtualnych.

  9. Po zakończeniu edytowania /etc/default/grubponownie skompiluj konfigurację grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Uwaga

    Jeśli przekazujesz maszynę wirtualną z obsługą interfejsu UEFI, polecenie aktualizacji pliku grub to grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Ponadto moduł jądra vfat musi być włączony w jądrze. W przeciwnym razie aprowizacja kończy się niepowodzeniem.

    Upewnij się, że moduł udf jest włączony. Usunięcie lub wyłączenie spowoduje niepowodzenie aprowizacji lub rozruchu. (_Cloud-init >= 21.2 usuwa wymaganie udf. Aby uzyskać więcej informacji, przeczytaj górną część dokumentu).

  10. Jeśli tworzysz obraz z maszyn wirtualnych VMware, VirtualBox lub KVM, upewnij się, że sterowniki funkcji Hyper-V są dołączone do initramfs:

    1. Edytuj /etc/dracut.conf i dodaj zawartość:

      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    2. Ponownie skompiluj initramfs:

      sudo dracut -f -v
      
  11. Zainstaluj agenta i zależności systemu Linux platformy Azure dla rozszerzeń maszyn wirtualnych platformy Azure:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  12. Zainstaluj w cloud-init celu obsługi aprowizacji:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    • Skonfiguruj waagent dla programu cloud-init:
    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    
    sudo echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    if [[ -f /mnt/swapfile ]]; then
    echo Removing swapfile - RHEL uses a swapfile by default
    swapoff /mnt/swapfile
    rm /mnt/swapfile -f
    fi
    
    echo "Add console log file"
    cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
  13. Konfiguracja zamiany:

    1. Nie twórz miejsca wymiany na dysku systemu operacyjnego.

      Wcześniej agent systemu Linux platformy Azure był używany do automatycznego konfigurowania miejsca wymiany przy użyciu lokalnego dysku zasobów dołączonego do maszyny wirtualnej po aprowizacji maszyny wirtualnej na platformie Azure. cloud-init Jednak teraz obsługuje ten krok. Nie można używać agenta systemu Linux do formatowania dysku zasobu w celu utworzenia pliku wymiany. Zmodyfikuj odpowiednio następujące parametry /etc/waagent.conf :

      sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
      sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
      
    2. Jeśli chcesz zainstalować, sformatować i utworzyć plik zamiany, możesz wykonać następujące czynności:

      • Przekaż to polecenie jako konfigurację cloud-init za każdym razem, gdy tworzysz maszynę wirtualną.

      • Aby wykonać ten krok za każdym razem, gdy maszyna wirtualna jest tworzona, użyj dyrektywy zapiętej cloud-init do obrazu:

        sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
        sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
        #cloud-config
        # Generated by Azure cloud image build
        disk_setup:
          ephemeral0:
            table_type: mbr
            layout: [66, [33, 82]]
            overwrite: True
        fs_setup:
          - device: ephemeral0.1
            filesystem: ext4
          - device: ephemeral0.2
            filesystem: swap
        mounts:
          - ["ephemeral0.1", "/mnt"]
          - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
        EOF
        
  14. Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure.

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  15. Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

Teraz możesz przystąpić do tworzenia nowych maszyn wirtualnych na platformie Azure przy użyciu wirtualnego dysku twardego centOS Linux. Jeśli po raz pierwszy przekazujesz plik vhd na platformę Azure, zobacz Tworzenie maszyny wirtualnej z systemem Linux na podstawie dysku niestandardowego.