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

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu Konec životnosti (EOL). Zvažte své použití a odpovídajícím způsobem naplánujte. Další informace najdete v doprovodných materiálech CentOS End Of Life.

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

Zjistěte, jak vytvořit a nahrát virtuální pevný disk Azure (VHD), který obsahuje operační systém Linux založený na CentOS.

Požadavky

Tento článek předpokládá, že jste už na virtuální pevný disk nainstalovali operační systém CentOS (nebo podobný odvozený operační systém Linux). Existuje několik nástrojů pro vytvoření souborů .vhd, například virtualizačního řešení, jako je Hyper-V. Pokyny najdete v tématu Instalace role Hyper-V a konfigurace virtuálního počítače.

Poznámky k instalaci CentOS

  • Další tipy k přípravě Linuxu pro Azure najdete v tématu Obecné poznámky k instalaci linuxu.
  • Formát VHDX není v Azure podporovaný, pouze pevný virtuální pevný disk. Disk můžete převést na formát VHD pomocí Správce technologie Hyper-V nebo rutiny convert-vhd. Pokud používáte VirtualBox, znamená to, že při vytváření disku vyberete pevnou velikost , nikoli výchozí dynamicky přidělenou velikost.
  • Modul jádra vfat musí být v jádru povolený.
  • Při instalaci systému Linux doporučujeme místo LVM používat standardní oddíly (často výchozí nastavení pro mnoho instalací). Tím se zabrání konfliktům názvů LVM s klonovanými virtuálními počítači, zejména v případě, že by se disk s operačním systémem někdy potřeboval připojit k jinému identickému virtuálnímu počítači pro účely řešení potíží. LVM nebo RAID lze použít na datových discích.
  • Je nutná podpora jádra pro připojení systémů souborů UDF. Při prvním spuštění v Azure se konfigurace zřizování předá virtuálnímu počítači s Linuxem pomocí média formátovaného uživatelem definovaného uživatelem, které je připojené k hostu. Agent Azure Linux nebo cloud-init musí připojit systém souborů UDF ke čtení konfigurace a zřízení virtuálního počítače.
  • Verze jádra Linuxu nižší než 2.6.37 nepodporují technologii NUMA v Hyper-V s většími velikostmi virtuálních počítačů. Tento problém má primárně vliv na starší distribuce používající upstreamové jádro Centos 2.6.32 a byl opraven v Centos 6.6 (jádro-2.6.32-504). Systémy, na kterých běží vlastní jádra starší než 2.6.37 nebo jádra založená na RHEL starší než 2.6.32-504, musí nastavit spouštěcí parametr numa=off na příkazovém řádku jádra v grub.conf. Další informace najdete v článku Red Hat KB 436883.
  • Nenakonfigurujte prohození oddílu na disku s operačním systémem.
  • 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ší 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

CentOS 6.x

Důležité

Upozorňujeme, že CentOS 6 dosáhl konce životnosti (EOL) a už ji komunita CentOS nepodporuje. To znamená, že pro tuto verzi nebudou vydány žádné další aktualizace ani opravy zabezpečení, takže budou ohroženy potenciálními bezpečnostními riziky. Důrazně doporučujeme upgradovat na novější verzi CentOS, abyste zajistili bezpečnost a stabilitu systému. Další pomoc vám poskytne oddělení IT nebo správce systému.

  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 CentOS 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 soubor /etc/sysconfig/network a přidejte následující text:

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Upravte pravidla udev, aby se zabránilo generování statických pravidel pro ethernetová rozhraní. Tato pravidla můžou způsobovat 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
    
  7. 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
    
  8. Pokud chcete použít zrcadla OpenLogic hostovaná v datacentrech Azure, nahraďte /etc/yum.repos.d/CentOS-Base.repo soubor následujícími úložišti. Tím se také přidá úložiště [openlogic], které obsahuje další balíčky, jako je agent Azure Linux:

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

    Poznámka:

    Zbývající část této příručky předpokládá, že používáte aspoň [openlogic] úložiště, které se použije k instalaci agenta Azure Linuxu níže.

  9. Do souboru /etc/yum.conf přidejte následující řádek:

    http_caching=packages
    
  10. Spuštěním následujícího příkazu vymažte aktuální metadata yum a aktualizujte systém nejnovějšími balíčky:

    sudo yum clean all
    

    Pokud nevytvoříte image pro starší verzi CentOS, doporučujeme aktualizovat všechny balíčky na nejnovější verzi:

    sudo yum -y update
    

    Po spuštění tohoto příkazu může být vyžadováno restartování.

  11. (Volitelné) Nainstalujte ovladače pro linuxové integrační služby (LIS).

    Důležité

    Tento krok je nutný pro CentOS 6.3 a starší a volitelný pro pozdější verze.

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

    Případně můžete postupovat podle pokynů k ruční instalaci na stránce pro stažení LIS a nainstalovat rpm na virtuální počítač.

  12. Nainstalujte agenta Azure Linux a závislosti. Spusťte a povolte službu waagent:

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

    Balíček WALinuxAgent odebere balíčky NetworkManager a NetworkManager-gnome, pokud ještě nebyly odebrány, jak je popsáno v kroku 3.

  13. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Chcete-li to 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 rootdelay=300
    

    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 problémy s laděním.

    Kromě výše uvedeného doporučujeme odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a quiet boot nejsou užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. Možnost crashkernel může být v případě potřeby nakonfigurovaná, ale mějte na paměti, že tento parametr sníží množství dostupné paměti na 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čů.

    Důležité

    CentOS 6.5 a starší musí také nastavit parametr numa=offjádra . Viz Red Hat KB 436883.

  14. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění. Obvykle se jedná o výchozí nastavení.

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

    Agent Azure Linux může po zřízení v Azure automaticky nakonfigurovat místo prohození pomocí disku místního prostředku připojeného k virtuálnímu počítači. Místní disk prostředku je dočasný disk a může se vyprázdnit při zrušení zřízení virtuálního počítače. Po instalaci agenta Azure Linuxu (viz předchozí krok) 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.
    
  16. 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 waagent -force -deprovision+user
    sudo export HISTSIZE=0
    

Poznámka:

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

  1. Klikněte na tlačítko Akce –> vypněte ve Správci technologie Hyper-V. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

CentOS 7.0+

Změny v CentOS 7 (a podobné deriváty)

Příprava virtuálního počítače CentOS 7 pro Azure se podobá CentOS 6, ale stojí za zmínku několik důležitých rozdílů:

  • Balíček NetworkManager už není v konfliktu s agentem Azure Linux. Tento balíček je ve výchozím nastavení nainstalovaný a doporučujeme, abyste ho neodebrali.

  • GRUB2 se teď používá jako výchozí bootloader, takže se změnil postup úprav parametrů jádra (viz níže).

  • XFS je teď výchozím systémem souborů. V případě potřeby lze systém souborů ext4 stále použít.

  • Vzhledem k tomu, že Služba CentOS 8 Stream a novější už ve výchozím nastavení neobsahuje network.service , musíte ji nainstalovat ručně:

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

Kroky konfigurace

  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 soubor /etc/sysconfig/network a přidejte následující text:

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

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Upravte pravidla udev, aby se zabránilo generování statických pravidel pro ethernetová rozhraní. Tato pravidla můžou způsobovat 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
    
  6. Pokud chcete použít zrcadla OpenLogic hostovaná v datacentrech Azure, nahraďte /etc/yum.repos.d/CentOS-Base.repo soubor následujícími úložišti. Tím se také přidá úložiště [openlogic], které obsahuje balíčky pro agenta Azure Linux:

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

    Poznámka:

    Zbývající část této příručky předpokládá, že používáte aspoň [openlogic] úložiště, které se použije k instalaci agenta Azure Linuxu níže.

  7. Spuštěním následujícího příkazu vymažte aktuální metadata yum a nainstalujte všechny aktualizace:

    sudo yum clean all
    

    Pokud nevytvoříte image pro starší verzi CentOS, doporučujeme aktualizovat všechny balíčky na nejnovější verzi:

    sudo yum -y update
    

    Po spuštění tohoto příkazu může být vyžadováno restartování.

  8. 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, například:

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

    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 problémy s laděním. Vypne také nové zásady vytváření názvů CentOS 7 pro síťové karty. Kromě výše uvedeného doporučujeme odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění není užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. Možnost crashkernel může být v případě potřeby nakonfigurovaná, ale mějte na paměti, že tento parametr sníží množství dostupné paměti na 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/grub podle výše uvedeného příkazu znovu sestavte konfiguraci grubu spuštěním následujícího příkazu:

    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/centos/grub.cfg. Modul jádra vfat musí být také povolený v jádru, jinak se zřizování nezdaří.

Ujistěte se, že je povolený modul udf . Odebrání nebo zakázání způsobí selhání zřizování nebo spuštění. (_Cloud-init >= 21.2 odebere požadavek udf. Další podrobnosti najdete v horní části dokumentu.)

  1. Pokud vytváříte image z VMware, VirtualBoxu nebo KVM: Ujistěte se, že jsou ovladače Hyper-V součástí initramfs:

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

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Znovu sestavte initramfs:

    sudo dracut -f -v
    
  2. Nainstalujte agenta Azure s Linuxem a závislosti pro rozšíření virtuálních počítačů Azure:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  3. Instalace cloud-init pro zpracování zřizování

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    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
    
    sudo echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    if [[ -f /mnt/swapfile ]]; then
    echo Removing swapfile - RHEL uses a swapfile by default
    swapoff /mnt/swapfile
    rm /mnt/swapfile -f
    fi
    
    echo "Add console log file"
    cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
  4. Konfigurace prohození

    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 :

    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
    

    Pokud chcete připojit, formátovat a vytvořit prohození, můžete:

    • Tuto možnost předejte jako konfiguraci cloud-init při každém vytvoření virtuálního počítače.

    • Použijte direktivu cloud-init vlož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"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  5. 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 -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  6. Klikněte na tlačítko Akce –> vypněte ve Správci technologie Hyper-V. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

Další kroky

Teď jste připraveni použít virtuální pevný disk CentOS 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.