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).
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.
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
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
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
Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:
sudo chkconfig network on
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
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
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.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
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.
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.
Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:
sudo subscription-manager unregister
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
- 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
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:
sudo systemctl enable network
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
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 edytujGRUB_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.Po zakończeniu edytowania
/etc/default/grub
uruchom 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
.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
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
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
Konfigurowanie pakietu cloud-init w celu obsługi aprowizacji:
- 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.- 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
- 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
- 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
- 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
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
Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:
sudo subscription-manager unregister
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
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
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.
Upewnij się, że usługa Menedżer sieci zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:
sudo systemctl enable NetworkManager.service
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
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
Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure i włączyć konsolę szeregową.
- Usuń bieżące parametry GRUB:
sudo grub2-editenv - unset kernelopts
- 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.
- 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.Po zakończeniu edytowania
/etc/default/grub
uruchom 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
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
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
Konfigurowanie pakietu cloud-init w celu obsługi aprowizacji:
- 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.- 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
- 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
- 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
- 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
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
Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:
sudo subscription-manager unregister
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.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).
Pobierz obraz KVM systemu RHEL 6 ze strony internetowej Red Hat.
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.
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.
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
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
Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:
sudo chkconfig network on
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
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.Dodaj moduły funkcji Hyper-V do modułów initramfs:
Edytuj
/etc/dracut.conf
element i dodaj następującą zawartość:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Ponowne kompilowanie initramfs:
sudo dracut -f -v
Odinstaluj program cloud-init:
sudo yum remove cloud-init
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
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
Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:
sudo yum install WALinuxAgent sudo chkconfig waagent on
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.
Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:
sudo subscription-manager unregister
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
Zamknij maszynę wirtualną w maszynie wirtualnej KVM.
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 nowszej
force_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
Pobierz obraz KVM systemu RHEL 7 ze strony internetowej Red Hat. Ta procedura używa systemu RHEL 7 jako przykładu.
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.
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.
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:
sudo systemctl enable network
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
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 edytujGRUB_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.Po zakończeniu edytowania
/etc/default/grub
uruchom następujące polecenie, aby ponownie skompilować konfigurację grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
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
Odinstaluj program cloud-init:
sudo yum remove cloud-init
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
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
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
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".
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"
Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:
sudo subscription-manager unregister
Anulowanie aprowizacji
Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 15, "Anulowanie aprowizacji"
Zamknij maszynę wirtualną w maszynie wirtualnej KVM.
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 nowszej
force_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).
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
Utwórz plik o nazwie network w katalogu /etc/sysconfig/ zawierający następujący tekst:
NETWORKING=yes HOSTNAME=localhost.localdomain
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
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
Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:
sudo chkconfig network on
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
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
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 edytujGRUB_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.Dodaj moduły funkcji Hyper-V do modułów initramfs:
Edytuj
/etc/dracut.conf
element i dodaj następującą zawartość:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Ponowne kompilowanie initramfs:
sudo dracut -f -v
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
Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:
sudo yum install WALinuxAgent sudo chkconfig waagent on
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.
Wyrejestruj subskrypcję (w razie potrzeby), uruchamiając następujące polecenie:
sudo subscription-manager unregister
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
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 nowszej
force_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
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Upewnij się, że usługa sieciowa zostanie uruchomiona w czasie rozruchu, uruchamiając następujące polecenie:
sudo systemctl enable network
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
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 edytujGRUB_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.Po zakończeniu edytowania
/etc/default/grub
uruchom następujące polecenie, aby ponownie skompilować konfigurację grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
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
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
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
Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie:
sudo yum install WALinuxAgent sudo systemctl enable waagent.service
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".
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"
Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:
sudo subscription-manager unregister
Anulowanie aprowizacji
Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 15, "Anulowanie aprowizacji"
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 nowszej
force_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
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
Umieść plik kickstart, w którym system instalacyjny może uzyskać do niego dostęp.
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.
Otwórz ustawienia maszyny wirtualnej:
Dołącz nowy wirtualny dysk twardy do maszyny wirtualnej. Upewnij się, że wybrano pozycję Format dysku VHD i stały rozmiar.
Dołącz instalację ISO do stacji dysków DVD.
Ustaw system BIOS na rozruch z dysku CD.
Uruchom maszynę wirtualną. Po wyświetleniu przewodnika instalacji naciśnij klawisz Tab , aby skonfigurować opcje rozruchu.
Wprowadź
inst.ks=<the location of the kickstart file>
na końcu opcji rozruchu i naciśnij klawisz Enter.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.conf
element 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.