Add iscsi-boot element for CentOS images

This patch adds an element that handles the configuration for
creating a disk capable of being a remote root filesystem through
iSCSI on CentOS images.

Tested on Fujitsu Server and boot with BIOS and UEFI mode successfully.
- Tested Boot-From-Volume + EFI for centos7 with following elements:
  "centos7 vm devuser cloud-init-datasources dhcp-all-interfaces
   iscsi-boot dracut-regenerate block-device-efi"

Co-authored-By: Nguyen Van Trung <trungnv@vn.fujitsu.com>

Change-Id: Ia1f23d722dced6f254fd7aee86abe8066a72fa42
This commit is contained in:
Hoang Trung Hieu 2018-02-09 15:05:33 +07:00 committed by Nguyen Van Trung
parent e210f79500
commit a4648872ba
3 changed files with 39 additions and 5 deletions

View File

@ -3,11 +3,18 @@ iscsi-boot
==========
Handles configuration for the disk to be capable of serving as
a remote root filesystem through iSCSI. Currently, this element
only configures Ubuntu/Debian images.
can configure Ubuntu/Debian images and CentOS7 images.
It performs the following actions:
For Ubuntu/Debian images:
* Installs the ``open-iscsi`` package.
* Creates the ``etc/iscsi/iscsi.initramfs`` configuration file and sets
``ISCSI_AUTO=true`` within it.
* Updates the initramfs to apply the changes.
For CentOS7 images:
* Required ``dracut-regenerate`` element when performs ``disk-image-create``.
* Updates ``network`` and ``iscsi`` into ``dracut-regenerate`` during
pre-installs.
* Updates ``GRUB_CMDLINE_LINUX_DEFAULT`` into ``/etc/default/grub``.

View File

@ -0,0 +1,14 @@
if [[ $DISTRO_NAME = "centos7" ]]; then
eval declare -A image_elements=($(get_image_element_array))
found=0
for i in "${!image_elements[@]}"; do
[ "$i" = "dracut-regenerate" ] && found=1
done
[ "$found" = 0 ] && echo "The dracut-regenerate element is required!" && exit 1
DIB_DRACUT_ENABLED_MODULES+="
- name: network
- name: iscsi
"
export DIB_DRACUT_ENABLED_MODULES
fi

View File

@ -0,0 +1,13 @@
#!/bin/bash
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
if [[ $DISTRO_NAME = "centos7" ]]; then
sed -i -E 's/(GRUB_CMDLINE_LINUX_DEFAULT=")(.+)(")/\1\2 rd.iscsi.firmware=1"/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
fi