Menyiapkan komputer virtual berbasis Red Hat untuk Azure

Berlaku untuk: ✔️ VM Linux ✔️Set skala fleksibel ✔️ Set skala seragam

Dalam artikel ini, Anda akan mempelajari cara menyiapkan komputer virtual Red Hat Enterprise Linux (RHEL) untuk digunakan di Azure. Versi RHEL yang dibahas dalam artikel ini adalah 6.X, 7.X, dan 8.X. Hypervisor untuk persiapan yang dibahas di artikel ini adalah Hyper-V, komputer virtual berbasis kernel (KVM), dan VMware. Untuk informasi selengkapnya tentang persyaratan kelayakan untuk berpartisipasi di program Red Hat Cloud Access, lihat situs web Red Hat Cloud Access dan Menjalankan RHEL di Azure. Untuk cara mengotomatiskan pembuatan citra RHEL, lihat Azure Image Builder.

Catatan

Ketahuilah versi yang merupakan End Of Life (EOL) dan tidak lagi didukung oleh Redhat. Gambar yang diunggah yang berada di atau di luar EOL akan didukung berdasarkan upaya bisnis yang wajar. Tautan ke Siklus Hidup Produk Redhat

Hyper-V Manager

Bagian ini menunjukkan cara menyiapkan komputer virtual RHEL 6, RHEL 7, atau RHEL 8 menggunakan Hyper-V Manager.

Prasyarat

Bagian ini mengasumsikan bahwa Anda telah mendapatkan file ISO dari situs web Red Hat dan menginstal gambar RHEL ke hard disk virtual (VHD). Untuk detail selengkapnya tentang cara menggunakan Hyper-V Manager untuk menginstal citra sistem operasi, lihat Menginstal Peran Hyper-V dan Mengonfigurasi Komputer Virtual.

Catatan penginstalan RHEL

  • Azure tidak mendukung format VHDX. Azure hanya mendukung VHD tetap. Anda dapat menggunakan Hyper-V Manager untuk mengonversi disk ke format VHD, atau menggunakan cmdlet convert-vhd. Jika menggunakan VirtualBox, pilih Ukuran tetap sebagai ganti dari opsi default yang dialokasikan secara dinamis saat Anda membuat disk.

  • Azure mendukung Komputer virtual Gen1 (boot BIOS) & Gen2 (boot UEFI).

  • Ukuran maksimum yang diizinkan untuk VHD adalah 1.023 GB.

  • Modul kernel vfat harus diaktifkan di kernel.

  • Logical Volume Manager (LVM) didukung dan dapat digunakan pada disk OS atau disk data di komputer virtual Azure. Namun, secara umum, sebaiknya gunakan partisi standar pada disk OS daripada LVM. Praktik ini akan menghindari terjadinya konflik nama LVM dengan komputer virtual yang dikloning, khususnya jika Anda perlu melampirkan disk sistem operasi ke komputer virtual identik lain untuk pemecahan masalah. Lihat dokumentasi LVM dan RAID.

  • Dukungan kernel untuk pemasangan sistem file Universal Disk Format (UDF) diperlukan. Pada boot pertama di Azure, media berformat UDF yang dilampirkan ke tamu meneruskan konfigurasi penyediaan ke komputer virtual Linux. Azure Linux Agent harus dapat memasang sistem file UDF untuk membaca konfigurasinya dan menyediakan komputer virtual, tanpa ini, penyediaan akan gagal!

  • Jangan mengonfigurasi partisi swap pada disk sistem operasi. Informasi selengkapnya tentang ini dapat ditemukan pada langkah-langkah berikut.

  • Semua VHD di Azure harus memiliki ukuran virtual yang selaras dengan 1MB. Saat mengonversi dari disk mentah ke VHD, Anda harus memastikan bahwa ukuran disk mentah adalah kelipatan 1MB sebelum konversi. Detail selengkapnya dapat ditemukan pada langkah-langkah di bawah. Lihat juga Catatan Penginstalan Linux untuk mengetahui informasi selengkapnya.

Catatan

Cloud-init >= 21.2 menghapus persyaratan udf. Namun, tanpa modul udf diaktifkan, cdrom tidak akan dipasang selama provisi, mencegah data kustom diterapkan. Solusi untuk ini adalah menerapkan data kustom menggunakan data pengguna. Namun, tidak seperti data kustom, data pengguna tidak dienkripsi. https://cloudinit.readthedocs.io/en/latest/topics/format.html

RHEL 6 menggunakan Hyper-V Manager

Penting

Mulai tanggal 30 November 2020, Red Hat Enterprise Linux 6 akan mencapai fase end of maintenance. Fase pemeliharaan diikuti oleh Fase Umur Diperpanjang. Saat Red Hat Enterprise Linux 6 keluar dari Fase Penuh/Pemeliharaan, sebaiknya tingkatkan ke Red Hat Enterprise Linux 7, 8, atau 9. Jika pelanggan harus tetap berada di Red Hat Enterprise Linux 6, sebaiknya tambahkan Add-On Red Hat Enterprise Linux Extended Life Cycle Support (ELS).

  1. Di Hyper-V Manager, pilih komputer virtual.

  2. Klik Sambungkan untuk membuka jendela konsol untuk komputer virtual.

  3. Di RHEL 6, NetworkManager dapat mengintervensi agen Azure Linux. Hapus instalan paket ini dengan menjalankan perintah berikut:

    sudo rpm -e --nodeps NetworkManager
    
  4. Buat atau edit file /etc/sysconfig/network, lalu tambahkan teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0, lalu tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Pindahkan (atau hapus) aturan udev untuk menghindari dibuatnya aturan statis bagi antarmuka Ethernet. Aturan tersebut dapat menyebabkan masalah saat Anda mengkloning komputer virtual di Microsoft Azure atau 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
    

Catatan

** Saat menggunakan Accelerated Networking (AN) antarmuka sintetis yang dibuat harus saya konfigurasikan agar tidak dikelola menggunakan aturan udev. Ini akan mencegah NetworkManager menetapkan ip yang sama dengan antarmuka utama.

Untuk menerapkannya:

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. Pastikan bahwa layanan jaringan akan dimulai pada waktu boot dengan menjalankan perintah berikut:

    sudo chkconfig network on
    
  2. Daftarkan langganan Red Hat Anda untuk mengaktifkan penginstalan paket dari repositori RHEL dengan menjalankan perintah berikut:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Paket WALinuxAgent, WALinuxAgent-<version>, telah didorong ke repositori ekstra Red Hat. Aktifkan repositori ekstra dengan menjalankan perintah berikut:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan modifikasi ini, buka /boot/grub/menu.lst di editor teks, dan pastikan kernel default menyertakan parameter berikut:

    console=ttyS0 earlyprintk=ttyS0
    

    Ini juga akan memastikan bahwa semua pesan konsol telah dikirim ke port serial pertama, yang dapat membantu dukungan Azure yang memiliki masalah penelusuran kesalahan.

    Selain itu, sebaiknya Anda menghapus parameter berikut:

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Anda dapat membiarkan opsi crashkernel terkonfigurasi jika ingin. Perhatikan bahwa parameter ini mengurangi jumlah memori yang tersedia di komputer virtual sebanyak 128 MB atau lebih. Konfigurasi ini mungkin bermasalah di komputer virtual dengan ukuran yang lebih kecil.

  5. Pastikan bahwa server shell aman (SSH) terinstal dan terkonfigurasi agar memulai pada waktu boot, yang biasanya ini adalah pengaturan default-nya. Ubah /etc/ssh/sshd_config untuk menyertakan baris berikut:

    ClientAliveInterval 180
    
  6. Instal Azure Linux Agent dengan menjalankan perintah berikut:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    

    Menginstal paket WALinuxAgent akan menghapus paket NetworkManager dan NetworkManager-gnome jika belum dihapus di langkah 3.

  7. Jangan membuat ruang pertukaran pada disk sistem operasi.

    Azure Linux Agent dapat otomatis mengonfigurasi ruang pertukaran menggunakan disk sumber daya lokal yang dipasang pada komputer virtual setelah komputer virtual tersebut disediakan di Azure. Perhatikan bahwa disk sumber daya lokal adalah disk sementara dan mungkin dikosongkan jika komputer virtual dibatalkan penyediaannya. Setelah menginstal Azure Linux Agent pada langkah-langkah sebelumnya, ubah parameter berikut di /etc/waagent.conf secara benar:

    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. Batalkan pendaftaran langganan (jika perlu) dengan menjalankan perintah berikut:

    sudo subscription-manager unregister
    
  9. Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan di Azure:

Catatan

Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
  1. Klik Tindakan>Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.

RHEL 7 menggunakan Hyper-V Manager

  1. Di Hyper-V Manager, pilih komputer virtual.

  2. Klik Sambungkan untuk membuka jendela konsol untuk komputer virtual.

  3. Buat atau edit file /etc/sysconfig/network, lalu tambahkan teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0, lalu tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  5. Pastikan bahwa layanan jaringan akan dimulai pada waktu boot dengan menjalankan perintah berikut:

    sudo systemctl enable network
    
  6. Daftarkan langganan Red Hat Anda untuk mengaktifkan penginstalan paket dari repositori RHEL dengan menjalankan perintah berikut:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan modifikasi ini, buka /etc/default/grub di editor teks dan edit GRUB_CMDLINE_LINUX parameter . Misalnya:

    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"
    

    Ini juga akan memastikan semua pesan konsol dikirimkan ke port serial pertama dan memungkinkan interaksi dengan konsol serial, yang dapat membantu dukungan Azure yang memiliki masalah penelusuran kesalahan. Konfigurasi ini juga menonaktifkan konvensi penamaan RHEL 7 baru untuk NIC.

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Anda dapat membiarkan opsi crashkernel terkonfigurasi jika ingin. Perlu diperhatikan bahwa parameter ini mengurangi jumlah memori yang tersedia di komputer virtual sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran komputer virtual yang lebih kecil.

  8. Setelah Selesai mengedit /etc/default/grub, jalankan perintah berikut untuk membangun kembali konfigurasi grub:

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

    Catatan

    Jika mengunggah komputer virtual yang mengaktifkan UEFI, perintah untuk memperbarui grub adalah grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Pastikan server SSH diinstal dan dikonfigurasi agar memulai pada waktu boot, yang biasanya ini adalah defaultnya. Ubah /etc/ssh/sshd_config untuk menyertakan baris berikut:

    ClientAliveInterval 180
    
  10. Paket WALinuxAgent, WALinuxAgent-<version>, telah didorong ke repositori ekstra Red Hat. Aktifkan repositori ekstra dengan menjalankan perintah berikut:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Instal Agen Azure Linux, cloud-init, dan utilitas lain yang diperlukan dengan menjalankan perintah berikut:

    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. Konfigurasikan cloud-init untuk menangani penyediaan:

    1. Konfigurasikan waagent untuk 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
    

    Catatan

    Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, atur Provisioning.Agent=disabled pada /etc/waagent.conf konfigurasi.

    1. Konfigurasikan pemasangan:
    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. Konfigurasikan datasource 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. Jika dikonfigurasikan, hapus swapfile yang ada:
    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. Konfigurasikan pengelogan 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. Alihkan konfigurasi. Jangan membuat ruang pertukaran pada disk sistem operasi.

    Sebelumnya, Azure Linux Agent digunakan untuk mengonfigurasi ruang pertukaran secara otomatis dengan menggunakan disk sumber daya lokal yang dilampirkan ke komputer virtual setelah komputer virtual disediakan di Azure. Namun, ini sekarang ditangani oleh cloud-init, Anda tidak boleh menggunakan Agen Linux untuk memformat disk sumber daya membuat file pertukaran, memodifikasi parameter berikut dengan /etc/waagent.conf tepat:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Jika Anda ingin memasang, memformat, dan membuat pertukaran, Anda dapat:

    • Teruskan sebagai konfigurasi cloud-init setiap kali Anda membuat mesin virtual melalui customdata. Ini adalah metode yang direkomendasikan.

    • Gunakan petunjuk cloud-init yang dimasukkan ke dalam gambar yang akan melakukan hal ini setiap kali mesin virtual dibuat.

      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. Jika Anda ingin membatalkan pendaftaran langganan, jalankan perintah berikut:

    sudo subscription-manager unregister
    
  15. Batalkan penyediaan

    Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan di Azure:

    Perhatian

    Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi. Menjalankan perintah waagent -force -deprovision+user akan merender komputer sumber yang tidak dapat digunakan, langkah ini hanya dimaksudkan untuk membuat gambar umum.

    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. Klik Tindakan>Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.

RHEL 8 menggunakan Hyper-V Manager

  1. Di Hyper-V Manager, pilih komputer virtual.

  2. Klik Sambungkan untuk membuka jendela konsol untuk komputer virtual.

  3. Pastikan layanan Network Manager akan dimulai pada waktu boot dengan menjalankan perintah berikut:

    sudo systemctl enable NetworkManager.service
    
  4. Konfigurasikan antarmuka jaringan untuk otomatis memulai saat boot dan gunakan DHCP:

    sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
    
  5. Daftarkan langganan Red Hat Anda untuk mengaktifkan penginstalan paket dari repositori RHEL dengan menjalankan perintah berikut:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  6. Ubah baris boot kernel dalam konfigurasi grub untuk menyertakan parameter kernel tambahan untuk Azure dan mengaktifkan konsol serial.

    1. Hapus parameter GRUB saat ini:
    sudo grub2-editenv - unset kernelopts
    
    1. Edit /etc/default/grub di editor teks, dan tambahkan parameter berikut:
    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"
    

    Ini juga akan memastikan semua pesan konsol dikirimkan ke port serial pertama dan memungkinkan interaksi dengan konsol serial, yang dapat membantu dukungan Azure yang memiliki masalah penelusuran kesalahan. Konfigurasi juga menonaktifkan konvensi penamaan baru untuk NIC.

    1. Selain itu, sebaiknya Anda menghapus parameter berikut:
    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Anda dapat membiarkan opsi crashkernel terkonfigurasi jika ingin. Perlu diperhatikan bahwa parameter ini mengurangi jumlah memori yang tersedia di komputer virtual sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran komputer virtual yang lebih kecil.

  7. Setelah Anda selesai mengedit /etc/default/grub, jalankan perintah berikut untuk membuat ulang konfigurasi grub:

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

    Dan untuk komputer virtual yang mengaktifkan UEFI, jalankan perintah berikut:

    sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  8. Pastikan server SSH diinstal dan dikonfigurasi agar memulai pada waktu boot, yang biasanya ini adalah defaultnya. Ubah /etc/ssh/sshd_config untuk menyertakan baris berikut:

    ClientAliveInterval 180
    
  9. Instal Agen Azure Linux, cloud-init, dan utilitas lain yang diperlukan dengan menjalankan perintah berikut:

    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. Konfigurasikan cloud-init untuk menangani penyediaan:

    1. Konfigurasikan waagent untuk 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
    

    Catatan

    Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, atur Provisioning.Agent=disabled pada /etc/waagent.conf konfigurasi.

    1. Konfigurasikan pemasangan:
    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. Konfigurasikan datasource 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. Jika dikonfigurasikan, hapus swapfile yang ada:
    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. Konfigurasikan pengelogan 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. Konfigurasi pertukaran Jangan membuat ruang pertukaran pada disk sistem operasi.

    Sebelumnya, Azure Linux Agent digunakan untuk mengonfigurasi ruang pertukaran secara otomatis dengan menggunakan disk sumber daya lokal yang dilampirkan ke komputer virtual setelah komputer virtual disediakan di Azure. Namun, ini sekarang ditangani oleh cloud-init, Anda tidak boleh menggunakan Agen Linux untuk memformat disk sumber daya membuat file pertukaran, memodifikasi parameter berikut dengan /etc/waagent.conf tepat:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    
    • Teruskan sebagai konfigurasi cloud-init setiap kali Anda membuat mesin virtual melalui customdata. Ini adalah metode yang direkomendasikan.

    • Gunakan petunjuk cloud-init yang dimasukkan ke dalam gambar yang akan melakukan hal ini setiap kali mesin virtual dibuat.

      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. Jika Anda ingin membatalkan pendaftaran langganan, jalankan perintah berikut:

    sudo subscription-manager unregister
    
  13. Batalkan penyediaan

    Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan di 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
    

    Perhatian

    Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi. Menjalankan perintah waagent -force -deprovision+user akan merender komputer sumber yang tidak dapat digunakan, langkah ini hanya dimaksudkan untuk membuat gambar umum.

  14. Klik Tindakan>Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.

KVM

Bagian ini menunjukkan Anda cara menggunakan KVM untuk menyiapkan distro RHEL 6 atau RHEL 7 untuk mengunggah ke Azure.

RHEL 6 menggunakan KVM

Penting

Mulai tanggal 30 November 2020, Red Hat Enterprise Linux 6 akan mencapai fase end of maintenance. Fase pemeliharaan diikuti oleh Fase Umur Diperpanjang. Saat Red Hat Enterprise Linux 6 keluar dari Fase Penuh/Pemeliharaan, sebaiknya tingkatkan ke Red Hat Enterprise Linux 7, 8, atau 9. Jika pelanggan harus tetap berada di Red Hat Enterprise Linux 6, sebaiknya tambahkan Add-On Red Hat Enterprise Linux Extended Life Cycle Support (ELS).

  1. Unduh gambar KVM RHEL 6 dari situs web Red Hat.

  2. Tetapkan kata sandi akar.

    Hasilkan kata sandi yang dienkripsi, lalu salin output perintah:

    sudo openssl passwd -1 changeme
    

    Tetapkan kata sandi akar dengan guestfish:

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

    Ubah bidang kedua pengguna root dari "!!" ke kata sandi terenkripsi.

  3. Buat komputer virtual di KVM dari gambar qcow2. Tetapkan jenis disk ke qcow2, lalu tetapkan model perangkat antarmuka jaringan virtual ke virtio. Lalu, mulai komputer virtual, dan masuk sebagai akar.

  4. Buat atau edit file /etc/sysconfig/network, lalu tambahkan teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0, lalu tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Pindahkan (atau hapus) aturan udev untuk menghindari dibuatnya aturan statis bagi antarmuka Ethernet. Aturan ini menimbulkan masalah saat Anda mengkloning komputer virtual di Azure atau 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
    

Catatan

** Saat menggunakan Accelerated Networking (AN) antarmuka sintetis yang dibuat harus saya konfigurasikan agar tidak dikelola menggunakan aturan udev. Ini akan mencegah NetworkManager menetapkan ip yang sama dengan antarmuka utama.

Untuk menerapkannya:

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. Pastikan bahwa layanan jaringan akan dimulai pada waktu boot dengan menjalankan perintah berikut:

    sudo chkconfig network on
    
  2. Daftarkan langganan Red Hat Anda untuk mengaktifkan penginstalan paket dari repositori RHEL dengan menjalankan perintah berikut:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan konfigurasi ini, buka /boot/grub/menu.lst di editor teks, dan pastikan kernel default menyertakan parameter berikut:

    console=ttyS0 earlyprintk=ttyS0
    

    Ini juga akan memastikan bahwa semua pesan konsol telah dikirim ke port serial pertama, yang dapat membantu dukungan Azure yang memiliki masalah penelusuran kesalahan.

    Selain itu, sebaiknya hapus parameter berikut:

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Anda dapat membiarkan opsi crashkernel terkonfigurasi jika ingin. Perlu diperhatikan bahwa parameter ini mengurangi jumlah memori yang tersedia di komputer virtual sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran komputer virtual yang lebih kecil.

  4. Tambahkan modul Hyper-V ke initramfs:

    Edit /etc/dracut.conf, lalu tambahkan konten berikut:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Buat ulang initramfs:

    sudo dracut -f -v
    
  5. Hapus instalan cloud-init:

    sudo yum remove cloud-init
    
  6. Pastikan server SSH diinstal dan dikonfigurasi untuk memulai pada saat boot:

    sudo chkconfig sshd on
    

    Ubah /etc/ssh/sshd_config untuk menyertakan baris berikut:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  7. Paket WALinuxAgent, WALinuxAgent-<version>, telah didorong ke repositori ekstra Red Hat. Aktifkan repositori ekstra dengan menjalankan perintah berikut:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  8. Instal Azure Linux Agent dengan menjalankan perintah berikut:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  9. Azure Linux Agent dapat otomatis mengonfigurasi ruang pertukaran menggunakan disk sumber daya lokal yang dipasang pada komputer virtual setelah komputer virtual tersebut disediakan di Azure. Perhatikan bahwa disk sumber daya lokal adalah disk sementara, dan mungkin dikosongkan jika komputer virtual dibatalkan penyediaanya. Setelah Anda menginstal Azure Linux Agent pada langkah sebelumnya, ubah parameter berikut di /etc/waagent.conf dengan tepat:

    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. Batalkan pendaftaran langganan (jika perlu) dengan menjalankan perintah berikut:

    sudo subscription-manager unregister
    
  11. Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan di Azure:

    Catatan

    Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi

    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. Matikan komputer virtual di KVM.

  13. Konversikan gambar qcow2 ke format VHD.

    Catatan

    Ada bug yang diketahui dalam versi qemu-img >=2.2.1 yang menghasilkan VHD yang tidak diformat dengan benar. Masalah telah diperbaiki di QEMU 2.6. Sebaiknya gunakan qemu-img 2.2.0 atau lebih rendah, atau perbarui ke 2.6 atau lebih tinggi. Referensi: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konversikan terlebih dahulu gambar ke format mentah:

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

    Pastikan ukuran gambar mentah setara dengan 1 MB. Jika tidak, bulatkan ukurannya agar setara dengan 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
    

    Konversikan disk mentah ke VHD berukuran tetap:

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

    Atau, dengan qemu versi 2.6+ sertakan opsi 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 menggunakan KVM

  1. Unduh gambar KVM RHEL 7 dari situs web Red Hat. Prosedur ini menggunakan RHEL 7 sebagai contoh.

  2. Tetapkan kata sandi akar.

    Hasilkan kata sandi yang dienkripsi, lalu salin output perintah:

    sudo openssl passwd -1 changeme
    

    Tetapkan kata sandi akar dengan guestfish:

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

    Ubah bidang kedua pengguna root dari "!!" ke kata sandi terenkripsi.

  3. Buat komputer virtual di KVM dari gambar qcow2. Tetapkan jenis disk ke qcow2, lalu tetapkan model perangkat antarmuka jaringan virtual ke virtio. Lalu, mulai komputer virtual, dan masuk sebagai akar.

  4. Buat atau edit file /etc/sysconfig/network, lalu tambahkan teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0, lalu tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  6. Pastikan bahwa layanan jaringan akan dimulai pada waktu boot dengan menjalankan perintah berikut:

    sudo systemctl enable network
    
  7. Daftarkan langganan Red Hat Anda untuk mengaktifkan penginstalan paket dari repositori RHEL dengan menjalankan perintah berikut:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  8. Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan konfigurasi ini, buka /etc/default/grub di editor teks dan edit GRUB_CMDLINE_LINUX parameter . Misalnya:

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

    Perintah ini juga memastikan bahwa semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure yang memiliki masalah penelusuran kesalahan. Perintah juga menonaktifkan konvensi penamaan RHEL 7 baru untuk NIC. Selain itu, sebaiknya hapus parameter berikut:

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Anda dapat membiarkan opsi crashkernel terkonfigurasi jika ingin. Perlu diperhatikan bahwa parameter ini mengurangi jumlah memori yang tersedia di komputer virtual sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran komputer virtual yang lebih kecil.

  9. Setelah Anda selesai mengedit /etc/default/grub, jalankan perintah berikut untuk membuat ulang konfigurasi grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Tambahkan modul Hyper-V ke initramfs.

    Edit /etc/dracut.conf dan tambahkan konten:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Buat ulang initramfs:

    sudo dracut -f -v
    
  11. Hapus instalan cloud-init:

    sudo yum remove cloud-init
    
  12. Pastikan server SSH diinstal dan dikonfigurasi untuk memulai pada saat boot:

    sudo systemctl enable sshd
    

    Ubah /etc/ssh/sshd_config untuk menyertakan baris berikut:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. Paket WALinuxAgent, WALinuxAgent-<version>, telah didorong ke repositori ekstra Red Hat. Aktifkan repositori ekstra dengan menjalankan perintah berikut:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  14. Instal Azure Linux Agent dengan menjalankan perintah berikut:

    sudo yum install WALinuxAgent
    

    Aktifkan layanan waagent:

    sudo systemctl enable waagent.service
    
  15. Menginstal cloud-init Ikuti langkah-langkah di 'Menyiapkan komputer virtual RHEL 7 dari Hyper-V Manager', langkah 12, 'Instal cloud-init untuk menangani penyediaan.'

  16. Konfigurasi swap

    Jangan membuat ruang pertukaran pada disk sistem operasi. Ikuti langkah-langkah di 'Menyiapkan komputer virtual RHEL 7 dari Hyper-V Manager', langkah 13, 'Alihkan konfigurasi'

  17. Batalkan pendaftaran langganan (jika perlu) dengan menjalankan perintah berikut:

    sudo subscription-manager unregister
    
  18. Batalkan penyediaan

    Ikuti langkah-langkah di 'Menyiapkan komputer virtual RHEL 7 dari Hyper-V Manager', langkah 15, 'Batalkan penyediaan'

  19. Matikan komputer virtual di KVM.

  20. Konversikan gambar qcow2 ke format VHD.

    Catatan

    Ada bug yang diketahui dalam versi qemu-img >=2.2.1 yang menghasilkan VHD yang tidak diformat dengan benar. Masalah telah diperbaiki di QEMU 2.6. Sebaiknya gunakan qemu-img 2.2.0 atau lebih rendah, atau perbarui ke 2.6 atau lebih tinggi. Referensi: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konversikan terlebih dahulu gambar ke format mentah:

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

    Pastikan ukuran gambar mentah setara dengan 1 MB. Jika tidak, bulatkan ukurannya agar setara dengan 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
    

    Konversikan disk mentah ke VHD berukuran tetap:

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

    Atau, dengan qemu versi 2.6+ sertakan opsi force_size:

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

VMware

Bagian ini menunjukkan cara menyiapkan distro RHEL 6 atau RHEL 7 dari VMware.

Prasyarat

Bagian ini mengasumsikan bahwa Anda telah menginstal komputer virtual RHEL di VMware. Untuk detail tentang cara menginstal sistem operasi di VMware, lihat Panduan Penginstalan Sistem Operasi Tamu VMware.

  • Saat menginstal sistem operasi Linux, sebaiknya gunakan partisi standar daripada LVM, yang sering kali merupakan default untuk banyak penginstalan. Ini akan menghindari konflik nama LVM dengan komputer virtual kloning, terutama jika disk sistem operasi perlu dipasang ke komputer virtual lain untuk pemecahan masalah. LVM atau RAID dapat digunakan pada disk data jika diinginkan.
  • Jangan mengonfigurasi partisi swap pada disk sistem operasi. Anda dapat mengonfigurasi agen Linux untuk membuat file pertukaran pada disk sumber daya sementara. Anda dapat menemukan informasi selengkapnya tentang ini dalam langkah-langkah berikut.
  • Saat Anda membuat hard disk virtual, pilih Simpan disk virtual sebagai satu file.

RHEL 6 menggunakan VMware

Penting

Mulai tanggal 30 November 2020, Red Hat Enterprise Linux 6 akan mencapai fase end of maintenance. Fase pemeliharaan diikuti oleh Fase Umur Diperpanjang. Saat Red Hat Enterprise Linux 6 keluar dari Fase Penuh/Pemeliharaan, sangat disarankan untuk meningkatkan ke Red Hat Enterprise Linux 7 atau 8 atau 9. Jika pelanggan harus tetap menggunakan Red Hat Enterprise Linux 6, disarankan untuk menambahkan Add-On Red Hat Enterprise Linux Extended Life Cycle Support (ELS).

  1. Di RHEL 6, NetworkManager dapat mengintervensi agen Azure Linux. Hapus instalan paket ini dengan menjalankan perintah berikut:

    sudo rpm -e --nodeps NetworkManager
    
  2. Buat file bernama network di direktori /etc/sysconfig/ yang berisi teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  3. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0, lalu tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  4. Pindahkan (atau hapus) aturan udev untuk menghindari dibuatnya aturan statis bagi antarmuka Ethernet. Aturan ini menimbulkan masalah saat Anda mengkloning komputer virtual di Azure atau 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
    

Catatan

** Saat menggunakan Accelerated Networking (AN) antarmuka sintetis yang dibuat harus saya konfigurasikan agar tidak dikelola menggunakan aturan udev. Ini akan mencegah NetworkManager menetapkan ip yang sama dengan antarmuka utama.

Untuk menerapkannya:

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. Pastikan bahwa layanan jaringan akan dimulai pada waktu boot dengan menjalankan perintah berikut:

    sudo chkconfig network on
    
  2. Daftarkan langganan Red Hat Anda untuk mengaktifkan penginstalan paket dari repositori RHEL dengan menjalankan perintah berikut:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Paket WALinuxAgent, WALinuxAgent-<version>, telah didorong ke repositori ekstra Red Hat. Aktifkan repositori ekstra dengan menjalankan perintah berikut:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan ini, buka /etc/default/grub di editor teks dan edit GRUB_CMDLINE_LINUX parameter . Misalnya:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
    

    Ini juga akan memastikan bahwa semua pesan konsol telah dikirim ke port serial pertama, yang dapat membantu dukungan Azure yang memiliki masalah penelusuran kesalahan. Selain itu, sebaiknya hapus parameter berikut:

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Anda dapat membiarkan opsi crashkernel terkonfigurasi jika ingin. Perlu diperhatikan bahwa parameter ini mengurangi jumlah memori yang tersedia di komputer virtual sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran komputer virtual yang lebih kecil.

  5. Tambahkan modul Hyper-V ke initramfs:

    Edit /etc/dracut.conf, lalu tambahkan konten berikut:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Buat ulang initramfs:

    sudo dracut -f -v
    
  6. Pastikan server SSH diinstal dan dikonfigurasi agar memulai pada waktu boot, yang biasanya ini adalah defaultnya. Ubah /etc/ssh/sshd_config untuk menyertakan baris berikut:

    ClientAliveInterval 180
    
  7. Instal Azure Linux Agent dengan menjalankan perintah berikut:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  8. Jangan membuat ruang pertukaran pada disk sistem operasi.

    Azure Linux Agent dapat otomatis mengonfigurasi ruang pertukaran menggunakan disk sumber daya lokal yang dipasang pada komputer virtual setelah komputer virtual tersebut disediakan di Azure. Perhatikan bahwa disk sumber daya lokal adalah disk sementara, dan mungkin dikosongkan jika komputer virtual dibatalkan penyediaanya. Setelah Anda menginstal Azure Linux Agent pada langkah sebelumnya, ubah parameter berikut di /etc/waagent.conf dengan tepat:

    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. Batalkan pendaftaran langganan (jika perlu) dengan menjalankan perintah berikut:

    sudo subscription-manager unregister
    
  10. Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan di Azure:

    Catatan

    Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.

    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. Matikan komputer virtual, dan konversikan file VMDK menjadi file .vhd.

    Catatan

    Ada bug yang diketahui dalam versi qemu-img >=2.2.1 yang menghasilkan VHD yang tidak diformat dengan benar. Masalah telah diperbaiki di QEMU 2.6. Sebaiknya gunakan qemu-img 2.2.0 atau lebih rendah, atau perbarui ke 2.6 atau lebih tinggi. Referensi: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konversikan terlebih dahulu gambar ke format mentah:

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

    Pastikan ukuran gambar mentah setara dengan 1 MB. Jika tidak, bulatkan ukurannya agar setara dengan 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
    

    Konversikan disk mentah ke VHD berukuran tetap:

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

    Atau, dengan qemu versi 2.6+ sertakan opsi 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 menggunakan VMware

  1. Buat atau edit file /etc/sysconfig/network, lalu tambahkan teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  2. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0, lalu tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  3. Pastikan bahwa layanan jaringan akan dimulai pada waktu boot dengan menjalankan perintah berikut:

    sudo systemctl enable network
    
  4. Daftarkan langganan Red Hat Anda untuk mengaktifkan penginstalan paket dari repositori RHEL dengan menjalankan perintah berikut:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan modifikasi ini, buka /etc/default/grub di editor teks dan edit GRUB_CMDLINE_LINUX parameter . Misalnya:

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

    Konfigurasi ini juga memastikan bahwa semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure yang memiliki masalah penelusuran kesalahan. Ini juga menonaktifkan konvensi penamaan RHEL 7 baru untuk NIC. Selain itu, sebaiknya hapus parameter berikut:

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Anda dapat membiarkan opsi crashkernel terkonfigurasi jika ingin. Perlu diperhatikan bahwa parameter ini mengurangi jumlah memori yang tersedia di komputer virtual sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran komputer virtual yang lebih kecil.

  6. Setelah Anda selesai mengedit /etc/default/grub, jalankan perintah berikut untuk membuat ulang konfigurasi grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. Tambahkan modul Hyper-V ke initramfs.

    Edit /etc/dracut.conf, tambahkan konten:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Buat ulang initramfs:

    sudo dracut -f -v
    
  8. Pastikan server SSH diinstal dan dikonfigurasi untuk memulai pada saat boot. Pengaturan ini biasanya default. Ubah /etc/ssh/sshd_config untuk menyertakan baris berikut:

    ClientAliveInterval 180
    
  9. Paket WALinuxAgent, WALinuxAgent-<version>, telah didorong ke repositori ekstra Red Hat. Aktifkan repositori ekstra dengan menjalankan perintah berikut:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  10. Instal Azure Linux Agent dengan menjalankan perintah berikut:

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

    Ikuti langkah-langkah di 'Menyiapkan komputer virtual RHEL 7 dari Hyper-V Manager', langkah 12, 'Instal cloud-init untuk menangani penyediaan.'

  12. Konfigurasi swap

    Jangan membuat ruang pertukaran pada disk sistem operasi. Ikuti langkah-langkah di 'Menyiapkan komputer virtual RHEL 7 dari Hyper-V Manager', langkah 13, 'Alihkan konfigurasi'

  13. Jika Anda ingin membatalkan pendaftaran langganan, jalankan perintah berikut:

    sudo subscription-manager unregister
    
  14. Batalkan penyediaan

    Ikuti langkah-langkah di 'Menyiapkan komputer virtual RHEL 7 dari Hyper-V Manager', langkah 15, 'Batalkan penyediaan'

  15. Matikan komputer virtual dan konversi file VMDK ke format VHD.

    Catatan

    Ada bug yang diketahui dalam versi qemu-img >=2.2.1 yang menghasilkan VHD yang tidak diformat dengan benar. Masalah telah diperbaiki di QEMU 2.6. Sebaiknya gunakan qemu-img 2.2.0 atau lebih rendah, atau perbarui ke 2.6 atau lebih tinggi. Referensi: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konversikan terlebih dahulu gambar ke format mentah:

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

    Pastikan ukuran gambar mentah setara dengan 1 MB. Jika tidak, bulatkan ukurannya agar setara dengan 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
    

    Konversikan disk mentah ke VHD berukuran tetap:

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

    Atau, dengan qemu versi 2.6+ sertakan opsi force_size:

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

File kickstart

Bagian ini menunjukkan cara menyiapkan distro RHEL 7 dari ISO menggunakan file kickstart.

RHEL 7 dari file kickstart

  1. Buat file kickstart yang menyertakan konten berikut dan simpan file. Untuk detail tentang penginstalan kickstart, lihat Panduan Penginstalan 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. Tempatkan file kickstart di lokasi yang dapat diakses sistem penginstalan.

  3. Di Manajer Hyper-V, buat komputer virtual baru. Di halaman Sambungkan Hard Disk Virtual, pilih Tambahkan hard disk virtual nanti, lalu selesaikan Wizard Komputer Virtual Baru.

  4. Buka pengaturan komputer virtual:

    1. Tambahkan hard disk virtual baru ke komputer virtual. Pastikan untuk memilih Format VHD dan Ukuran Tetap.

    2. Masukkan ISO penginstalan ke drive DVD.

    3. Atur BIOS agar memulai boot dari CD.

  5. Mulai komputer virtual. Saat panduan penginstalan muncul, tekan Tab untuk mengonfigurasi opsi boot.

  6. Masukkan inst.ks=<the location of the kickstart file> pada akhir opsi boot, lalu tekan Enter.

  7. Tunggu hingga proses penginstalan selesai. Jika sudah selesai, komputer virtual akan dimatikan secara otomatis. VHD Linux Anda sekarang siap untuk diunggah ke Azure.

Masalah yang diketahui

Driver Hyper-V tidak dapat disertakan dalam disk RAM awal saat menggunakan hypervisor non-Hyper-V

Dalam beberapa kasus, penginstal Linux mungkin tidak menyertakan driver untuk Hyper-V di disk RAM awal (initrd atau initramfs) kecuali jika Linux mendeteksi bahwa driver tersebut berjalan di lingkungan Hyper-V.

Jika menggunakan sistem virtualisasi yang berbeda (yaitu VirtualBox, Xen, dll.) untuk menyiapkan citra Linux, Anda mungkin perlu membuat ulang initrd untuk memastikan bahwa setidaknya modul kernel hv_vmbus dan hv_storvsc tersedia di disk RAM awal. Masalah ini sering ditemui pada sistem yang berbasis distribusi upstream Red Hat.

Untuk mengatasi masalah ini, tambahkan modul Hyper-V ke initramfs dan buat ulang initramfs:

Edit /etc/dracut.conf, lalu tambahkan konten berikut:

add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "

Buat ulang initramfs:

sudo dracut -f -v

Untuk detail selengkapnya, lihat informasi tentang membuat ulang initramfs.

Langkah berikutnya

  • Sekarang Anda siap menggunakan hard disk virtual Red Hat Enterprise Linux untuk membuat komputer virtual baru di Azure. Jika ini pertama kalinya Anda mengunggah file .vhd ke Azure, lihat Buat komputer virtual Linux dari disk kustom.
  • Untuk detail selengkapnya tentang hypervisor yang disertifikasi untuk menjalankan Red Hat Enterprise Linux, lihat situs web Red Hat.
  • Untuk mempelajari selengkapnya tentang menggunakan citra RHEL BYOS siap produksi, buka halaman dokumentasi untuk BYOS.