Příprava virtuálního počítače založeného na Red Hat pro Azure

Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Linuxem – Jednotné škálovací sady ✔️

V tomto článku se dozvíte, jak připravit virtuální počítač Red Hat Enterprise Linux (RHEL) pro použití v Azure. Verze RHEL popsané v tomto článku jsou 6.X, 7.X a 8.X. Hypervisory pro přípravu, které jsou popsané v tomto článku, jsou Hyper-V, virtuální počítač založený na jádru (KVM) a VMware. Další informace opožadavch Způsoby automatizace vytváření imagí RHEL najdete v Azure Image Builderu.

Poznámka:

Mějte na paměti verze, které jsou konec životnosti (EOL) a již nejsou podporovány redhat. Nahrané obrázky, které jsou v EOL nebo nad rámec EOL, budou podporovány v přiměřeném obchodním úsilí. Odkaz na životní cyklus produktu Redhat

Správce technologie Hyper-V

V této části se dozvíte, jak připravit virtuální počítač RHEL 6, RHEL 7 nebo RHEL 8 pomocí Správce technologie Hyper-V.

Požadavky

Tato část předpokládá, že jste již získali soubor ISO z webu Red Hat a nainstalovali image RHEL na virtuální pevný disk (VHD). Další podrobnosti o tom, jak pomocí Správce technologie Hyper-V nainstalovat image operačního systému, najdete v tématu Instalace role Hyper-V a konfigurace virtuálního počítače.

Poznámky k instalaci RHEL

  • Azure nepodporuje formát VHDX. podpora Azure pouze pevný virtuální pevný disk. Pomocí Správce technologie Hyper-V můžete disk převést do formátu VHD nebo můžete použít rutinu convert-vhd. Pokud používáte VirtualBox, vyberte při vytváření disku pevnou velikost na rozdíl od výchozí dynamicky přidělené možnosti.

  • podpora Azure s Virtuální počítače Gen1 (spouštění systému BIOS) a Gen2 (spouštění UEFI).

  • Maximální povolená velikost virtuálního pevného disku je 1 023 GB.

  • Modul jádra vfat musí být v jádru povolený.

  • Logický svazek Manager (LVM) je podporovaný a může se používat na disku s operačním systémem nebo na datových discích ve virtuálních počítačích Azure. Obecně ale doporučujeme místo LVM používat standardní oddíly na disku s operačním systémem. Tento postup zabrání konfliktům názvů LVM s klonovanými virtuálními počítači, zejména pokud byste někdy potřebovali připojit disk operačního systému k jinému identickému virtuálnímu počítači pro účely řešení potíží. Viz dokumentace k LVM a RAID .

  • Vyžaduje se podpora jádra pro připojení systémů souborů UDF (Universal Disk Format). Při prvním spuštění v Azure předá virtuálnímu počítači s Linuxem média formátovaná uživatelem, která je připojená k hostu, konfiguraci zřizování. Agent Azure Linux musí být schopný připojit systém souborů UDF ke čtení konfigurace a zřízení virtuálního počítače, bez toho se zřizování nezdaří.

  • Nenakonfigurujte prohození oddílu na disku s operačním systémem. Další informace o tom najdete v následujících krocích.

  • Všechny virtuální pevné disky v Azure musí mít virtuální velikost zarovnanou na 1 MB. Při převodu z nezpracovaného disku na virtuální pevný disk je nutné před převodem zajistit, aby velikost nezpracovaného disku byla násobkem 1 MB. Další podrobnosti najdete v následujících krocích. Další informace najdete v poznámkách k instalaci systému Linux.

Poznámka:

Cloud-init >= 21.2 odebere požadavek udf. Bez povoleného modulu definovaná uživatelem se ale cdrom během zřizování nepřipevní, což brání použití vlastních dat. Alternativním řešením je použít vlastní data pomocí uživatelských dat. Na rozdíl od vlastních dat se ale uživatelská data nešifrují. https://cloudinit.readthedocs.io/en/latest/topics/format.html

RHEL 6 pomocí Správce technologie Hyper-V

Důležité

Od 30. listopadu 2020 dosáhne konce fáze údržby Red Hat Enterprise Linux 6. Fáze údržby následuje fáze rozšířené životnosti. Vzhledem k tomu, že Red Hat Enterprise Linux 6 přechází z fází úplné údržby nebo úplné údržby, důrazně doporučujeme upgradovat na Red Hat Enterprise Linux 7, 8 nebo 9. Pokud zákazníci musí zůstat na Red Hat Enterprise Linuxu 6, doporučujeme přidat doplněk ElS (Red Hat Enterprise Linux Extended Life Cycle Support).

  1. Ve Správci technologie Hyper-V vyberte virtuální počítač.

  2. Kliknutím na Připojení otevřete okno konzoly pro virtuální počítač.

  3. V RHEL 6 může NetworkManager kolidovat s agentem Azure Linux. Odinstalujte tento balíček spuštěním následujícího příkazu:

    sudo rpm -e --nodeps NetworkManager
    
  4. Vytvořte nebo upravte /etc/sysconfig/network soubor a přidejte následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Vytvořte nebo upravte /etc/sysconfig/network-scripts/ifcfg-eth0 soubor a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Přesuňte (nebo odeberte) pravidla udev, abyste se vyhnuli generování statických pravidel pro ethernetové rozhraní. Tato pravidla způsobují problémy při klonování virtuálního počítače v Microsoft Azure nebo 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
    

Poznámka:

** Při použití akcelerovaných síťových služeb (AN) syntetického rozhraní, které je vytvořeno, musí být nakonfigurováno tak, aby nespravovalo pomocí pravidla udev. Tím zabráníte, aby správce NetworkManager přiřadil stejnou IP adresu jako primární rozhraní.

Pokud ho chcete použít:

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. Spuštěním následujícího příkazu se ujistěte, že se síťová služba spustí při spuštění:

    sudo chkconfig network on
    
  2. Zaregistrujte své předplatné Red Hat, abyste povolili instalaci balíčků z úložiště RHEL spuštěním následujícího příkazu:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Balíček WALinuxAgent , WALinuxAgent-<version>byl nasdílený do úložiště extra Red Hat. Spuštěním následujícího příkazu povolte úložiště navíc:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Pokud chcete tuto změnu provést, otevřete /boot/grub/menu.lst v textovém editoru a ujistěte se, že výchozí jádro obsahuje následující parametry:

    console=ttyS0 earlyprintk=ttyS0
    

    Tím se také zajistí, že se všechny zprávy konzoly posílají na první sériový port, což může pomoct podpora Azure s laděním problémů.

    Kromě toho doporučujeme odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. V případě potřeby můžete nechat nakonfigurovanou crashkernel možnost. Všimněte si, že tento parametr snižuje množství dostupné paměti ve virtuálním počítači o 128 MB nebo více. Tato konfigurace může být problematická u menších velikostí virtuálních počítačů.

  5. Ujistěte se, že je server SSH (Secure Shell) nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění, což je obvykle výchozí nastavení. Upravte /etc/ssh/sshd_config tak, aby obsahoval následující řádek:

    ClientAliveInterval 180
    
  6. Nainstalujte agenta Azure Linux spuštěním následujícího příkazu:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    

    Instalace balíčku WALinuxAgent odebere balíčky NetworkManager a NetworkManager-gnome, pokud ještě nebyly odebrány v kroku 3.

  7. Nevytvávejte místo prohození na disku s operačním systémem.

    Agent Azure Linuxu může automaticky nakonfigurovat prohození místa pomocí disku místního prostředku, který je připojený k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Všimněte si, že místní disk prostředků je dočasný disk a že může být vyprázdněn, pokud je virtuální počítač zrušen. Po instalaci agenta Azure Linux v předchozím kroku odpovídajícím způsobem upravte následující parametry v souboru /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. Zrušení registrace předplatného (v případě potřeby) spuštěním následujícího příkazu:

    sudo subscription-manager unregister
    
  9. Spuštěním následujících příkazů zrušte zřízení virtuálního počítače a připravte ho na zřízení v Azure:

Poznámka:

Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení.

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
  1. Ve Správci technologie Hyper-V klikněte na tlačítko Akce>vypnout. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

RHEL 7 s využitím Správce technologie Hyper-V

  1. Ve Správci technologie Hyper-V vyberte virtuální počítač.

  2. Kliknutím na Připojení otevřete okno konzoly pro virtuální počítač.

  3. Vytvořte nebo upravte /etc/sysconfig/network soubor a přidejte následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Vytvořte nebo upravte /etc/sysconfig/network-scripts/ifcfg-eth0 soubor a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  5. Spuštěním následujícího příkazu se ujistěte, že se síťová služba spustí při spuštění:

    sudo systemctl enable network
    
  6. Zaregistrujte své předplatné Red Hat, abyste povolili instalaci balíčků z úložiště RHEL spuštěním následujícího příkazu:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Chcete-li tuto změnu provést, otevřete /etc/default/grub v textovém editoru a upravte GRUB_CMDLINE_LINUX parametr. Příklad:

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

    Poznámka:

    Pokud ENABLE_BLSCFG=false není k dispozici místo /etc/default/grub nástrojů "ENABLE_BLSCFG=true", jako je grubedit nebo gubby, které spoléhají na specifikaci zavaděče spouštění (BLS) pro správu položek spouštění a konfigurací, nemusí správně fungovat v RHEL 8 a 9. Doporučujeme, pokud ENABLE_BLSCFG není k dispozici, výchozí chování je "false".

    Tím se také zajistí, že se všechny zprávy konzoly odešlou na první sériový port a umožní interakci se sériovou konzolou, která může pomoct podpora Azure s problémy s laděním. Tato konfigurace také vypne nové zásady vytváření názvů RHEL 7 pro síťové karty.

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. V případě potřeby můžete nechat nakonfigurovanou crashkernel možnost. Všimněte si, že tento parametr snižuje množství dostupné paměti ve virtuálním počítači o 128 MB nebo více, což může být problematické u menších velikostí virtuálních počítačů.

  8. Po dokončení úprav /etc/default/grubspusťte následující příkaz, který znovu sestaví konfiguraci grubu:

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

    Poznámka:

    Pokud nahráváte virtuální počítač s povoleným rozhraním UEFI, příkaz k aktualizaci grubu je grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění, což je obvykle výchozí nastavení. Upravte /etc/ssh/sshd_config tak, aby zahrnoval následující řádek:

    ClientAliveInterval 180
    
  10. Balíček WALinuxAgent , WALinuxAgent-<version>byl nasdílený do úložiště extra Red Hat. Spuštěním následujícího příkazu povolte úložiště navíc:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Spuštěním následujícího příkazu nainstalujte agenta Azure Linux, cloud-init a další nezbytné nástroje:

    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. Nakonfigurujte cloud-init pro zpracování zřizování:

    1. Konfigurace waagentu pro 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
    

    Poznámka:

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, nastavte Provisioning.Agent=disabled ji v /etc/waagent.conf konfiguraci.

    1. Konfigurace připojení:
    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. Konfigurace zdroje dat 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. Pokud je nakonfigurovaný, odeberte existující 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. Konfigurace protokolování 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. Prohození konfigurace Nevytvávejte místo prohození na disku s operačním systémem.

    Dříve se k automatické konfiguraci prohození místa použil agent Azure Linux pomocí místního disku prostředku připojeného k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Tento postup ale teď zpracovává cloud-init, není nutné použít agenta Linuxu k naformátovat disk prostředku vytvořit prohození souboru, odpovídajícím způsobem upravit následující parametry /etc/waagent.conf :

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Pokud chcete připojit, formátovat a vytvořit prohození, můžete provést jednu z těchto akcí:

    • Předejte ji jako konfiguraci cloud-init při každém vytvoření virtuálního počítače prostřednictvím vlastních dat. Jedná se o doporučený způsob.

    • Použijte direktivu cloud-init upečenou do image, která se provede při každém vytvoření virtuálního počítače.

      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. Pokud chcete zrušit registraci předplatného, spusťte následující příkaz:

    sudo subscription-manager unregister
    
  15. Zrušení zřízení

    Spuštěním následujících příkazů zrušte zřízení virtuálního počítače a připravte ho na zřízení v Azure:

    Upozornění

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení. Spuštěním příkazu waagent -force -deprovision+user se vykreslí nepoužitelný zdrojový počítač. Tento krok je určený pouze k vytvoření generalizované image.

    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. Ve Správci technologie Hyper-V klikněte na tlačítko Akce>vypnout. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

RHEL 8+ s využitím Správce technologie Hyper-V

  1. Ve Správci technologie Hyper-V vyberte virtuální počítač.

  2. Kliknutím na Připojení otevřete okno konzoly pro virtuální počítač.

  3. Spuštěním následujícího příkazu se ujistěte, že se služba Network Manager spustí při spuštění:

    sudo systemctl enable NetworkManager.service
    
  4. Nakonfigurujte síťové rozhraní tak, aby se automaticky spustilo při spuštění a používalo DHCP:

    sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
    
  5. Zaregistrujte své předplatné Red Hat, abyste povolili instalaci balíčků z úložiště RHEL spuštěním následujícího příkazu:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  6. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure a povolte sériovou konzolu.

    1. Odeberte aktuální parametry GRUB:
    sudo grub2-editenv - unset kernelopts
    
    1. Upravte /etc/default/grub v textovém editoru a přidejte následující 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"
    

    Tím se také zajistí, že se všechny zprávy konzoly odešlou na první sériový port a umožní interakci se sériovou konzolou, která může pomoct podpora Azure s problémy s laděním. Tato konfigurace také vypne nové zásady vytváření názvů pro síťové karty.

    1. Kromě toho doporučujeme odebrat následující parametry:
    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. V případě potřeby můžete nechat nakonfigurovanou crashkernel možnost. Všimněte si, že tento parametr snižuje množství dostupné paměti ve virtuálním počítači o 128 MB nebo více, což může být problematické u menších velikostí virtuálních počítačů.

  7. Po dokončení úprav /etc/default/grubspusťte následující příkaz, který znovu sestaví konfiguraci grubu:

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

    A pro virtuální počítač s povoleným rozhraním UEFI spusťte následující příkaz:

    sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  8. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění, což je obvykle výchozí nastavení. Upravte /etc/ssh/sshd_config tak, aby zahrnoval následující řádek:

    ClientAliveInterval 180
    
  9. Spuštěním následujícího příkazu nainstalujte agenta Azure Linux, cloud-init a další nezbytné nástroje:

    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. Nakonfigurujte cloud-init pro zpracování zřizování:

    1. Konfigurace waagentu pro 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
    

    Poznámka:

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, nastavte Provisioning.Agent=disabled ji v /etc/waagent.conf konfiguraci.

    1. Konfigurace připojení:
    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. Konfigurace zdroje dat 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. Pokud je nakonfigurovaný, odeberte existující 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. Konfigurace protokolování 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. Prohození konfigurace Nevytvávejte místo prohození na disku s operačním systémem.

    Dříve se k automatické konfiguraci prohození místa použil agent Azure Linux pomocí místního disku prostředku připojeného k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Tento postup ale teď zpracovává cloud-init, není nutné použít agenta Linuxu k naformátovat disk prostředku vytvořit prohození souboru, odpovídajícím způsobem upravit následující parametry /etc/waagent.conf :

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    
    • Předejte ji jako konfiguraci cloud-init při každém vytvoření virtuálního počítače prostřednictvím vlastních dat. Jedná se o doporučený způsob.

    • Použijte direktivu cloud-init upečenou do image, která se provede při každém vytvoření virtuálního počítače.

      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. Pokud chcete zrušit registraci předplatného, spusťte následující příkaz:

    sudo subscription-manager unregister
    
  13. Zrušení zřízení

    Spuštěním následujících příkazů zrušte zřízení virtuálního počítače a připravte ho na zřízení v 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
    

    Upozornění

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení. Spuštěním příkazu waagent -force -deprovision+user se vykreslí nepoužitelný zdrojový počítač. Tento krok je určený pouze k vytvoření generalizované image.

  14. Ve Správci technologie Hyper-V klikněte na tlačítko Akce>vypnout. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

KVM

V této části se dozvíte, jak pomocí KVM připravit distribuci RHEL 6 nebo RHEL 7 k nahrání do Azure.

RHEL 6 s využitím KVM

Důležité

Od 30. listopadu 2020 dosáhne konce fáze údržby Red Hat Enterprise Linux 6. Fáze údržby následuje fáze rozšířené životnosti. Vzhledem k tomu, že Red Hat Enterprise Linux 6 přechází z fází úplné údržby nebo úplné údržby, důrazně doporučujeme upgradovat na Red Hat Enterprise Linux 7, 8 nebo 9. Pokud zákazníci musí zůstat na Red Hat Enterprise Linuxu 6, doporučujeme přidat doplněk ElS (Red Hat Enterprise Linux Extended Life Cycle Support).

  1. Stáhněte si image KVM RHEL 6 z webu Red Hat.

  2. Nastavte kořenové heslo.

    Vygenerujte šifrované heslo a zkopírujte výstup příkazu:

    sudo openssl passwd -1 changeme
    

    Nastavení kořenového hesla pomocí hosta:

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

    Změňte druhé pole kořenového uživatele z !! na šifrované heslo.

  3. Vytvořte virtuální počítač v KVM z image qcow2. Nastavte typ disku na qcow2 a nastavte model zařízení virtuálního síťového rozhraní na virtio. Pak spusťte virtuální počítač a přihlaste se jako kořen.

  4. Vytvořte nebo upravte /etc/sysconfig/network soubor a přidejte následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Vytvořte nebo upravte /etc/sysconfig/network-scripts/ifcfg-eth0 soubor a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Přesuňte (nebo odeberte) pravidla udev, abyste se vyhnuli generování statických pravidel pro ethernetové rozhraní. Tato pravidla způsobují problémy při klonování virtuálního počítače v Azure nebo 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
    

Poznámka:

** Při použití akcelerovaných síťových služeb (AN) syntetického rozhraní, které je vytvořeno, musí být nakonfigurováno tak, aby nespravovalo pomocí pravidla udev. Tím zabráníte, aby správce NetworkManager přiřadil stejnou IP adresu jako primární rozhraní.

Pokud ho chcete použít:

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. Spuštěním následujícího příkazu se ujistěte, že se síťová služba spustí při spuštění:

    sudo chkconfig network on
    
  2. Zaregistrujte své předplatné Red Hat, abyste povolili instalaci balíčků z úložiště RHEL spuštěním následujícího příkazu:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Pokud chcete tuto konfiguraci provést, otevřete /boot/grub/menu.lst v textovém editoru a ujistěte se, že výchozí jádro obsahuje následující parametry:

    console=ttyS0 earlyprintk=ttyS0
    

    Tím se také zajistí, že se všechny zprávy konzoly posílají na první sériový port, což může pomoct podpora Azure s laděním problémů.

    Kromě toho doporučujeme odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. V případě potřeby můžete nechat nakonfigurovanou crashkernel možnost. Všimněte si, že tento parametr snižuje množství dostupné paměti ve virtuálním počítači o 128 MB nebo více, což může být problematické u menších velikostí virtuálních počítačů.

  4. Přidejte moduly Hyper-V do initramfs:

    Upravte /etc/dracut.confa přidejte následující obsah:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Opětovné sestavení initramfs:

    sudo dracut -f -v
    
  5. Odinstalace cloud-init:

    sudo yum remove cloud-init
    
  6. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění:

    sudo chkconfig sshd on
    

    Upravte /etc/ssh/sshd_config tak, aby zahrnoval následující řádky:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  7. Balíček WALinuxAgent , WALinuxAgent-<version>byl nasdílený do úložiště extra Red Hat. Spuštěním následujícího příkazu povolte úložiště navíc:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  8. Nainstalujte agenta Azure Linux spuštěním následujícího příkazu:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  9. Agent Azure Linuxu může automaticky nakonfigurovat prohození místa pomocí disku místního prostředku, který je připojený k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Všimněte si, že místní disk prostředků je dočasný disk a pokud je virtuální počítač zrušený, může být vyprázdněn. Po instalaci agenta Azure Linux v předchozím kroku odpovídajícím způsobem upravte následující parametry v souboru /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. Zrušení registrace předplatného (v případě potřeby) spuštěním následujícího příkazu:

    sudo subscription-manager unregister
    
  11. Spuštěním následujících příkazů zrušte zřízení virtuálního počítače a připravte ho na zřízení v Azure:

    Poznámka:

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení.

    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. Vypněte virtuální počítač v KVM.

  13. Převeďte image qcow2 do formátu VHD.

    Poznámka:

    Ve verzích qemu-img = >2.2.1 existuje známá chyba, která vede k nesprávnému formátování virtuálního pevného disku. Tento problém je opravený v QEMU 2.6. Doporučujeme použít qemu-img 2.2.0 nebo nižší nebo aktualizovat na verzi 2.6 nebo vyšší. Referenční informace: https://bugs.launchpad.net/qemu/+bug/1490611.

    Nejprve převeďte obrázek na nezpracovaný formát:

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

    Ujistěte se, že je velikost nezpracovaného obrázku zarovnaná s 1 MB. V opačném případě zaokrouhlete velikost nahoru tak, aby odpovídala 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
    

    Převeďte nezpracovaný disk na virtuální pevný disk s pevnou velikostí:

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

    Nebo pokud máte qemu verze 2.6 nebo novější , uveďte možnost 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 s využitím KVM

  1. Stáhněte si image KVM RHEL 7 z webu Red Hat. Tento postup jako příklad používá RHEL 7.

  2. Nastavte kořenové heslo.

    Vygenerujte šifrované heslo a zkopírujte výstup příkazu:

    sudo openssl passwd -1 changeme
    

    Nastavení kořenového hesla pomocí hosta:

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

    Změňte druhé pole kořenového uživatele z !! na šifrované heslo.

  3. Vytvořte virtuální počítač v KVM z image qcow2. Nastavte typ disku na qcow2 a nastavte model zařízení virtuálního síťového rozhraní na virtio. Pak spusťte virtuální počítač a přihlaste se jako kořen.

  4. Vytvořte nebo upravte /etc/sysconfig/network soubor a přidejte následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Vytvořte nebo upravte /etc/sysconfig/network-scripts/ifcfg-eth0 soubor a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  6. Spuštěním následujícího příkazu se ujistěte, že se síťová služba spustí při spuštění:

    sudo systemctl enable network
    
  7. Zaregistrujte své předplatné Red Hat a povolte instalaci balíčků z úložiště RHEL spuštěním následujícího příkazu:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  8. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Pokud chcete tuto konfiguraci provést, otevřete /etc/default/grub v textovém editoru GRUB_CMDLINE_LINUX a upravte parametr. Příklad:

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

    Tento příkaz také zajistí, aby se všechny zprávy konzoly odesílaly na první sériový port, který může pomoct podpora Azure s laděním problémů. Příkaz také vypne nové zásady vytváření názvů RHEL 7 pro síťové karty. Kromě toho doporučujeme odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. V případě potřeby můžete nechat nakonfigurovanou crashkernel možnost. Všimněte si, že tento parametr snižuje množství dostupné paměti ve virtuálním počítači o 128 MB nebo více, což může být problematické u menších velikostí virtuálních počítačů.

  9. Po dokončení úprav /etc/default/grubspusťte následující příkaz, který znovu sestaví konfiguraci grubu:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Přidejte moduly Hyper-V do initramfs.

    Upravit /etc/dracut.conf a přidat obsah:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Opětovné sestavení initramfs:

    sudo dracut -f -v
    
  11. Odinstalace cloud-init:

    sudo yum remove cloud-init
    
  12. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění:

    sudo systemctl enable sshd
    

    Upravte /etc/ssh/sshd_config tak, aby zahrnoval následující řádky:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. Balíček WALinuxAgent , WALinuxAgent-<version>byl nasdílený do úložiště extra Red Hat. Spuštěním následujícího příkazu povolte úložiště navíc:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  14. Nainstalujte agenta Azure Linux spuštěním následujícího příkazu:

    sudo yum install WALinuxAgent
    

    Povolte službu waagent:

    sudo systemctl enable waagent.service
    
  15. Nainstalujte cloud-init podle kroků v části Příprava virtuálního počítače RHEL 7 z Hyper-V Manageru, 12. kroku Instalace cloud-init pro zpracování zřizování.

  16. Konfigurace prohození

    Nevytvávejte místo prohození na disku s operačním systémem. Postupujte podle kroků v části Příprava virtuálního počítače RHEL 7 z Hyper-V Manageru, kroku 13 Prohození konfigurace.

  17. Zrušení registrace předplatného (v případě potřeby) spuštěním následujícího příkazu:

    sudo subscription-manager unregister
    
  18. Zrušení zřízení

    Postupujte podle kroků v části Příprava virtuálního počítače RHEL 7 z Hyper-V Manageru, kroku 15, Zrušení zřízení.

  19. Vypněte virtuální počítač v KVM.

  20. Převeďte image qcow2 do formátu VHD.

    Poznámka:

    Ve verzích qemu-img = >2.2.1 existuje známá chyba, která vede k nesprávnému formátování virtuálního pevného disku. Tento problém je opravený v QEMU 2.6. Doporučujeme použít qemu-img 2.2.0 nebo nižší nebo aktualizovat na verzi 2.6 nebo vyšší. Referenční informace: https://bugs.launchpad.net/qemu/+bug/1490611.

    Nejprve převeďte obrázek na nezpracovaný formát:

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

    Ujistěte se, že je velikost nezpracovaného obrázku zarovnaná s 1 MB. V opačném případě zaokrouhlete velikost nahoru tak, aby odpovídala 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
    

    Převeďte nezpracovaný disk na virtuální pevný disk s pevnou velikostí:

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

    Nebo pokud máte qemu verze 2.6 nebo novější , uveďte možnost force_size :

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

VMware

V této části se dozvíte, jak připravit distribuci RHEL 6 nebo RHEL 7 z VMware.

Požadavky

V této části se předpokládá, že jste už nainstalovali virtuální počítač RHEL ve VMware. Podrobnosti o instalaci operačního systému ve VMware najdete v průvodci instalací hostovaného operačního systému VMware.

  • Při instalaci operačního systému Linux doporučujeme místo LVM používat standardní oddíly, což je často výchozí nastavení pro mnoho instalací. Zabráníte tak konfliktům názvů LVM s klonovaným virtuálním počítačem, zejména v případě, že by se disk operačního systému někdy potřeboval připojit k jinému virtuálnímu počítači pro účely řešení potíží. LVM nebo RAID lze v případě potřeby použít na datových discích.
  • Nenakonfigurujte prohození oddílu na disku s operačním systémem. Agenta s Linuxem můžete nakonfigurovat tak, aby na dočasném disku prostředku vytvořil prohození souboru. Další informace o tom najdete v následujících krocích.
  • Při vytváření virtuálního pevného disku vyberte Uložit virtuální disk jako jeden soubor.

RHEL 6 s využitím VMware

Důležité

Od 30. listopadu 2020 dosáhne konce fáze údržby Red Hat Enterprise Linux 6. Fáze údržby následuje fáze rozšířené životnosti. Vzhledem k tomu, že Red Hat Enterprise Linux 6 přechází z fází úplné údržby nebo úplné údržby, důrazně doporučujeme upgradovat na Red Hat Enterprise Linux 7 nebo 8 nebo 9. Pokud zákazníci musí zůstat v Systému Red Hat Enterprise Linux 6, doporučujeme přidat doplněk ElS (Extended Life Cycle Support) pro Red Hat Enterprise Linux.

  1. V RHEL 6 může NetworkManager kolidovat s agentem Azure Linux. Odinstalujte tento balíček spuštěním následujícího příkazu:

    sudo rpm -e --nodeps NetworkManager
    
  2. V adresáři /etc/sysconfig/ vytvořte soubor s názvem network , který obsahuje následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  3. Vytvořte nebo upravte /etc/sysconfig/network-scripts/ifcfg-eth0 soubor a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  4. Přesuňte (nebo odeberte) pravidla udev, abyste se vyhnuli generování statických pravidel pro ethernetové rozhraní. Tato pravidla způsobují problémy při klonování virtuálního počítače v Azure nebo 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
    

Poznámka:

** Při použití akcelerovaných síťových služeb (AN) syntetického rozhraní, které je vytvořeno, musí být nakonfigurováno tak, aby nespravovalo pomocí pravidla udev. Tím zabráníte, aby správce NetworkManager přiřadil stejnou IP adresu jako primární rozhraní.

Pokud ho chcete použít:

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. Spuštěním následujícího příkazu se ujistěte, že se síťová služba spustí při spuštění:

    sudo chkconfig network on
    
  2. Zaregistrujte své předplatné Red Hat, abyste povolili instalaci balíčků z úložiště RHEL spuštěním následujícího příkazu:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Balíček WALinuxAgent , WALinuxAgent-<version>byl nasdílený do úložiště extra Red Hat. Spuštěním následujícího příkazu povolte úložiště navíc:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Uděláte to tak, že otevřete /etc/default/grub v textovém editoru a upravíte GRUB_CMDLINE_LINUX parametr. Příklad:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
    

    Tím se také zajistí, že se všechny zprávy konzoly posílají na první sériový port, což může pomoct podpora Azure s laděním problémů. Kromě toho doporučujeme odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. V případě potřeby můžete nechat nakonfigurovanou crashkernel možnost. Všimněte si, že tento parametr snižuje množství dostupné paměti ve virtuálním počítači o 128 MB nebo více, což může být problematické u menších velikostí virtuálních počítačů.

  5. Přidejte moduly Hyper-V do initramfs:

    Upravte /etc/dracut.confa přidejte následující obsah:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Opětovné sestavení initramfs:

    sudo dracut -f -v
    
  6. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění, což je obvykle výchozí nastavení. Upravte /etc/ssh/sshd_config tak, aby zahrnoval následující řádek:

    ClientAliveInterval 180
    
  7. Nainstalujte agenta Azure Linux spuštěním následujícího příkazu:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  8. Nevytvávejte místo prohození na disku s operačním systémem.

    Agent Azure Linuxu může automaticky nakonfigurovat prohození místa pomocí disku místního prostředku, který je připojený k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Všimněte si, že místní disk prostředků je dočasný disk a pokud je virtuální počítač zrušený, může být vyprázdněn. Po instalaci agenta Azure Linuxu v předchozím kroku odpovídajícím způsobem upravte následující 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. Zrušení registrace předplatného (v případě potřeby) spuštěním následujícího příkazu:

    sudo subscription-manager unregister
    
  10. Spuštěním následujících příkazů zrušte zřízení virtuálního počítače a připravte ho na zřízení v Azure:

    Poznámka:

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení.

    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. Vypněte virtuální počítač a převeďte soubor VMDK na soubor .vhd.

    Poznámka:

    Ve verzích qemu-img = >2.2.1 existuje známá chyba, která vede k nesprávnému formátování virtuálního pevného disku. Tento problém je opravený v QEMU 2.6. Doporučujeme použít qemu-img 2.2.0 nebo nižší nebo aktualizovat na verzi 2.6 nebo vyšší. Referenční informace: https://bugs.launchpad.net/qemu/+bug/1490611.

    Nejprve převeďte obrázek na nezpracovaný formát:

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

    Ujistěte se, že je velikost nezpracovaného obrázku zarovnaná s 1 MB. V opačném případě zaokrouhlete velikost nahoru tak, aby odpovídala 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
    

    Převeďte nezpracovaný disk na virtuální pevný disk s pevnou velikostí:

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

    Nebo pokud máte qemu verze 2.6 nebo novější , uveďte možnost 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 s využitím VMware

  1. Vytvořte nebo upravte /etc/sysconfig/network soubor a přidejte následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  2. Vytvořte nebo upravte /etc/sysconfig/network-scripts/ifcfg-eth0 soubor a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  3. Spuštěním následujícího příkazu se ujistěte, že se síťová služba spustí při spuštění:

    sudo systemctl enable network
    
  4. Zaregistrujte své předplatné Red Hat, abyste povolili instalaci balíčků z úložiště RHEL spuštěním následujícího příkazu:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Chcete-li tuto změnu provést, otevřete /etc/default/grub v textovém editoru a upravte GRUB_CMDLINE_LINUX parametr. Příklad:

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

    Tato konfigurace také zajišťuje, aby se všechny zprávy konzoly odesílaly na první sériový port, což může pomoct podpora Azure s laděním problémů. Vypne také nové zásady vytváření názvů RHEL 7 pro síťové karty. Kromě toho doporučujeme odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. V případě potřeby můžete nechat nakonfigurovanou crashkernel možnost. Všimněte si, že tento parametr snižuje množství dostupné paměti ve virtuálním počítači o 128 MB nebo více, což může být problematické u menších velikostí virtuálních počítačů.

  6. Po dokončení úprav /etc/default/grubspusťte následující příkaz, který znovu sestaví konfiguraci grubu:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. Přidejte moduly Hyper-V do initramfs.

    Upravit /etc/dracut.conf, přidat obsah:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Opětovné sestavení initramfs:

    sudo dracut -f -v
    
  8. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění. Toto nastavení je obvykle výchozí. Upravte /etc/ssh/sshd_config tak, aby zahrnoval následující řádek:

    ClientAliveInterval 180
    
  9. Balíček WALinuxAgent , WALinuxAgent-<version>byl nasdílený do úložiště extra Red Hat. Spuštěním následujícího příkazu povolte úložiště navíc:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  10. Nainstalujte agenta Azure Linux spuštěním následujícího příkazu:

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

    Postupujte podle kroků v části Příprava virtuálního počítače RHEL 7 z Hyper-V Manageru, 12. kroku Instalace cloud-init pro zpracování zřizování.

  12. Konfigurace prohození

    Nevytvávejte místo prohození na disku s operačním systémem. Postupujte podle kroků v části Příprava virtuálního počítače RHEL 7 z Hyper-V Manageru, kroku 13 Prohození konfigurace.

  13. Pokud chcete zrušit registraci předplatného, spusťte následující příkaz:

    sudo subscription-manager unregister
    
  14. Zrušení zřízení

    Postupujte podle kroků v části Příprava virtuálního počítače RHEL 7 z Hyper-V Manageru, kroku 15, Zrušení zřízení.

  15. Vypněte virtuální počítač a převeďte soubor VMDK do formátu VHD.

    Poznámka:

    Ve verzích qemu-img = >2.2.1 existuje známá chyba, která vede k nesprávnému formátování virtuálního pevného disku. Tento problém je opravený v QEMU 2.6. Doporučujeme použít qemu-img 2.2.0 nebo nižší nebo aktualizovat na verzi 2.6 nebo vyšší. Referenční informace: https://bugs.launchpad.net/qemu/+bug/1490611.

    Nejprve převeďte obrázek na nezpracovaný formát:

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

    Ujistěte se, že je velikost nezpracovaného obrázku zarovnaná s 1 MB. V opačném případě zaokrouhlete velikost nahoru tak, aby odpovídala 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
    

    Převeďte nezpracovaný disk na virtuální pevný disk s pevnou velikostí:

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

    Nebo pokud máte qemu verze 2.6 nebo novější , uveďte možnost force_size :

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

Soubor Kickstart

V této části se dozvíte, jak připravit distribuci RHEL 7 z ISO pomocí souboru kickstart.

RHEL 7 ze souboru kickstartu

  1. Vytvořte soubor kickstartu, který obsahuje následující obsah, a soubor uložte. Podrobnosti o instalaci kickstartu najdete v průvodci instalací kickstartu.

    # 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. Umístěte soubor kickstartu, kde k němu má instalační systém přístup.

  3. Ve Správci technologie Hyper-V vytvořte nový virtuální počítač. Na stránce Připojení Virtuální pevný disk vyberte Později připojit virtuální pevný disk a dokončete Průvodce novým virtuálním počítačem.

  4. Otevřete nastavení virtuálního počítače:

    1. Připojte k virtuálnímu počítači nový virtuální pevný disk. Nezapomeňte vybrat formát virtuálního pevného disku a pevnou velikost.

    2. Připojte instalační ISO k jednotce DVD.

    3. Nastavte systém BIOS tak, aby se spouštěl z disku CD.

  5. Spusťte virtuální počítač. Po zobrazení průvodce instalací nakonfigurujte možnosti spuštění stisknutím klávesy Tab .

  6. Zadejte inst.ks=<the location of the kickstart file> na konci možností spuštění a stiskněte Enter.

  7. Počkejte na dokončení instalace. Po dokončení se virtuální počítač automaticky vypne. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

Známé problémy

Ovladač Hyper-V nelze zahrnout do počátečního disku RAM při použití hypervisoru jiného typu než Hyper-V.

V některých případech nemusí instalační programy pro Linux do počátečního disku RAM (initrd nebo initramfs) zahrnovat ovladače pro Hyper-V, pokud Linux nezjistí, že je spuštěný v prostředí Hyper-V.

Pokud k přípravě image Linuxu používáte jiný virtualizační systém (tj. VirtualBox, Xen atd.), možná budete muset znovu sestavit initrd, abyste zajistili, že na počátečním disku RAM budou k dispozici alespoň moduly jádra hv_vmbus a hv_storvsc. Jedná se o známý problém alespoň v systémech založených na nadřazené distribuci Red Hatu.

Pokud chcete tento problém vyřešit, přidejte moduly Hyper-V do initramfs a znovu ho sestavte:

Upravte /etc/dracut.confa přidejte následující obsah:

add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "

Opětovné sestavení initramfs:

sudo dracut -f -v

Další podrobnosti naleznete v informacích o opětovném sestavení initramfs.

Další kroky

  • Teď jste připraveni použít virtuální pevný disk Red Hat Enterprise Linux k vytvoření nových virtuálních počítačů v Azure. Pokud soubor .vhd nahráváte do Azure poprvé, přečtěte si téma Vytvoření virtuálního počítače s Linuxem z vlastního disku.
  • Další podrobnosti o hypervisorech certifikovaných pro spuštění Red Hat Enterprise Linuxu najdete na webu Red Hat.
  • Další informace o použití imagí RHEL BYOS připravených pro produkční prostředí najdete na stránce dokumentace pro BYOS.