Rechercher

Ce contenu n'est pas disponible dans la langue sélectionnée.

Chapter 6. Configuring bare-metal nodes to enable the creation of bare-metal instances from a bootable volume

download PDF
Important

This feature is deprecated in Red Hat OpenStack Platform 17.1. Bug fixes and support are provided in RHOSP 17.1, but no new feature enhancements will be made.

You can create volumes in the Block Storage service (cinder) and connect these volumes to bare-metal instances that you create with the Bare Metal Provisioning service (ironic).

To enable your cloud users to create bare-metal instances from bootable volumes, complete the following tasks:

  1. Configure each bare-metal node to enable the launching of bare-metal instances from a bootable volume.
  2. Configure iSCSI kernel parameters on the boot disk.

6.1. Prerequisites

  • The Bare Metal Provisioning service (ironic) connects bare-metal nodes to block storage volumes through an iSCSI interface. Therefore, the overcloud must be deployed with an iSCSI backend for the Block Storage service (cinder). To enable an iSCSI backend for the Block Storage service, set the CinderEnableIscsiBackend parameter to true and deploy the overcloud.

    Note

    You cannot use the Block Storage volume boot feature with a Red Hat Ceph Storage backend.

6.2. Configuring nodes to create bare-metal instances from a bootable volume

You must configure each bare-metal node to enable it to provide the ability to launch bare-metal instances from a bootable volume.

Procedure

  1. Source your overcloud credentials file:

    $ source ~/<credentials_file>
    • Replace <credentials_file> with the name of your credentials file, for example, overcloudrc.
  2. Set the iscsi_boot capability to true for each bare-metal node:

    $ openstack baremetal node set --property capabilities=iscsi_boot:true <node_uuid>
    • Replace <node_uuid> with the ID of the bare-metal node.
  3. Set the storage-interface to cinder for each bare-metal node:

    $ openstack baremetal node set --storage-interface cinder <node_uuid>
  4. Create an iSCSI connector for the node:

    $ openstack baremetal volume connector create --node <node_uuid> \
     --type iqn --connector-id <connector_id>
    • Replace <connector_id> with a unique ID for each node, for example, iqn.2010-10.org.openstack.node<NUM>, where <NUM> is an incremented number for each node.

6.3. Configuring iSCSI kernel parameters on the boot disk

You must configure the instance image to enable iSCSI booting in the kernel.

Procedure

  1. Log in to the undercloud host as the stack user.
  2. Source the stackrc undercloud credentials file:

    $ source ~/stackrc
  3. Download a Red Hat Enterprise Linux KVM image in QCOW2 format from the Red Hat Enterprise Linux Product Software download page.
  4. Copy the image to the /home/stack/ directory on the undercloud.
  5. Mount the QCOW2 image and access it as the root user:

    1. Load the nbd kernel module:

      $ sudo modprobe nbd
    2. Connect the QCOW image as /dev/nbd0:

      $ sudo qemu-nbd --connect=/dev/nbd0 <image>
    3. Check the partitions on the NBD:

      $ sudo fdisk /dev/nbd0 -l

      New Red Hat Enterprise Linux QCOW2 images contain only one partition, which is usually named /dev/nbd0p1 on the NBD.

    4. Create a mount point for the image:

      $ mkdir /tmp/mountpoint
    5. Mount the image:

      $ sudo mount /dev/nbd0p1 /tmp/mountpoint/
    6. Mount your dev directory so that the image has access to device information on the host:

      $ sudo mount -o bind /dev /tmp/mountpoint/dev
    7. Change the root directory to the mount point:

      $ sudo chroot /tmp/mountpoint /bin/bash
  6. Configure iSCSI on the image:

    Note

    Some commands in this step might report the following error:

    lscpu: cannot open /proc/cpuinfo: No such file or directory

    This error is not critical and you can ignore the error.

    1. Move the resolv.conf file to a temporary location:

      # mv /etc/resolv.conf /etc/resolv.conf.bak
    2. Create a temporary resolv.conf file to resolve DNS requests for the Red Hat Content Delivery Network. This example uses 8.8.8.8 for the nameserver:

      # echo "nameserver 8.8.8.8" > /etc/resolv.conf
    3. Register the mounted image to the Red Hat Content Delivery Network:

      # subscription-manager register

      Enter your user name and password when the command prompts you.

    4. Attach a subscription that contains Red Hat Enterprise Linux:

      # subscription-manager list --all --available
      # subscription-manager attach --pool <POOLID>

      Substitute <POOLID> with the pool ID of the subscription.

    5. Disable the default repositories:

      # subscription-manager repos --disable "*"
    6. Enable the Red Hat Enterprise Linux repository:

      • Red Hat Enterprise Linux 7:

        # subscription-manager repos --enable "rhel-7-server-rpms"
      • Red Hat Enterprise Linux 8:

        # subscription-manager repos --enable "rhel-8-for-x86_64-baseos-eus-rpms"
    7. Install the iscsi-initiator-utils package:

      # yum install -y iscsi-initiator-utils
    8. Unregister the mounted image:

      # subscription-manager unregister
    9. Restore the original resolv.conf file:

      # mv /etc/resolv.conf.bak /etc/resolv.conf
    10. Check the kernel version on the mounted image:

      # rpm -qa kernel

      For example, if the output is kernel-3.10.0-1062.el7.x86_64, the kernel version is 3.10.0-1062.el7.x86_64. Note this kernel version for the next step.

      Note

      New Red Hat Enterprise Linux QCOW2 images have only one kernel version installed. If more than one kernel version is installed, use the latest one.

    11. Add the network and iscsi dracut modules to the initramfs image:

      # dracut --force --add "network iscsi" /boot/initramfs-<KERNELVERSION>.img <KERNELVERSION>

      Replace <KERNELVERSION> with the version number that you obtained from rpm -qa kernel. The following example uses 3.10.0-1062.el7.x86_64 as the kernel version:

      # dracut --force --add "network iscsi" /boot/initramfs-3.10.0-1062.el7.x86_64.img 3.10.0-1062.el7.x86_64
    12. Exit from the mounted image back to your host operating system:

      # exit
  7. Unmount the image:

    1. Unmount the dev directory from the temporary mount point:

      $ sudo umount /tmp/mountpoint/dev
    2. Unmount the image from the mount point:

      $ sudo umount /tmp/mountpoint
    3. Disconnect the QCOW2 image from /dev/nbd0/:

      $ sudo qemu-nbd --disconnect /dev/nbd0
  8. Rebuild the grub menu configuration on the image:

    1. Install the libguestfs-tools package:

      $ sudo yum -y install libguestfs-tools
      Important

      If you install the libguestfs-tools package on the undercloud, disable iscsid.socket to avoid port conflicts with the tripleo_iscsid service on the undercloud:

      $ sudo systemctl disable --now iscsid.socket
    2. Set the libguestfs backend to use QEMU directly:

      $ export LIBGUESTFS_BACKEND=direct
    3. Update the grub configuration on the image and set the rd.iscsi.firmware=1 kernel parameter on the boot disk:

      $ guestfish -a /tmp/images/{{ dib_image }} -m /dev/sda3 sh "mount /dev/sda2 /boot/efi && rm /boot/grub2/grubenv && /sbin/grub2-mkconfig -o /boot/grub2/grub.cfg && cp /boot/grub2/grub.cfg /boot/efi/EFI/redhat/grub.cfg && grubby --update-kernel=ALL --args=\"rd.iscsi.firmware=1\" && cp /boot/grub2/grubenv /boot/efi/EFI/redhat/grubenv && echo Success"
  9. Upload the iSCSI-enabled image to the Image service (glance):

    $ openstack image create --disk-format qcow2 --container-format bare \
     --file <image> <image_name>
    • Replace <image> with the name of the iSCSI-enabled image, for example, rhel-server-7.7-x86_64-kvm.qcow2.
    • Replace <image_ref> with a name to use to reference the image, for example, rhel-server-7.7-iscsi.

6.4. Creating a bare-metal instance from a bootable volume

To verify that the bare-metal node can host bare-metal instances created from a bootable volume, create the bootable volume and launch an instance.

Procedure

  1. Source your overcloud credentials file:

    $ source ~/<credentials_file>
    • Replace <credentials_file> with the name of your credentials file, for example, overcloudrc.
  2. Create a volume from the iSCSI-enabled instance image:

    $ openstack volume create --size 10 --image <image_ref> --bootable myBootableVolume
    • Replace <image_ref> with the name or ID of the image to write to the volume, for example, rhel-server-7.7-iscsi.
  3. Create a bare-metal instance that uses the boot volume:

    $ openstack server create --flavor baremetal --volume myBootableVolume --key default myBareMetalInstance
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.