Förbereda en Red Hat-baserad virtuell dator för Azure

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️ ✔️ Enhetliga skalningsuppsättningar

I den här artikeln får du lära dig hur du förbereder en virtuell Red Hat Enterprise Linux-dator (RHEL) för användning i Azure. De versioner av RHEL som beskrivs i den här artikeln är 6.X, 7.X och 8.X. Hypervisor-program för förberedelse som beskrivs i den här artikeln är Hyper-V, kernelbaserad virtuell dator (KVM) och VMware. Mer information om behörighetskrav för att delta i Red Hats Cloud Access-program finns i Red Hats cloud access-webbplats och köra RHEL på Azure. Information om hur du automatiserar skapandet av RHEL-avbildningar finns i Azure Image Builder.

Kommentar

Tänk på versioner som är End Of Life (EOL) och som inte längre stöds av Redhat. Uppladdade bilder som finns på eller utanför EOL kommer att stödjas på ett rimligt sätt. Länk till Redhats produktlivscykel

Hyper-V Manager

Det här avsnittet visar hur du förbereder en virtuell RHEL 6-, RHEL 7- eller RHEL 8-dator med Hjälp av Hyper-V Manager.

Förutsättningar

Det här avsnittet förutsätter att du redan har hämtat en ISO-fil från Red Hat-webbplatsen och installerat RHEL-avbildningen på en virtuell hårddisk (VHD). Mer information om hur du använder Hyper-V Manager för att installera en operativsystemavbildning finns i Installera Hyper-V-rollen och Konfigurera en virtuell dator.

RHEL-installationsanteckningar

  • Azure stöder inte VHDX-formatet. Azure stöder endast fast virtuell hårddisk. Du kan använda Hyper-V Manager för att konvertera disken till VHD-format, eller så kan du använda cmdleten convert-vhd. Om du använder VirtualBox väljer du Fast storlek i stället för det dynamiskt allokerade standardalternativet när du skapar disken.

  • Azure stöder virtuella datorer med Gen1 (BIOS-start) och Gen2 (UEFI-start).

  • Den maximala storleken som tillåts för den virtuella hårddisken är 1 023 GB.

  • Modulen vfat kernel måste vara aktiverad i kerneln.

  • Logical Volume Manager (LVM) stöds och kan användas på OS-disken eller datadiskarna på virtuella Azure-datorer. I allmänhet rekommenderar vi dock att du använder standardpartitioner på OS-disken i stället för LVM. Den här metoden undviker LVM-namnkonflikter med klonade virtuella datorer, särskilt om du någonsin behöver ansluta en operativsystemdisk till en annan identisk virtuell dator för felsökning. Se LVM- och RAID-dokumentationen.

  • Kernelstöd för montering av UDF-filsystem (Universal Disk Format) krävs. Vid första starten på Azure skickar det UDF-formaterade mediet som är kopplat till gästen etableringskonfigurationen till den virtuella Linux-datorn. Azure Linux-agenten måste kunna montera UDF-filsystemet för att kunna läsa dess konfiguration och etablera den virtuella datorn, utan detta misslyckas etableringen!

  • Konfigurera inte en växlingspartition på operativsystemdisken. Mer information om detta finns i följande steg.

  • Alla virtuella hårddiskar i Azure måste ha en virtuell storlek som är justerad till 1 MB. När du konverterar från en rådisk till en virtuell hårddisk måste du se till att den råa diskstorleken är en multipel av 1 MB före konverteringen. Mer information finns i stegen nedan. Mer information finns i Installationsanteckningar för Linux.

Kommentar

Cloud-init >= 21.2 tar bort udf-kravet. Men utan att udf-modulen är aktiverad monteras inte cdrom-filen under etableringen, vilket förhindrar att anpassade data tillämpas. En lösning för detta är att tillämpa anpassade data med hjälp av användardata. Men till skillnad från anpassade data krypteras inte användardata. https://cloudinit.readthedocs.io/en/latest/topics/format.html

RHEL 6 med Hyper-V Manager

Viktigt!

Från och med den 30 november 2020 kommer Red Hat Enterprise Linux 6 att nå slutet av underhållsfasen. Underhållsfasen följs av den utökade livslängdsfasen. När Red Hat Enterprise Linux 6 övergår från de fullständiga underhållsfaserna rekommenderar vi starkt att du uppgraderar till Red Hat Enterprise Linux 7, 8 eller 9. Om kunderna måste stanna kvar på Red Hat Enterprise Linux 6 rekommenderar vi att du lägger till tillägget För utökad livscykelsupport för Red Hat Enterprise Linux (ELS).

  1. I Hyper-V Manager väljer du den virtuella datorn.

  2. Klicka på Anslut för att öppna ett konsolfönster för den virtuella datorn.

  3. I RHEL 6 kan NetworkManager störa Azure Linux-agenten. Avinstallera det här paketet genom att köra följande kommando:

    sudo rpm -e --nodeps NetworkManager
    
  4. Skapa eller redigera /etc/sysconfig/network filen och lägg till följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Skapa eller redigera /etc/sysconfig/network-scripts/ifcfg-eth0 filen och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Flytta (eller ta bort) udev-reglerna för att undvika att generera statiska regler för Ethernet-gränssnittet. Dessa regler orsakar problem när du klonar en virtuell dator i Microsoft Azure eller 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
    

Kommentar

** När du använder accelererat nätverk (AN) måste det syntetiska gränssnitt som skapas ha konfigurerats för att vara ohanterat med hjälp av en udev-regel. Detta förhindrar att NetworkManager tilldelar samma ip-adress till den som det primära gränssnittet.

Så här tillämpar du den:

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. Kontrollera att nätverkstjänsten startar vid starttiden genom att köra följande kommando:

    sudo chkconfig network on
    
  2. Registrera din Red Hat-prenumeration för att aktivera installation av paket från RHEL-lagringsplatsen genom att köra följande kommando:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. WALinuxAgent-paketet, WALinuxAgent-<version>, har push-överförts till Red Hat-extralagringsplatsen. Aktivera lagringsplatsen extra genom att köra följande kommando:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Om du vill göra den här ändringen öppnar /boot/grub/menu.lst du i en textredigerare och ser till att standardkärnan innehåller följande parametrar:

    console=ttyS0 earlyprintk=ttyS0
    

    Detta säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem.

    Dessutom rekommenderar vi att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

    Grafiska och tysta stövlar är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Du kan lämna alternativet crashkernel konfigurerat om du vill. Observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer. Den här konfigurationen kan vara problematisk för mindre storlekar på virtuella datorer.

  5. Kontrollera att SSH-servern (Secure Shell) är installerad och konfigurerad att starta vid start, vilket vanligtvis är standardvärdet. Ändra /etc/ssh/sshd_config så att följande rad inkluderas:

    ClientAliveInterval 180
    
  6. Installera Azure Linux-agenten genom att köra följande kommando:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    

    När du installerar WALinuxAgent-paketet tas networkmanager- och NetworkManager-gnome-paketen bort om de inte redan har tagits bort i steg 3.

  7. Skapa inte växlingsutrymme på operativsystemdisken.

    Azure Linux-agenten kan automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisken som är ansluten till den virtuella datorn när den virtuella datorn har etablerats i Azure. Observera att den lokala resursdisken är en tillfällig disk och att den kan tömmas om den virtuella datorn avetableras. När du har installerat Azure Linux-agenten i föregående steg ändrar du följande parametrar i /etc/waagent.conf på lämpligt sätt:

    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. Avregistrera prenumerationen (om det behövs) genom att köra följande kommando:

    sudo subscription-manager unregister
    
  9. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure:

Kommentar

Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
  1. Klicka på Åtgärden>stängs av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

RHEL 7 med Hyper-V Manager

  1. I Hyper-V Manager väljer du den virtuella datorn.

  2. Klicka på Anslut för att öppna ett konsolfönster för den virtuella datorn.

  3. Skapa eller redigera /etc/sysconfig/network filen och lägg till följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Skapa eller redigera /etc/sysconfig/network-scripts/ifcfg-eth0 filen och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  5. Kontrollera att nätverkstjänsten startar vid starttiden genom att köra följande kommando:

    sudo systemctl enable network
    
  6. Registrera din Red Hat-prenumeration för att aktivera installation av paket från RHEL-lagringsplatsen genom att köra följande kommando:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Om du vill göra den här ändringen öppnar /etc/default/grub du i en textredigerare och redigerar parametern GRUB_CMDLINE_LINUX . Till exempel:

    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"
    

    Detta säkerställer också att alla konsolmeddelanden skickas till den första serieporten och aktiverar interaktion med seriekonsolen, vilket kan hjälpa Azure-supporten med felsökningsproblem. Den här konfigurationen inaktiverar också de nya RHEL 7-namngivningskonventionerna för nätverkskort.

    rhgb quiet crashkernel=auto
    

    Grafiska och tysta stövlar är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Du kan lämna alternativet crashkernel konfigurerat om du vill. Observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för mindre storlekar på virtuella datorer.

  8. När du är klar med redigeringen /etc/default/grubkör du följande kommando för att återskapa grub-konfigurationen:

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

    Kommentar

    Om du laddar upp en UEFI-aktiverad virtuell dator är grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgkommandot för att uppdatera grub .

  9. Kontrollera att SSH-servern är installerad och konfigurerad för att starta vid start, vilket vanligtvis är standard. Ändra /etc/ssh/sshd_config så att följande rad inkluderas:

    ClientAliveInterval 180
    
  10. WALinuxAgent-paketet, WALinuxAgent-<version>, har push-överförts till Red Hat-extralagringsplatsen. Aktivera lagringsplatsen extra genom att köra följande kommando:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Installera Azure Linux-agenten, cloud-init och andra nödvändiga verktyg genom att köra följande kommando:

    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. Konfigurera cloud-init för att hantera etableringen:

    1. Konfigurera waagent för 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
    

    Kommentar

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning anger du Provisioning.Agent=disabled på konfigurationen /etc/waagent.conf .

    1. Konfigurera monteringar:
    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. Konfigurera Azure-datakälla:
    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. Om den är konfigurerad tar du bort befintlig växlingsfil:
    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. Konfigurera cloud-init-loggning:
    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. Växlingskonfiguration. Skapa inte växlingsutrymme på operativsystemdisken.

    Tidigare användes Azure Linux-agenten för att automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisk som är ansluten till den virtuella datorn efter att den virtuella datorn har etablerats i Azure. Men detta hanteras nu av cloud-init, du får inte använda Linux-agenten för att formatera resursdisken skapa växlingsfilen, ändra följande parametrar på /etc/waagent.conf lämpligt sätt:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Om du vill montera, formatera och skapa växling kan du antingen:

    • Skicka in detta som en cloud-init-konfiguration varje gång du skapar en virtuell dator via customdata. Detta är den rekommenderade metoden.

    • Använd ett cloud-init-direktiv som bakas in i avbildningen som gör detta varje gång den virtuella datorn skapas.

      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. Om du vill avregistrera prenumerationen kör du följande kommando:

    sudo subscription-manager unregister
    
  15. Avetablering

    Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure:

    Varning

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget. Om du kör kommandot waagent -force -deprovision+user blir källdatorn oanvändbar. Det här steget är endast avsett att skapa en generaliserad avbildning.

    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. Klicka på Åtgärden>stängs av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

RHEL 8 med Hyper-V Manager

  1. I Hyper-V Manager väljer du den virtuella datorn.

  2. Klicka på Anslut för att öppna ett konsolfönster för den virtuella datorn.

  3. Kontrollera att Network Manager-tjänsten startar vid start genom att köra följande kommando:

    sudo systemctl enable NetworkManager.service
    
  4. Konfigurera nätverksgränssnittet så att det startar automatiskt och använder DHCP:

    sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
    
  5. Registrera din Red Hat-prenumeration för att aktivera installation av paket från RHEL-lagringsplatsen genom att köra följande kommando:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  6. Ändra startraden för kernel i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure och aktivera seriekonsolen.

    1. Ta bort aktuella GRUB-parametrar:
    sudo grub2-editenv - unset kernelopts
    
    1. Redigera /etc/default/grub i en textredigerare och lägg till följande parametrar:
    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"
    

    Detta säkerställer också att alla konsolmeddelanden skickas till den första serieporten och aktiverar interaktion med seriekonsolen, vilket kan hjälpa Azure-supporten med felsökningsproblem. Den här konfigurationen inaktiverar också de nya namngivningskonventionerna för nätverkskort.

    1. Dessutom rekommenderar vi att du tar bort följande parametrar:
    rhgb quiet crashkernel=auto
    

    Grafiska och tysta stövlar är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Du kan lämna alternativet crashkernel konfigurerat om du vill. Observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för mindre storlekar på virtuella datorer.

  7. När du är klar med redigeringen /etc/default/grubkör du följande kommando för att återskapa grub-konfigurationen:

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

    Och för en UEFI-aktiverad virtuell dator kör du följande kommando:

    sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  8. Kontrollera att SSH-servern är installerad och konfigurerad för att starta vid start, vilket vanligtvis är standard. Ändra /etc/ssh/sshd_config så att följande rad inkluderas:

    ClientAliveInterval 180
    
  9. Installera Azure Linux-agenten, cloud-init och andra nödvändiga verktyg genom att köra följande kommando:

    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. Konfigurera cloud-init för att hantera etableringen:

    1. Konfigurera waagent för 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
    

    Kommentar

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning anger du Provisioning.Agent=disabled på konfigurationen /etc/waagent.conf .

    1. Konfigurera monteringar:
    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. Konfigurera Azure-datakälla:
    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. Om den är konfigurerad tar du bort befintlig växlingsfil:
    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. Konfigurera cloud-init-loggning:
    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. Växla konfiguration Skapa inte växlingsutrymme på operativsystemdisken.

    Tidigare användes Azure Linux-agenten för att automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisk som är ansluten till den virtuella datorn efter att den virtuella datorn har etablerats i Azure. Men detta hanteras nu av cloud-init, du får inte använda Linux-agenten för att formatera resursdisken skapa växlingsfilen, ändra följande parametrar på /etc/waagent.conf lämpligt sätt:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    
    • Skicka in detta som en cloud-init-konfiguration varje gång du skapar en virtuell dator via customdata. Detta är den rekommenderade metoden.

    • Använd ett cloud-init-direktiv som bakas in i avbildningen som gör detta varje gång den virtuella datorn skapas.

      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. Om du vill avregistrera prenumerationen kör du följande kommando:

    sudo subscription-manager unregister
    
  13. Avetablering

    Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i 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
    

    Varning

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget. Om du kör kommandot waagent -force -deprovision+user blir källdatorn oanvändbar. Det här steget är endast avsett att skapa en generaliserad avbildning.

  14. Klicka på Åtgärden>stängs av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

KVM

Det här avsnittet visar hur du använder KVM för att förbereda en RHEL 6 - eller RHEL 7-distribution för att ladda upp till Azure.

RHEL 6 med KVM

Viktigt!

Från och med den 30 november 2020 kommer Red Hat Enterprise Linux 6 att nå slutet av underhållsfasen. Underhållsfasen följs av den utökade livslängdsfasen. När Red Hat Enterprise Linux 6 övergår från de fullständiga underhållsfaserna rekommenderar vi starkt att du uppgraderar till Red Hat Enterprise Linux 7, 8 eller 9. Om kunderna måste stanna kvar på Red Hat Enterprise Linux 6 rekommenderar vi att du lägger till tillägget För utökad livscykelsupport för Red Hat Enterprise Linux (ELS).

  1. Ladda ned KVM-bilden av RHEL 6 från Red Hat-webbplatsen.

  2. Ange ett rotlösenord.

    Generera ett krypterat lösenord och kopiera utdata från kommandot:

    sudo openssl passwd -1 changeme
    

    Ange ett rotlösenord med guestfish:

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

    Ändra rotanvändarens andra fält från "!!" till det krypterade lösenordet.

  3. Skapa en virtuell dator i KVM från qcow2-avbildningen. Ange disktypen qcow2 och ange enhetsmodellen för det virtuella nätverksgränssnittet till virtio. Starta sedan den virtuella datorn och logga in som rot.

  4. Skapa eller redigera /etc/sysconfig/network filen och lägg till följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Skapa eller redigera /etc/sysconfig/network-scripts/ifcfg-eth0 filen och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Flytta (eller ta bort) udev-reglerna för att undvika att generera statiska regler för Ethernet-gränssnittet. Dessa regler orsakar problem när du klonar en virtuell dator i Azure eller 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
    

Kommentar

** När du använder accelererat nätverk (AN) måste det syntetiska gränssnitt som skapas ha konfigurerats för att vara ohanterat med hjälp av en udev-regel. Detta förhindrar att NetworkManager tilldelar samma ip-adress till den som det primära gränssnittet.

Så här tillämpar du den:

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. Kontrollera att nätverkstjänsten startar vid starttiden genom att köra följande kommando:

    sudo chkconfig network on
    
  2. Registrera din Red Hat-prenumeration för att aktivera installation av paket från RHEL-lagringsplatsen genom att köra följande kommando:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Om du vill göra den här konfigurationen öppnar /boot/grub/menu.lst du i en textredigerare och ser till att standardkärnan innehåller följande parametrar:

    console=ttyS0 earlyprintk=ttyS0
    

    Detta säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem.

    Dessutom rekommenderar vi att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

    Grafiska och tysta stövlar är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Du kan lämna alternativet crashkernel konfigurerat om du vill. Observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för mindre storlekar på virtuella datorer.

  4. Lägg till Hyper-V-moduler i initramfs:

    Redigera /etc/dracut.confoch lägg till följande innehåll:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Återskapa initramfs:

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

    sudo yum remove cloud-init
    
  6. Kontrollera att SSH-servern är installerad och konfigurerad för start vid start:

    sudo chkconfig sshd on
    

    Ändra /etc/ssh/sshd_config så att följande rader inkluderas:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  7. WALinuxAgent-paketet, WALinuxAgent-<version>, har push-överförts till Red Hat-extralagringsplatsen. Aktivera lagringsplatsen extra genom att köra följande kommando:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  8. Installera Azure Linux-agenten genom att köra följande kommando:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  9. Azure Linux-agenten kan automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisken som är ansluten till den virtuella datorn när den virtuella datorn har etablerats i Azure. Observera att den lokala resursdisken är en tillfällig disk och att den kan tömmas om den virtuella datorn avetableras. När du har installerat Azure Linux-agenten i föregående steg ändrar du följande parametrar i /etc/waagent.conf på lämpligt sätt:

    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. Avregistrera prenumerationen (om det behövs) genom att köra följande kommando:

    sudo subscription-manager unregister
    
  11. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure:

    Kommentar

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget

    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. Stäng av den virtuella datorn i KVM.

  13. Konvertera qcow2-avbildningen till VHD-formatet.

    Kommentar

    Det finns en känd bugg i qemu-img-versioner >=2.2.1 som resulterar i en felaktigt formaterad virtuell hårddisk. Problemet har åtgärdats i QEMU 2.6. Vi rekommenderar att du använder antingen qemu-img 2.2.0 eller lägre eller uppdaterar till 2,6 eller senare. Referens: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertera först avbildningen till raw-format:

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

    Kontrollera att storleken på den råa avbildningen är justerad med 1 MB. Annars avrundar du storleken så att den överensstämmer med 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
    

    Konvertera rådisken till en virtuell hårddisk med fast storlek:

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

    Eller med qemu version 2.6+ inkluderar du alternativet 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 med KVM

  1. Ladda ned KVM-bilden av RHEL 7 från Red Hat-webbplatsen. Den här proceduren använder RHEL 7 som exempel.

  2. Ange ett rotlösenord.

    Generera ett krypterat lösenord och kopiera utdata från kommandot:

    sudo openssl passwd -1 changeme
    

    Ange ett rotlösenord med guestfish:

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

    Ändra det andra fältet för rotanvändaren från "!!" till det krypterade lösenordet.

  3. Skapa en virtuell dator i KVM från qcow2-avbildningen. Ange disktypen qcow2 och ange enhetsmodellen för det virtuella nätverksgränssnittet till virtio. Starta sedan den virtuella datorn och logga in som rot.

  4. Skapa eller redigera /etc/sysconfig/network filen och lägg till följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Skapa eller redigera /etc/sysconfig/network-scripts/ifcfg-eth0 filen och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  6. Kontrollera att nätverkstjänsten startar vid starttiden genom att köra följande kommando:

    sudo systemctl enable network
    
  7. Registrera din Red Hat-prenumeration för att aktivera installation av paket från RHEL-lagringsplatsen genom att köra följande kommando:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  8. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Om du vill göra den här konfigurationen öppnar /etc/default/grub du i en textredigerare och redigerar parametern GRUB_CMDLINE_LINUX . Till exempel:

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

    Det här kommandot ser också till att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem. Kommandot inaktiverar också de nya RHEL 7-namngivningskonventionerna för nätverkskort. Dessutom rekommenderar vi att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

    Grafiska och tysta stövlar är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Du kan lämna alternativet crashkernel konfigurerat om du vill. Observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för mindre storlekar på virtuella datorer.

  9. När du är klar med redigeringen /etc/default/grubkör du följande kommando för att återskapa grub-konfigurationen:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Lägg till Hyper-V-moduler i initramfs.

    Redigera /etc/dracut.conf och lägg till innehåll:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Återskapa initramfs:

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

    sudo yum remove cloud-init
    
  12. Kontrollera att SSH-servern är installerad och konfigurerad för start vid start:

    sudo systemctl enable sshd
    

    Ändra /etc/ssh/sshd_config så att följande rader inkluderas:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. WALinuxAgent-paketet, WALinuxAgent-<version>, har push-överförts till Red Hat-extralagringsplatsen. Aktivera lagringsplatsen extra genom att köra följande kommando:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  14. Installera Azure Linux-agenten genom att köra följande kommando:

    sudo yum install WALinuxAgent
    

    Aktivera waagent-tjänsten:

    sudo systemctl enable waagent.service
    
  15. Installera cloud-init Följ stegen i Förbereda en virtuell RHEL 7-dator från Hyper-V Manager, steg 12, "Installera cloud-init för att hantera etableringen".

  16. Växla konfiguration

    Skapa inte växlingsutrymme på operativsystemdisken. Följ stegen i Förbereda en virtuell RHEL 7-dator från Hyper-V Manager, steg 13, Växlingskonfiguration

  17. Avregistrera prenumerationen (om det behövs) genom att köra följande kommando:

    sudo subscription-manager unregister
    
  18. Avetablering

    Följ stegen i Förbereda en virtuell RHEL 7-dator från Hyper-V Manager, steg 15, "Deprovision"

  19. Stäng av den virtuella datorn i KVM.

  20. Konvertera qcow2-avbildningen till VHD-formatet.

    Kommentar

    Det finns en känd bugg i qemu-img-versioner >=2.2.1 som resulterar i en felaktigt formaterad virtuell hårddisk. Problemet har åtgärdats i QEMU 2.6. Vi rekommenderar att du använder antingen qemu-img 2.2.0 eller lägre eller uppdaterar till 2,6 eller senare. Referens: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertera först avbildningen till raw-format:

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

    Kontrollera att storleken på den råa avbildningen är justerad med 1 MB. Annars avrundar du storleken så att den överensstämmer med 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
    

    Konvertera rådisken till en virtuell hårddisk med fast storlek:

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

    Eller med qemu version 2.6+ inkluderar du alternativet force_size :

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

VMware

Det här avsnittet visar hur du förbereder en RHEL 6 - eller RHEL 7-distribution från VMware.

Förutsättningar

Det här avsnittet förutsätter att du redan har installerat en virtuell RHEL-dator i VMware. Mer information om hur du installerar ett operativsystem i VMware finns i installationsguiden för gästoperativsystem för VMware.

  • När du installerar Linux-operativsystemet rekommenderar vi att du använder standardpartitioner i stället för LVM, vilket ofta är standard för många installationer. Detta undviker LVM-namnkonflikter med klonade virtuella datorer, särskilt om en operativsystemdisk någonsin behöver kopplas till en annan virtuell dator för felsökning. LVM eller RAID kan användas på datadiskar om så önskas.
  • Konfigurera inte en växlingspartition på operativsystemdisken. Du kan konfigurera Linux-agenten för att skapa en växlingsfil på den tillfälliga resursdisken. Mer information om detta finns i stegen nedan.
  • När du skapar den virtuella hårddisken väljer du Lagra virtuell disk som en enda fil.

RHEL 6 med VMware

Viktigt!

Från och med den 30 november 2020 kommer Red Hat Enterprise Linux 6 att nå slutet av underhållsfasen. Underhållsfasen följs av den utökade livslängdsfasen. När Red Hat Enterprise Linux 6 övergår från de fullständiga underhållsfaserna rekommenderar vi starkt att du uppgraderar till Red Hat Enterprise Linux 7, 8 eller 9. Om kunderna måste stanna kvar på Red Hat Enterprise Linux 6 rekommenderar vi att du lägger till tillägget För utökad livscykelsupport för Red Hat Enterprise Linux (ELS).

  1. I RHEL 6 kan NetworkManager störa Azure Linux-agenten. Avinstallera det här paketet genom att köra följande kommando:

    sudo rpm -e --nodeps NetworkManager
    
  2. Skapa en fil med namnet network i katalogen /etc/sysconfig/ som innehåller följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  3. Skapa eller redigera /etc/sysconfig/network-scripts/ifcfg-eth0 filen och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  4. Flytta (eller ta bort) udev-reglerna för att undvika att generera statiska regler för Ethernet-gränssnittet. Dessa regler orsakar problem när du klonar en virtuell dator i Azure eller 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
    

Kommentar

** När du använder accelererat nätverk (AN) måste det syntetiska gränssnitt som skapas ha konfigurerats för att vara ohanterat med hjälp av en udev-regel. Detta förhindrar att NetworkManager tilldelar samma ip-adress till den som det primära gränssnittet.

Så här tillämpar du den:

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. Kontrollera att nätverkstjänsten startar vid starttiden genom att köra följande kommando:

    sudo chkconfig network on
    
  2. Registrera din Red Hat-prenumeration för att aktivera installation av paket från RHEL-lagringsplatsen genom att köra följande kommando:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. WALinuxAgent-paketet, WALinuxAgent-<version>, har push-överförts till Red Hat-extralagringsplatsen. Aktivera lagringsplatsen extra genom att köra följande kommando:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Det gör du genom att öppna /etc/default/grub i en textredigerare och redigera parametern GRUB_CMDLINE_LINUX . Till exempel:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
    

    Detta säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem. Dessutom rekommenderar vi att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

    Grafiska och tysta stövlar är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Du kan lämna alternativet crashkernel konfigurerat om du vill. Observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för mindre storlekar på virtuella datorer.

  5. Lägg till Hyper-V-moduler i initramfs:

    Redigera /etc/dracut.confoch lägg till följande innehåll:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Återskapa initramfs:

    sudo dracut -f -v
    
  6. Kontrollera att SSH-servern är installerad och konfigurerad för att starta vid start, vilket vanligtvis är standard. Ändra /etc/ssh/sshd_config så att följande rad inkluderas:

    ClientAliveInterval 180
    
  7. Installera Azure Linux-agenten genom att köra följande kommando:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  8. Skapa inte växlingsutrymme på operativsystemdisken.

    Azure Linux-agenten kan automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisken som är ansluten till den virtuella datorn när den virtuella datorn har etablerats i Azure. Observera att den lokala resursdisken är en tillfällig disk och att den kan tömmas om den virtuella datorn avetableras. När du har installerat Azure Linux-agenten i föregående steg ändrar du följande parametrar på /etc/waagent.conf lämpligt sätt:

    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. Avregistrera prenumerationen (om det behövs) genom att köra följande kommando:

    sudo subscription-manager unregister
    
  10. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure:

    Kommentar

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.

    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. Stäng av den virtuella datorn och konvertera VMDK-filen till en .vhd-fil.

    Kommentar

    Det finns en känd bugg i qemu-img-versioner >=2.2.1 som resulterar i en felaktigt formaterad virtuell hårddisk. Problemet har åtgärdats i QEMU 2.6. Vi rekommenderar att du använder antingen qemu-img 2.2.0 eller lägre eller uppdaterar till 2,6 eller senare. Referens: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertera först avbildningen till raw-format:

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

    Kontrollera att storleken på den råa avbildningen är justerad med 1 MB. Annars avrundar du storleken så att den överensstämmer med 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
    

    Konvertera rådisken till en virtuell hårddisk med fast storlek:

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

    Eller med qemu version 2.6+ inkluderar du alternativet 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 med VMware

  1. Skapa eller redigera /etc/sysconfig/network filen och lägg till följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  2. Skapa eller redigera /etc/sysconfig/network-scripts/ifcfg-eth0 filen och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  3. Kontrollera att nätverkstjänsten startar vid starttiden genom att köra följande kommando:

    sudo systemctl enable network
    
  4. Registrera din Red Hat-prenumeration för att aktivera installation av paket från RHEL-lagringsplatsen genom att köra följande kommando:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Om du vill göra den här ändringen öppnar /etc/default/grub du i en textredigerare och redigerar parametern GRUB_CMDLINE_LINUX . Till exempel:

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

    Den här konfigurationen säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem. Det inaktiverar också de nya RHEL 7-namngivningskonventionerna för nätverkskort. Dessutom rekommenderar vi att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

    Grafiska och tysta stövlar är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Du kan lämna alternativet crashkernel konfigurerat om du vill. Observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för mindre storlekar på virtuella datorer.

  6. När du är klar med redigeringen /etc/default/grubkör du följande kommando för att återskapa grub-konfigurationen:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. Lägg till Hyper-V-moduler i initramfs.

    Redigera /etc/dracut.conf, lägg till innehåll:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Återskapa initramfs:

    sudo dracut -f -v
    
  8. Kontrollera att SSH-servern är installerad och konfigurerad att starta vid start. Den här inställningen är vanligtvis standardinställningen. Ändra /etc/ssh/sshd_config så att följande rad inkluderas:

    ClientAliveInterval 180
    
  9. WALinuxAgent-paketet, WALinuxAgent-<version>, har push-överförts till Red Hat-extralagringsplatsen. Aktivera lagringsplatsen extra genom att köra följande kommando:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  10. Installera Azure Linux-agenten genom att köra följande kommando:

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

    Följ stegen i Förbereda en virtuell RHEL 7-dator från Hyper-V Manager, steg 12, "Installera cloud-init för att hantera etableringen".

  12. Växla konfiguration

    Skapa inte växlingsutrymme på operativsystemdisken. Följ stegen i Förbereda en virtuell RHEL 7-dator från Hyper-V Manager, steg 13, Växlingskonfiguration

  13. Om du vill avregistrera prenumerationen kör du följande kommando:

    sudo subscription-manager unregister
    
  14. Avetablering

    Följ stegen i Förbereda en virtuell RHEL 7-dator från Hyper-V Manager, steg 15, "Deprovision"

  15. Stäng av den virtuella datorn och konvertera VMDK-filen till VHD-formatet.

    Kommentar

    Det finns en känd bugg i qemu-img-versioner >=2.2.1 som resulterar i en felaktigt formaterad virtuell hårddisk. Problemet har åtgärdats i QEMU 2.6. Vi rekommenderar att du använder antingen qemu-img 2.2.0 eller lägre eller uppdaterar till 2,6 eller senare. Referens: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertera först avbildningen till raw-format:

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

    Kontrollera att storleken på den råa avbildningen är justerad med 1 MB. Annars avrundar du storleken så att den överensstämmer med 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
    

    Konvertera rådisken till en virtuell hårddisk med fast storlek:

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

    Eller med qemu version 2.6+ inkluderar du alternativet force_size :

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

Kickstart-fil

Det här avsnittet visar hur du förbereder en RHEL 7-distribution från en ISO med hjälp av en kickstart-fil.

RHEL 7 från en kickstart-fil

  1. Skapa en kickstart-fil som innehåller följande innehåll och spara filen. Mer information om kickstartsinstallation finns i installationsguiden för Kickstart.

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

  3. Skapa en ny virtuell dator i Hyper-V Manager. På sidan Anslut Virtuell hårddisk väljer du Anslut en virtuell hårddisk senare och slutför guiden Ny virtuell dator.

  4. Öppna inställningarna för den virtuella datorn:

    1. Koppla en ny virtuell hårddisk till den virtuella datorn. Välj VHD-format och Fast storlek.

    2. Koppla installations-ISO till DVD-enheten.

    3. Ställ in BIOS att starta från CD.

  5. Starta den virtuella datorn. När installationsguiden visas trycker du på Tabb för att konfigurera startalternativen.

  6. Ange inst.ks=<the location of the kickstart file> i slutet av startalternativen och tryck på Retur.

  7. Vänta tills installationen är klar. När den är klar stängs den virtuella datorn av automatiskt. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

Kända problem

Det gick inte att inkludera Hyper-V-drivrutinen i den första RAM-disken när du använder ett hypervisor-program som inte är Hyper-V

I vissa fall kanske Linux-installationsprogram inte innehåller drivrutinerna för Hyper-V i den första RAM-disken (initrd eller initramfs) såvida inte Linux upptäcker att det körs i en Hyper-V-miljö.

När du använder ett annat virtualiseringssystem (det vill säga VirtualBox, Xen osv.) för att förbereda Linux-avbildningen kan du behöva återskapa initrd för att säkerställa att åtminstone hv_vmbus- och hv_storvsc kernelmodulerna är tillgängliga på den första RAM-disken. Detta är ett känt problem åtminstone på system som baseras på den överordnade Red Hat-fördelningen.

Lös problemet genom att lägga till Hyper-V-moduler i initramfs och återskapa det:

Redigera /etc/dracut.confoch lägg till följande innehåll:

add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "

Återskapa initramfs:

sudo dracut -f -v

Mer information finns i informationen om hur du återskapar initramfs.

Nästa steg

  • Nu är du redo att använda din virtuella Red Hat Enterprise Linux-hårddisk för att skapa nya virtuella datorer i Azure. Om det är första gången du laddar upp VHD-filen till Azure läser du Skapa en virtuell Linux-dator från en anpassad disk.
  • Mer information om de hypervisor-program som är certifierade för att köra Red Hat Enterprise Linux finns på Red Hat-webbplatsen.
  • Mer information om hur du använder produktionsklara RHEL BYOS-avbildningar finns på dokumentationssidan för BYOS.