Przygotowywanie maszyny wirtualnej bazującej na systemie Red Hat dla platformy Azure

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

W tym artykule dowiesz się, jak przygotować maszynę wirtualną Red Hat Enterprise Linux (RHEL) do użycia na platformie Azure. Wersje systemu RHEL omówione w tym artykule to 6.X, 7.X i 8.X. Funkcje hypervisor do przygotowania, które zostały omówione w tym artykule, to funkcja Hyper-V, maszyna wirtualna oparta na jądrze (KVM) i VMware. Aby uzyskać więcej informacji na temat wymagań kwalifikacyjnych dotyczących udziału w programie Cloud Access firmy Red Hat, zobacz witrynę internetową dostępu do chmury firmy Red Hat i uruchamianie systemu RHEL na platformie Azure. Aby uzyskać informacje na temat sposobów automatyzowania tworzenia obrazów systemu RHEL, zobacz Azure Image Builder.

Uwaga

Należy pamiętać o wersjach, które są end of life (EOL) i nie są już obsługiwane przez Redhat. Przekazane obrazy, które znajdują się w EOL lub poza nią, będą obsługiwane w rozsądnym zakresie pracy biznesowej. Link do cyklu życia produktu oprogramowania Redhat

Menedżer funkcji Hyper-V

W tej sekcji pokazano, jak przygotować maszynę wirtualną RHEL 6, RHEL 7 lub RHEL 8 przy użyciu Menedżera funkcji Hyper-V.

Wymagania wstępne

W tej sekcji założono, że plik ISO został już uzyskany z witryny internetowej red hat i zainstalowany obraz RHEL na wirtualnym dysku twardym (VHD). Aby uzyskać więcej informacji na temat sposobu instalowania obrazu systemu operacyjnego za pomocą Menedżera funkcji Hyper-V, zobacz Instalowanie roli funkcji Hyper-V i Konfigurowanie maszyny wirtualnej.

Uwagi dotyczące instalacji systemu RHEL

  • Platforma Azure nie obsługuje formatu VHDX. pomoc techniczna platformy Azure tylko stały dysk VHD. Za pomocą Menedżera funkcji Hyper-V można przekonwertować dysk na format VHD lub użyć polecenia cmdlet convert-vhd. Jeśli używasz usługi VirtualBox, wybierz opcję Stały rozmiar , a nie domyślną opcję dynamicznie przydzieloną podczas tworzenia dysku.

  • maszyny wirtualne pomoc techniczna platformy Azure s Gen1 (rozruch systemu BIOS) i Gen2 (rozruch UEFI).

  • Maksymalny rozmiar dozwolony dla dysku VHD wynosi 1023 GB.

  • Moduł jądra vfat musi być włączony w jądrze.

  • Menedżer woluminów logicznych (LVM) jest obsługiwany i może być używany na dysku systemu operacyjnego lub dyskach danych na maszynach wirtualnych platformy Azure. Ogólnie jednak zalecamy używanie partycji standardowych na dysku systemu operacyjnego, a nie LVM. Takie rozwiązanie pozwoli uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli kiedykolwiek trzeba dołączyć dysk systemu operacyjnego do innej identycznej maszyny wirtualnej do rozwiązywania problemów. Zapoznaj się z dokumentacją LVM i RAID .

  • Wymagana jest obsługa jądra na potrzeby instalowania systemów plików formatu uniwersalnego dysku (UDF). Podczas pierwszego rozruchu na platformie Azure nośnik sformatowany przez użytkownika dołączony do gościa przekazuje konfigurację aprowizacji do maszyny wirtualnej z systemem Linux. Agent systemu Linux platformy Azure musi mieć możliwość zainstalowania systemu plików UDF, aby odczytać jego konfigurację i aprowizować maszynę wirtualną, bez tego aprowizowanie zakończy się niepowodzeniem.

  • Nie konfiguruj partycji wymiany na dysku systemu operacyjnego. Więcej informacji na ten temat można znaleźć w poniższych krokach.

  • 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ą. Więcej szczegółów można znaleźć w poniższych krokach. Zobacz też Informacje o instalacji systemu Linux, aby uzyskać więcej informacji.

Uwaga

Cloud-init >= 21.2 usuwa wymaganie udf. Jednak bez włączonego modułu udf usługa cdrom nie będzie instalować podczas aprowizacji, uniemożliwiając stosowanie niestandardowych danych. Obejściem tego problemu jest zastosowanie niestandardowych danych przy użyciu danych użytkownika. Jednak w przeciwieństwie do danych niestandardowych dane użytkownika nie są szyfrowane. https://cloudinit.readthedocs.io/en/latest/topics/format.html

RHEL 6 przy użyciu Menedżera funkcji Hyper-V

Ważne

Począwszy od 30 listopada 2020 r., system Red Hat Enterprise Linux 6 zakończy fazę konserwacji. Po fazie konserwacji następuje faza rozszerzonego okresu eksploatacji. Ponieważ system Red Hat Enterprise Linux 6 przechodzi poza fazy pełnej/konserwacji, zdecydowanie zalecamy uaktualnienie do systemu Red Hat Enterprise Linux 7, 8 lub 9. Jeśli klienci muszą pozostać w systemie Red Hat Enterprise Linux 6, zalecamy dodanie dodatku Red Hat Enterprise Linux Extended Life Cycle Support (ELS).

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

  2. Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.

  3. W systemie RHEL 6 menedżer sieci może zakłócać działanie agenta systemu Linux platformy Azure. Odinstaluj ten pakiet, uruchamiając następujące polecenie:

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

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Przenieś (lub usuń) reguły udev, aby uniknąć generowania reguł statycznych dla interfejsu Ethernet. Te reguły powodują problemy podczas klonowania maszyny wirtualnej na platformie Microsoft 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
    

Uwaga

** W przypadku korzystania z przyspieszonej sieci (AN) utworzony interfejs syntetyczny musi być skonfigurowany jako niezarządzany przy użyciu reguły ujmowania. Uniemożliwi to menedżerowi sieci przypisanie do niego tego samego adresu IP jako interfejsu podstawowego.

Aby go zastosować:

sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
# Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
# This interface is transparentlybonded to the synthetic interface,
# so NetworkManager should just ignore any SRIOV interfaces.
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
EOF
  1. Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:

    sudo chkconfig network on
    
  2. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL, uruchamiając następujące polecenie:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Pakiet WALinuxAgent-<version>WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków, uruchamiając następujące polecenie:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby wykonać tę modyfikację, otwórz /boot/grub/menu.lst w edytorze tekstów i upewnij się, że domyślne jądro zawiera następujące parametry:

    console=ttyS0 earlyprintk=ttyS0
    

    Zapewni to 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.

    Ponadto zalecamy usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego. W razie potrzeby możesz pozostawić crashkernel opcję skonfigurowaną. Należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej. Ta konfiguracja może być problematyczna w przypadku mniejszych rozmiarów maszyn wirtualnych.

  5. Upewnij się, że serwer secure shell (SSH) jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj /etc/ssh/sshd_config, aby uwzględnić następujący wiersz:

    ClientAliveInterval 180
    
  6. Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    

    Zainstalowanie pakietu WALinuxAgent usuwa pakiety NetworkManager i NetworkManager-manager-gno, jeśli nie zostały jeszcze usunięte w kroku 3.

  7. 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. Należy pamiętać, że dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony, jeśli maszyna wirtualna zostanie anulowana. Po zainstalowaniu agenta systemu Linux platformy Azure w poprzednim kroku odpowiednio zmodyfikuj następujące parametry w pliku /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.
    
  8. Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:

    sudo subscription-manager unregister
    
  9. 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 waagent -force -deprovision
    sudo export HISTSIZE=0
  1. Kliknij przycisk Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

RHEL 7 przy użyciu Menedżera funkcji Hyper-V

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

  2. Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.

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

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  5. Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:

    sudo systemctl enable network
    
  6. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL, uruchamiając następujące polecenie:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby wykonać tę modyfikację, otwórz /etc/default/grub w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr . Na przykład:

    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0"
    GRUB_TERMINAL_OUTPUT="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    

    Zapewni to również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego i umożliwiają interakcję z konsolą szeregową, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem. Ta konfiguracja wyłącza również nowe konwencje nazewnictwa RHEL 7 dla kart sieciowych.

    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego. W razie potrzeby możesz pozostawić crashkernel opcję skonfigurowaną. Należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  8. Po zakończeniu edytowania /etc/default/gruburuchom następujące polecenie, aby ponownie skompilować konfigurację grub:

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

    Uwaga

    Jeśli przekaże maszynę wirtualną z włączoną obsługą interfejsu UEFI, polecenie aktualizacji pliku grub to grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj /etc/ssh/sshd_config , aby uwzględnić następujący wiersz:

    ClientAliveInterval 180
    
  10. Pakiet WALinuxAgent-<version>WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków, uruchamiając następujące polecenie:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Zainstaluj agenta systemu Linux platformy Azure, pakietu cloud-init i innych niezbędnych narzędzi, uruchamiając następujące polecenie:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  12. Konfigurowanie pakietu cloud-init w celu obsługi aprowizacji:

    1. Skonfiguruj moduł waagent dla pakietu 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
    

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, ustaw Provisioning.Agent=disabled go w /etc/waagent.conf konfiguracji.

    1. Konfigurowanie instalacji:
    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
    
    1. Konfigurowanie źródła danych platformy Azure:
    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
    
    1. W przypadku skonfigurowania usuń istniejący plik swapfile:
    if [[ -f /mnt/resource/swapfile ]]; then
    echo "Removing swapfile" #RHEL uses a swapfile by default
    swapoff /mnt/resource/swapfile
    rm /mnt/resource/swapfile -f
    fi
    
    1. Konfigurowanie rejestrowania cloud-init:
    sudo echo "Add console log file"
    sudo 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. Zamień konfigurację. 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. Jednak jest to teraz obsługiwane przez cloud-init, nie można używać agenta systemu Linux do formatowania dysku zasobu tworzenia pliku zamiany, zmodyfikuj następujące parametry odpowiednio/etc/waagent.conf:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Jeśli chcesz zainstalować, sformatować i utworzyć zamianę, możesz wykonać następujące czynności:

    • Przekaż to jako konfigurację cloud-init za każdym razem, gdy tworzysz maszynę wirtualną za pomocą danych niestandardowych. Jest to zalecana metoda.

    • Użyj dyrektywy cloud-init wypiekanej do obrazu, która zrobi to za każdym razem, gdy maszyna wirtualna zostanie utworzona.

      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/resource"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  14. Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:

    sudo subscription-manager unregister
    
  15. Anulowanie aprowizacji

    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. Uruchomienie polecenia waagent -force -deprovision+user spowoduje, że maszyna źródłowa będzie bezużyteczna. Ten krok jest przeznaczony tylko do utworzenia uogólnionego obrazu.

    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
    
  16. Kliknij przycisk Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

RHEL 8 przy użyciu Menedżera funkcji Hyper-V

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

  2. Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.

  3. Upewnij się, że usługa Menedżer sieci zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:

    sudo systemctl enable NetworkManager.service
    
  4. Skonfiguruj interfejs sieciowy, aby automatycznie uruchamiał się podczas rozruchu i używał protokołu DHCP:

    sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
    
  5. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL, uruchamiając następujące polecenie:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  6. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure i włączyć konsolę szeregową.

    1. Usuń bieżące parametry GRUB:
    sudo grub2-editenv - unset kernelopts
    
    1. Edytuj /etc/default/grub w edytorze tekstów i dodaj następujące parametry:
    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0"
    GRUB_TERMINAL_OUTPUT="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    

    Zapewni to również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego i umożliwiają interakcję z konsolą szeregową, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem. Ta konfiguracja wyłącza również nowe konwencje nazewnictwa kart sieciowych.

    1. Ponadto zalecamy usunięcie następujących parametrów:
    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego. W razie potrzeby możesz pozostawić crashkernel opcję skonfigurowaną. Należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  7. Po zakończeniu edytowania /etc/default/gruburuchom następujące polecenie, aby ponownie skompilować konfigurację grub:

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

    W przypadku maszyny wirtualnej z obsługą interfejsu UEFI uruchom następujące polecenie:

    sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  8. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj /etc/ssh/sshd_config , aby uwzględnić następujący wiersz:

    ClientAliveInterval 180
    
  9. Zainstaluj agenta systemu Linux platformy Azure, pakietu cloud-init i innych niezbędnych narzędzi, uruchamiając następujące polecenie:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  10. Konfigurowanie pakietu cloud-init w celu obsługi aprowizacji:

    1. Skonfiguruj moduł waagent dla pakietu cloud-init:
    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/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
    

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, ustaw Provisioning.Agent=disabled go w /etc/waagent.conf konfiguracji.

    1. Konfigurowanie instalacji:
    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
    
    1. Konfigurowanie źródła danych platformy Azure:
    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
    
    1. W przypadku skonfigurowania usuń istniejący plik swapfile:
    if [[ -f /mnt/resource/swapfile ]]; then
    echo "Removing swapfile" #RHEL uses a swapfile by defaul
    swapoff /mnt/resource/swapfile
    rm /mnt/resource/swapfile -f
    fi
    
    1. Konfigurowanie rejestrowania cloud-init:
    sudo echo "Add console log file"
    sudo 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
    
  11. Konfiguracja zamiany Nie twórz miejsca 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. Jednak jest to teraz obsługiwane przez cloud-init, nie można używać agenta systemu Linux do formatowania dysku zasobu tworzenia pliku zamiany, zmodyfikuj następujące parametry odpowiednio/etc/waagent.conf:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    
    • Przekaż to jako konfigurację cloud-init za każdym razem, gdy tworzysz maszynę wirtualną za pomocą danych niestandardowych. Jest to zalecana metoda.

    • Użyj dyrektywy cloud-init wypiekanej do obrazu, która zrobi to za każdym razem, gdy maszyna wirtualna zostanie utworzona.

      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/resource"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"]
      EOF
      
  12. Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:

    sudo subscription-manager unregister
    
  13. Anulowanie aprowizacji

    Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure:

    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo sudo rm -f /var/log/waagent.log
    sudo export HISTSIZE=0
    

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji. Uruchomienie polecenia waagent -force -deprovision+user spowoduje, że maszyna źródłowa będzie bezużyteczna. Ten krok jest przeznaczony tylko do utworzenia uogólnionego obrazu.

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

KVM

W tej sekcji przedstawiono sposób użycia maszyny wirtualnej KVM do przygotowania dystrybucji RHEL 6 lub RHEL 7 do przekazania na platformę Azure.

RHEL 6 przy użyciu maszyny wirtualnej KVM

Ważne

Począwszy od 30 listopada 2020 r., system Red Hat Enterprise Linux 6 zakończy fazę konserwacji. Po fazie konserwacji następuje faza rozszerzonego okresu eksploatacji. Ponieważ system Red Hat Enterprise Linux 6 przechodzi poza fazy pełnej/konserwacji, zdecydowanie zalecamy uaktualnienie do systemu Red Hat Enterprise Linux 7, 8 lub 9. Jeśli klienci muszą pozostać w systemie Red Hat Enterprise Linux 6, zalecamy dodanie dodatku Red Hat Enterprise Linux Extended Life Cycle Support (ELS).

  1. Pobierz obraz KVM systemu RHEL 6 ze strony internetowej Red Hat.

  2. Ustaw hasło główne.

    Wygeneruj zaszyfrowane hasło i skopiuj dane wyjściowe polecenia:

    sudo openssl passwd -1 changeme
    

    Ustaw hasło główne z atrybutem guestfish:

    sudo guestfish --rw -a <image-name>
    > <fs> run
    > <fs> list-filesystems
    > <fs> mount /dev/sda1 /
    > <fs> vi /etc/shadow
    > <fs> exit
    

    Zmień drugie pole użytkownika głównego z "!!" na zaszyfrowane hasło.

  3. Utwórz maszynę wirtualną na maszynie wirtualnej KVM na podstawie obrazu qcow2. Ustaw typ dysku na qcow2 i ustaw model urządzenia interfejsu sieciowego wirtualnego na virtio. Następnie uruchom maszynę wirtualną i zaloguj się jako katalog główny.

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

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Przenieś (lub usuń) reguły udev, aby uniknąć generowania reguł statycznych dla interfejsu Ethernet. Te reguły powodują 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
    

Uwaga

** W przypadku korzystania z przyspieszonej sieci (AN) utworzony interfejs syntetyczny musi być skonfigurowany jako niezarządzany przy użyciu reguły ujmowania. Uniemożliwi to menedżerowi sieci przypisanie do niego tego samego adresu IP jako interfejsu podstawowego.

Aby go zastosować:

sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
# Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
# This interface is transparently bonded to the synthetic interface,
# so NetworkManager should just ignore any SRIOV interfaces.
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
EOF
  1. Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:

    sudo chkconfig network on
    
  2. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL, uruchamiając następujące polecenie:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby wykonać tę konfigurację, otwórz plik /boot/grub/menu.lst w edytorze tekstów i upewnij się, że domyślne jądro zawiera następujące parametry:

    console=ttyS0 earlyprintk=ttyS0
    

    Zapewni to 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.

    Ponadto zalecamy usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego. W razie potrzeby możesz pozostawić crashkernel opcję skonfigurowaną. Należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  4. Dodaj moduły funkcji Hyper-V do modułów initramfs:

    Edytuj /etc/dracut.confelement i dodaj następującą zawartość:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Ponowne kompilowanie initramfs:

    sudo dracut -f -v
    
  5. Odinstaluj program cloud-init:

    sudo yum remove cloud-init
    
  6. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu:

    sudo chkconfig sshd on
    

    Zmodyfikuj /etc/ssh/sshd_config, aby uwzględnić następujące wiersze:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  7. Pakiet WALinuxAgent-<version>WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków, uruchamiając następujące polecenie:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  8. Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  9. 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. Należy pamiętać, że dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony, jeśli maszyna wirtualna zostanie anulowana. Po zainstalowaniu agenta systemu Linux platformy Azure w poprzednim kroku odpowiednio zmodyfikuj następujące parametry w pliku /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.
    
  10. Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:

    sudo subscription-manager unregister
    
  11. 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 -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  12. Zamknij maszynę wirtualną w maszynie wirtualnej KVM.

  13. Przekonwertuj obraz qcow2 na format VHD.

    Uwaga

    Istnieje znana usterka w wersjach >qemu-img =2.2.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 2.6. Zaleca się stosowanie qemu-img 2.2.0 lub niższej albo aktualizacji do wersji 2.6 lub nowszej. Dokumentacja: https://bugs.launchpad.net/qemu/+bug/1490611.

    Najpierw przekonwertuj obraz na format pierwotny:

    sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
    

    Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-6.9.raw $rounded_size
    

    Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
    

    Możesz też skorzystać z opcji qemu w wersji 2.6 lub nowszejforce_size:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
    

RHEL 7 przy użyciu maszyny wirtualnej KVM

  1. Pobierz obraz KVM systemu RHEL 7 ze strony internetowej Red Hat. Ta procedura używa systemu RHEL 7 jako przykładu.

  2. Ustaw hasło główne.

    Wygeneruj zaszyfrowane hasło i skopiuj dane wyjściowe polecenia:

    sudo openssl passwd -1 changeme
    

    Ustaw hasło główne z atrybutem guestfish:

    sudo  guestfish --rw -a <image-name>
    > <fs> run
    > <fs> list-filesystems
    > <fs> mount /dev/sda1 /
    > <fs> vi /etc/shadow
    > <fs> exit
    

    Zmień drugie pole użytkownika głównego z "!!" na zaszyfrowane hasło.

  3. Utwórz maszynę wirtualną na maszynie wirtualnej KVM na podstawie obrazu qcow2. Ustaw typ dysku na qcow2 i ustaw model urządzenia interfejsu sieciowego wirtualnego na virtio. Następnie uruchom maszynę wirtualną i zaloguj się jako katalog główny.

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

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  6. Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:

    sudo systemctl enable network
    
  7. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL, uruchamiając następujące polecenie:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  8. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby wykonać tę konfigurację, otwórz /etc/default/grub plik w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr . Na przykład:

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

    To polecenie 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. Polecenie wyłącza również nowe konwencje nazewnictwa RHEL 7 dla kart sieciowych. Ponadto zalecamy usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego. W razie potrzeby możesz pozostawić crashkernel opcję skonfigurowaną. Należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  9. Po zakończeniu edytowania /etc/default/gruburuchom następujące polecenie, aby ponownie skompilować konfigurację grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Dodaj moduły funkcji Hyper-V do modułów initramfs.

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

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Ponowne kompilowanie initramfs:

    sudo dracut -f -v
    
  11. Odinstaluj program cloud-init:

    sudo yum remove cloud-init
    
  12. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu:

    sudo systemctl enable sshd
    

    Zmodyfikuj /etc/ssh/sshd_config, aby uwzględnić następujące wiersze:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. Pakiet WALinuxAgent-<version>WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków, uruchamiając następujące polecenie:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  14. Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:

    sudo yum install WALinuxAgent
    

    Włącz usługę waagent:

    sudo systemctl enable waagent.service
    
  15. Zainstaluj pakiet cloud-init Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 12. "Instalowanie pakietu cloud-init w celu obsługi aprowizacji".

  16. Konfiguracja zamiany

    Nie twórz miejsca wymiany na dysku systemu operacyjnego. Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 13, "Konfiguracja zamiany"

  17. Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:

    sudo subscription-manager unregister
    
  18. Anulowanie aprowizacji

    Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 15, "Anulowanie aprowizacji"

  19. Zamknij maszynę wirtualną w maszynie wirtualnej KVM.

  20. Przekonwertuj obraz qcow2 na format VHD.

    Uwaga

    Istnieje znana usterka w wersjach >qemu-img =2.2.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 2.6. Zaleca się stosowanie qemu-img 2.2.0 lub niższej albo aktualizacji do wersji 2.6 lub nowszej. Dokumentacja: https://bugs.launchpad.net/qemu/+bug/1490611.

    Najpierw przekonwertuj obraz na format pierwotny:

    sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
    

    Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-7.4.raw $rounded_size
    

    Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Możesz też skorzystać z opcji qemu w wersji 2.6 lub nowszejforce_size:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

VMware

W tej sekcji pokazano, jak przygotować dystrybucję RHEL 6 lub RHEL 7 z programu VMware.

Wymagania wstępne

W tej sekcji założono, że masz już zainstalowaną maszynę wirtualną RHEL w programie VMware. Aby uzyskać szczegółowe informacje o sposobie instalowania systemu operacyjnego w programie VMware, zobacz Przewodnik instalacji systemu operacyjnego gościa programu VMware.

  • Podczas instalowania systemu operacyjnego Linux zalecamy używanie partycji standardowych, a nie LVM, co jest często ustawieniem domyślnym dla wielu instalacji. Pozwoli to uniknąć konfliktów nazw LVM z sklonowaną maszyną wirtualną, szczególnie jeśli podczas rozwiązywania problemów należy dołączyć dysk systemu operacyjnego do innej maszyny wirtualnej. LvM lub RAID można używać na dyskach danych, jeśli jest to preferowane.
  • Nie konfiguruj partycji wymiany na dysku systemu operacyjnego. Agenta systemu Linux można skonfigurować tak, aby utworzyć plik wymiany na dysku zasobów tymczasowych. Więcej informacji na ten temat można znaleźć w kolejnych krokach.
  • Podczas tworzenia wirtualnego dysku twardego wybierz pozycję Zapisz dysk wirtualny jako pojedynczy plik.

RHEL 6 przy użyciu programu VMware

Ważne

Począwszy od 30 listopada 2020 r., system Red Hat Enterprise Linux 6 zakończy fazę konserwacji. Po fazie konserwacji następuje faza rozszerzonego okresu eksploatacji. Ponieważ system Red Hat Enterprise Linux 6 przechodzi poza fazy pełnej/konserwacji, zdecydowanie zaleca się uaktualnienie do systemu Red Hat Enterprise Linux 7 lub 8 lub 9. Jeśli klienci muszą pozostać w systemie Red Hat Enterprise Linux 6, zaleca się dodanie dodatku Red Hat Enterprise Linux Extended Life Cycle Support (ELS).

  1. W systemie RHEL 6 menedżer sieci może zakłócać działanie agenta systemu Linux platformy Azure. Odinstaluj ten pakiet, uruchamiając następujące polecenie:

    sudo rpm -e --nodeps NetworkManager
    
  2. Utwórz plik o nazwie network w katalogu /etc/sysconfig/ zawierający następujący tekst:

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  4. Przenieś (lub usuń) reguły udev, aby uniknąć generowania reguł statycznych dla interfejsu Ethernet. Te reguły powodują 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
    

Uwaga

** W przypadku korzystania z przyspieszonej sieci (AN) utworzony interfejs syntetyczny musi być skonfigurowany jako niezarządzany przy użyciu reguły ujmowania. Uniemożliwi to menedżerowi sieci przypisanie do niego tego samego adresu IP jako interfejsu podstawowego.

Aby go zastosować:

sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
# Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
# This interface is transparently bonded to the synthetic interface,
# so NetworkManager should just ignore any SRIOV interfaces.
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
EOF
  1. Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:

    sudo chkconfig network on
    
  2. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL, uruchamiając następujące polecenie:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Pakiet WALinuxAgent-<version>WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków, uruchamiając następujące polecenie:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. W tym celu otwórz /etc/default/grub plik w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr . Na przykład:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
    

    Zapewni to 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. Ponadto zalecamy usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego. W razie potrzeby możesz pozostawić crashkernel opcję skonfigurowaną. Należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  5. Dodaj moduły funkcji Hyper-V do modułów initramfs:

    Edytuj /etc/dracut.confelement i dodaj następującą zawartość:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Ponowne kompilowanie initramfs:

    sudo dracut -f -v
    
  6. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj /etc/ssh/sshd_config , aby uwzględnić następujący wiersz:

    ClientAliveInterval 180
    
  7. Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  8. 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. Należy pamiętać, że dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony, jeśli maszyna wirtualna zostanie anulowana. Po zainstalowaniu agenta systemu Linux platformy Azure w poprzednim kroku 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.
    
  9. Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:

    sudo subscription-manager unregister
    
  10. 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 -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  11. Zamknij maszynę wirtualną i przekonwertuj plik VMDK na plik vhd.

    Uwaga

    Istnieje znana usterka w wersjach >qemu-img =2.2.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 2.6. Zaleca się stosowanie qemu-img 2.2.0 lub niższej albo aktualizacji do wersji 2.6 lub nowszej. Dokumentacja: https://bugs.launchpad.net/qemu/+bug/1490611.

    Najpierw przekonwertuj obraz na format pierwotny:

    sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
    

    Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-6.9.raw $rounded_size
    

    Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
    

    Możesz też skorzystać z opcji qemu w wersji 2.6 lub nowszejforce_size:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
    

RHEL 7 przy użyciu programu VMware

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

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  3. Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:

    sudo systemctl enable network
    
  4. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL, uruchamiając następujące polecenie:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby wykonać tę modyfikację, otwórz /etc/default/grub w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr . Na przykład:

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

    Ta konfiguracja zapewnia 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 RHEL 7 dla kart sieciowych. Ponadto zalecamy usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego. W razie potrzeby możesz pozostawić crashkernel opcję skonfigurowaną. Należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  6. Po zakończeniu edytowania /etc/default/gruburuchom następujące polecenie, aby ponownie skompilować konfigurację grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. Dodaj moduły funkcji Hyper-V do modułów initramfs.

    Edytuj /etc/dracut.conf, dodaj zawartość:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Ponowne kompilowanie initramfs:

    sudo dracut -f -v
    
  8. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym. Zmodyfikuj /etc/ssh/sshd_config , aby uwzględnić następujący wiersz:

    ClientAliveInterval 180
    
  9. Pakiet WALinuxAgent-<version>WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków, uruchamiając następujące polecenie:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  10. Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent.service
    
  11. Instalowanie pakietu cloud-init

    Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 12. "Instalowanie pakietu cloud-init w celu obsługi aprowizacji".

  12. Konfiguracja zamiany

    Nie twórz miejsca wymiany na dysku systemu operacyjnego. Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 13, "Konfiguracja zamiany"

  13. Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:

    sudo subscription-manager unregister
    
  14. Anulowanie aprowizacji

    Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 15, "Anulowanie aprowizacji"

  15. Zamknij maszynę wirtualną i przekonwertuj plik VMDK na format VHD.

    Uwaga

    Istnieje znana usterka w wersjach >qemu-img =2.2.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 2.6. Zaleca się stosowanie qemu-img 2.2.0 lub niższej albo aktualizacji do wersji 2.6 lub nowszej. Dokumentacja: https://bugs.launchpad.net/qemu/+bug/1490611.

    Najpierw przekonwertuj obraz na format pierwotny:

    sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
    

    Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-7.4.raw $rounded_size
    

    Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Możesz też skorzystać z opcji qemu w wersji 2.6 lub nowszejforce_size:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

Plik Kickstart

W tej sekcji pokazano, jak przygotować dystrybucję RHEL 7 z iso przy użyciu pliku kickstart.

RHEL 7 z pliku kickstart

  1. Utwórz plik kickstart zawierający następującą zawartość i zapisz plik. Aby uzyskać szczegółowe informacje na temat instalacji kickstart, zobacz Przewodnik instalacji kickstart.

    # Kickstart for provisioning a RHEL 7 Azure VM
    
    # System authorization information
      auth --enableshadow --passalgo=sha512
    
    # Use graphical install
    text
    
    # Don't run the Setup Agent on first boot
    firstboot --disable
    
    # Keyboard layouts
    keyboard --vckeymap=us --xlayouts='us'
    
    # System language
    lang en_US.UTF-8
    
    # Network information
    network  --bootproto=dhcp
    
    # Root password
    rootpw --plaintext "to_be_disabled"
    
    # System services
    services --enabled="sshd,waagent,NetworkManager"
    
    # System timezone
    timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org
    
    # Partition clearing information
    clearpart --all --initlabel
    
    # Clear the MBR
    zerombr
    
    # Disk partitioning information
    part /boot --fstype="xfs" --size=500
    part / --fstyp="xfs" --size=1 --grow --asprimary
    
    # System bootloader configuration
    bootloader --location=mbr
    
    # Firewall configuration
    firewall --disabled
    
    # Enable SELinux
    selinux --enforcing
    
    # Don't configure X
    skipx
    
    # Power down the machine after install
    poweroff
    
    %packages
    @base
    @console-internet
    chrony
    sudo
    parted
    -dracut-config-rescue
    
    %end
    
    %post --log=/var/log/anaconda/post-install.log
    
    #!/bin/bash
    
    # Register Red Hat Subscription
    subscription-manager register --username=XXX --password=XXX --auto-attach --force
    
    # Install latest repo update
    yum update -y
    
    # Enable extras repo
    subscription-manager repos --enable=rhel-7-server-extras-rpms
    
    # Install WALinuxAgent
    yum install -y WALinuxAgent
    
    # Unregister Red Hat subscription
    subscription-manager unregister
    
    # Enable waaagent at boot-up
    systemctl enable waagent
    
    # Install cloud-init
    yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    # Configure waagent for cloud-init
    sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
    sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    
    echo "Adding mounts and disk_setup to init stage"
    sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    # Disable the root account
    usermod root -p '!!'
    
    # Configure swap using cloud-init
    echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    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.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"]
    EOF
    
    # Set the cmdline
    sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub
    
    # Enable SSH keepalive
    sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config
    
    # Build the grub cfg
    grub2-mkconfig -o /boot/grub2/grub.cfg
    
    # Configure network
    cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    EOF
    
    # Deprovision and prepare for Azure if you are creating a generalized image
    sudo cloud-init clean --logs --seed
    sudo rm -rf /var/lib/cloud/
    sudo rm -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    
    sudo waagent -force -deprovision+user
    rm -f ~/.bash_history
    export HISTSIZE=0
    
    %end
    
  2. Umieść plik kickstart, w którym system instalacyjny może uzyskać do niego dostęp.

  3. W Menedżerze funkcji Hyper-V utwórz nową maszynę wirtualną. Na stronie Połączenie wirtualny dysk twardy wybierz pozycję Dołącz wirtualny dysk twardy później i ukończ pracę Kreatora nowej maszyny wirtualnej.

  4. Otwórz ustawienia maszyny wirtualnej:

    1. Dołącz nowy wirtualny dysk twardy do maszyny wirtualnej. Upewnij się, że wybrano pozycję Format dysku VHD i stały rozmiar.

    2. Dołącz instalację ISO do stacji dysków DVD.

    3. Ustaw system BIOS na rozruch z dysku CD.

  5. Uruchom maszynę wirtualną. Po wyświetleniu przewodnika instalacji naciśnij klawisz Tab , aby skonfigurować opcje rozruchu.

  6. Wprowadź inst.ks=<the location of the kickstart file> na końcu opcji rozruchu i naciśnij klawisz Enter.

  7. Poczekaj na zakończenie instalacji. Po zakończeniu maszyna wirtualna zostanie automatycznie zamknięta. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

Znane problemy

Nie można dołączyć sterownika funkcji Hyper-V do początkowego dysku RAM w przypadku korzystania z funkcji hypervisor innej niż hypervisor funkcji Hyper-V

W niektórych przypadkach instalatory systemu Linux mogą nie zawierać sterowników funkcji Hyper-V na początkowym dysku RAM (initrd lub initramfs), chyba że system Linux wykryje, że działa w środowisku funkcji Hyper-V.

W przypadku korzystania z innego systemu wirtualizacji (czyli VirtualBox, Xen itp.) w celu przygotowania obrazu systemu Linux może być konieczne ponowne skompilowanie initrd, aby upewnić się, że co najmniej moduły jądra hv_vmbus i hv_storvsc są dostępne na początkowym dysku RAM. Jest to znany problem przynajmniej w systemach opartych na nadrzędnej dystrybucji systemu Red Hat.

Aby rozwiązać ten problem, dodaj moduły funkcji Hyper-V do modułów initramfs i skompiluj go:

Edytuj /etc/dracut.confelement i dodaj następującą zawartość:

add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "

Ponowne kompilowanie initramfs:

sudo dracut -f -v

Aby uzyskać więcej informacji, zobacz informacje o odbudowywaniu initramfs.

Następne kroki

  • Teraz możesz użyć wirtualnego dysku twardego z systemem Red Hat Enterprise Linux do utworzenia nowych maszyn wirtualnych na platformie Azure. Jeśli po raz pierwszy przekazujesz plik vhd na platformę Azure, zobacz Tworzenie maszyny wirtualnej z systemem Linux na podstawie dysku niestandardowego.
  • Aby uzyskać więcej informacji na temat funkcji hypervisor certyfikowanych do uruchamiania systemu Red Hat Enterprise Linux, zobacz witrynę internetową red hat.
  • Aby dowiedzieć się więcej na temat używania obrazów byOS gotowych do produkcji RHEL, przejdź do strony dokumentacji dla usługi BYOS.