Adapt Local Install to Debian and OSTree

Updated Patchset 1 comments
Fixed formatting errors

Signed-off-by: Juanita-Balaraj <juanita.balaraj@windriver.com>
Change-Id: I3dbaa33bbafcb7d9fd0a9cfcd35b456fb4a4b5b8
This commit is contained in:
Juanita-Balaraj 2022-12-16 23:46:55 -05:00
parent a200f9c624
commit e5fc172d71

View File

@ -7,16 +7,20 @@ Subcloud Deployment with Local Installation
.. rubric:: |context| .. rubric:: |context|
Subcloud install is enhanced to support a local install option for Redfish Subcloud install is enhanced to support a local install option for Redfish
supported servers that are Prestaged with a valid Install Bundle. A supported servers that are 'Prestaged' with a valid Install Bundle. A
prestaging ISO can be built and downloaded outside of the maintenance window, prestaging ISO can be built and downloaded outside of the maintenance window,
i.e. to reduce the subcloud install time required during the maintenance i.e. to reduce the subcloud install time required during the maintenance
window. window.
Where Install Bundle refers to a valid OSTree repo, that will be available at
/opt/platform-backup on the subcloud, and any container images and patches
as required.
Prestaging can be done manually or it can be automated by building a Prestaging can be done manually or it can be automated by building a
self-installing Prestaging ISO image using ``gen-prestaged-iso.sh``. self-installing Prestaging ISO image using ``gen-prestaged-iso.sh``.
The ``gen-prestaged-iso.sh`` accepts parameters that include Install Bundle The ``gen-prestaged-iso.sh`` accepts parameters that include Install Bundle
components and produces a Prestaging ISO. components and produces a 'Prestaging ISO'.
.. rubric:: |proc| .. rubric:: |proc|
@ -31,7 +35,7 @@ components and produces a Prestaging ISO.
#. Run the :command:`dcmanger subcloud add` command against a Prestaged #. Run the :command:`dcmanger subcloud add` command against a Prestaged
subcloud. The ``add`` operation creates and injects a small boot loader ISO subcloud. The ``add`` operation creates and injects a small boot loader ISO
into the subclouds BMCs Redfish Virtual Media device and powers on the into the subcloud's BMC's Redfish Virtual Media device and powers on the
server. server.
.. note:: .. note::
@ -58,21 +62,17 @@ components and produces a Prestaging ISO.
Local Install Bundle Local Install Bundle
-------------------- --------------------
The Local Install Bundle consists of the following files stored in the The 'Local Install Bundle' consists of the following files stored in the
``/opt/platform-backup/<sw_version>`` release directory on the subcloud ``/opt/platform-backup/`` directory on the subcloud server.
server.
Install Image: (only one permitted) Install Image: (only one permitted)
.. code-block:: .. code-block::
bootimage.iso - the image to install locally on the subcloud. ostree_repo /opt/platform-backup
bootimage.md5 - a text file containing output of the following command
'md5sum bootimage.iso',
e.g.
fcaacda02ae4fdf1ead71850321ca89e bootimage.iso
Container_image sets: Container_image sets are available in the ``/opt/platform-backup/<release_id>``
release directory
.. code-block:: .. code-block::
@ -131,7 +131,6 @@ functions. You will find it in the same software distribution location as
- mkisofs - mkisofs
- isohybrid - isohybrid
- implantisomd5 - implantisomd5
- rpm2cpio
- cpio - cpio
- These additional tools are required if you choose to run - These additional tools are required if you choose to run
@ -155,9 +154,7 @@ functions. You will find it in the same software distribution location as
.. code-block:: .. code-block::
$ sudo apt-get install coreutils cpio debianutils findutils gawk genisoimage \ $ sudo apt-get install coreutils cpio debianutils findutils gawk genisoimage grep initscripts isomd5sum libguestfs-tools mount rsync sed syslinux tar udisks2
grep initscripts isomd5sum libguestfs-tools mount \
rpm2cpio rsync sed syslinux tar udisks2
- You will also need approximately 30 GB of disk space on the customer build - You will also need approximately 30 GB of disk space on the customer build
machine. machine.
@ -236,7 +233,7 @@ option to override the default storage device the prestaging image is to be
installed. installed.
Use the ``--output`` directive to specify the path/filename of the created Use the ``--output`` directive to specify the path/filename of the created
Prestaging ISO image. 'Prestaging ISO' image.
.. code-block:: .. code-block::
@ -272,8 +269,9 @@ Use the ``--output`` directive to specify the path/filename of the created
or provide a comma separated list. or provide a comma separated list.
--kickstart-patch <kickstart-enabler.patch>: --kickstart-patch <kickstart-enabler.patch>:
A patch to replace the prestaged installer kickstart. A modified kickstart.cfg to replace the prestaged
Not to be included in the runtime patches. installer kickstart. This will only be used during
installation using the prestaged ISO.
--addon <file>: Specify ks-addon.cfg file. --addon <file>: Specify ks-addon.cfg file.
@ -321,30 +319,39 @@ Prestaging ISO.
#. The Prestaging Install #. The Prestaging Install
The Prestaging image install automatically Prestages the subcloud with the The Prestaging image install automatically Prestages the subcloud with the
Install Bundle contents based on the :command:`gen-prestaged-iso.sh` OSTree repo and other contents based on the :command:`gen-prestaged-iso.sh`
command. command.
A new post_prestaging.cfg kickstart implements the prestaging function. It The kickstart.cfg kickstart implements the prestaging function.
is added to a new `controller` packaging group to create
``prestaged_installer_ks.cfg`` kickstart bundle. The packaging group is
sized to decrease installation time.
The current version of the Prestaging ISO does not support network login The current version of the Prestaging ISO does not support network login
but Graphical or Serial console login only. but Graphical or Serial console login only.
You can verify if the Prestaged Install Bundle is present after the You can verify if the Prestaged OSTree repo and other contents are present
Prestaging Install is complete by logging in as `sysadmin/sysadmin` and after the Prestaging install is complete by:
listing the contents of the ``/opt/platform-backup/<sw_release>``
directory. #. Login using the login credentials; sysadmin/sysadmin. You will be
prompted to change the password at the first login.
#. Check the contents of /opt/platform-backup and /opt/platform-backup/<release_id>
directories.
- You will see the directory named ostree-repo. You can use the
``fsck`` function of OSTree to validate the OSTree repo.
You will see another directory named <release_id>. It contains the
container images and patches, if any.
- The contents of /opt/platform-backup/<release-id> will not include
bootimage.iso or the sig file.
where <release-id> is the Release number.
.. rubric:: |eg| .. rubric:: |eg|
.. code-block:: .. code-block::
controller-0:~# ls -lrt /opt/platform-backup/<sw_release>/ controller-0:~# ls -lrt /opt/platform-backup/<release_id>/
total 7082736 total 4914374130
-rw-r--r--. 1 root 751 2338324480 Nov 4 23:52 bootimage.iso
-rw-r--r--. 1 root 751 48 Nov 4 23:52 bootimage.md5
-rw-r--r--. 1 root 751 2489551974 Nov 4 23:52 container-image1.tar.gz -rw-r--r--. 1 root 751 2489551974 Nov 4 23:52 container-image1.tar.gz
-rw-r--r--. 1 root 751 2424822040 Nov 4 23:52 container-image2.tar.gz -rw-r--r--. 1 root 751 2424822040 Nov 4 23:52 container-image2.tar.gz
-rw-r--r--. 1 root 751 116 Nov 4 23:52 container-image.tar.gz.md5 -rw-r--r--. 1 root 751 116 Nov 4 23:52 container-image.tar.gz.md5
@ -353,7 +360,7 @@ Prestaging ISO.
The prestaging kickstart implements the following algorithm: The prestaging kickstart implements the following algorithm:
- Verifies installation repo contains Prestaging Install Bundle - Verifies that the installation repo contains the OSTree repo.
- Creates the Platform Backup partition on the rootfs device if it does - Creates the Platform Backup partition on the rootfs device if it does
not already exist. not already exist.
@ -365,20 +372,13 @@ Prestaging ISO.
- Wipes the ``/opt/platform-backup/<sw_release>`` directory if it exists. - Wipes the ``/opt/platform-backup/<sw_release>`` directory if it exists.
- Copies the Install Bundle from the installer repo to the subclouds - Copies the OSTree repo from the installer to the subcloud's
Prestaging directory. /opt/platform-backup.
- Verifies the integrity of the Install Bundle on the subcloud.
- Runs ``md5sum --check`` against all files with the .md5 extension.
- Any ``md5sum --check`` failure results in a Prestaging Failure
.. note:: .. note::
Failure to create/mount the Platform Backup Prestaging partition or Failure to create/mount the Platform backup prestaging partition
validate the ISO image or any of the container image sets will result will result in a prestaging installation failure at the kickstart level.
in a Prestaging Installation Failure at the Anaconda Installer level.
.. note:: .. note::
@ -397,17 +397,15 @@ Subcloud Using Redfish Platform Management Service
#. Subcloud ``Miniboot`` Installer #. Subcloud ``Miniboot`` Installer
The Subcloud Local Install feature introduces a new kickstart The subcloud Local install feature uses a new kickstart ``miniboot.cfg`` .
``post_miniboot_controller.cfg`` in a new controller groups This kickstart is passed to ``Miniboot`` on the subcloud during the subcloud
``miniboot_controller_ks.cfg`` kickstart bundle. This new kickstart install via the miniboot iso.
bundle is passed to ``Miniboot`` on the subcloud during the subcloud
install.
If there is a valid Prestaged Install Bundle then ``Miniboot`` will use If there is a valid Prestaged OSTree repo then ``Miniboot`` will use
it to perform a Local Install. it to perform a Local install.
If there is no valid Prestaged Install Bundle then ``Miniboot`` will If there is no valid Prestaged OSTree repo then ``Miniboot`` will
default to the already supported Remote Install. default to the already supported Remote install.
#. ``Miniboot`` Algorithm #. ``Miniboot`` Algorithm
@ -417,49 +415,28 @@ Subcloud Using Redfish Platform Management Service
- Navigates to the specified sw_version directory. - Navigates to the specified sw_version directory.
- Searches for a Prestaged Install Bundle. - Searches for a Prestaged install bundle.
- Verifies the integrity of the Prestaged Install Bundle. - If the OSTree repo is present and valid then perform a Local install.
- Runs ``md5sum --check`` against all files with the .md5 - If OSTree repo is missing or invalid perform a Remote install.
extension.
- If Install Bundle is present and valid then perform a Local Install.
- If Install Bundle is missing or invalid perform a Remote Install.
----------------- -----------------
Local Install Log Local Install Log
----------------- -----------------
After install, login as ``sysadmin/sysadmin`` and remove the prestaging logs. After install, login as ``sysadmin/sysadmin``. You will be prompted to change
the password the first time you login. Then remove the prestaging logs.
**Example of a successful Local install log stream** **Example of a successful Local install log stream**
.. code-block:: .. code-block::
localhost:~$ sudo cat /var/log/anaconda/ks*.log | grep Prestaging | sort sysadmin@localhost:/var/log/lat$ cat kickstart.log | grep -i prestag
2022-12-13 21:12:44.448 kickstart ks-early info: controller /proc/cmdline:net.naming-scheme=vSTX7_0 BOOT_IMAGE=/bzImage-std ini0
2021-11-05 19:45:56.422 - Prestaging post: applying label to backup partition 2022-12-13 21:12:44.544 kickstart ks-early info: controller Prestaging for Local Install
2021-11-05 19:45:57.556 - Prestaging post: cmdLine: rootwait inst.text inst.gpt boot_device=/dev/sda rootfs_device=/dev/sda biosdevname=0 usbcore.autosuspend=-1 security_profile=standard user_namespace.enable=1 inst.stage2=hd:LABEL=oe_prestaged_iso_boot inst.ks=hd:LABEL=oe_prestaged_iso_boot:/prestaged_installer_ks.cfg console=ttyS0,115200 serial initrd=initrd.img BOOT_IMAGE=vmlinuz 2022-12-13 21:12:44.614 kickstart ks-early warn: controller Prestage: Force Installing Prestaged content. All existing installa.
2022-12-13 21:16:30.756 kickstart post_nochroot info: controller Prestage operation: copying repo to /opt/platform-backup
2021-11-05 19:45:57.557 - Prestaging post: install source : /run/install/repo
2021-11-05 19:45:57.558 - Prestaging post: SW_VERSION : nn.nn
2021-11-05 19:45:57.559 - Prestaging post: IMAGE_MOUNT : /run/install/repo
2021-11-05 19:45:57.560 - Prestaging post: PRESTAGING_REPO_DIR : /run/install/repo/opt/platform-backup
2021-11-05 19:45:57.561 - Prestaging post: PRESTAGING_LOCAL_DIR : /mnt/platform-backup
2021-11-05 19:45:57.565 - Prestaging post: mounting /mnt/platform-backup
2021-11-05 19:45:59.598 - Prestaging post: copy prestaging files
2021-11-05 19:46:37.820 - Prestaging post: prestaging files copy done
2021-11-05 19:46:37.821 - Prestaging post: prestaged file : bootimage.iso
2021-11-05 19:46:37.822 - Prestaging post: prestaged file : bootimage.md5
2021-11-05 19:46:41.800 - Prestaging post: bootimage check passed
2021-11-05 19:46:41.801 - Prestaging post: prestaged file : container-image.tar.gz.md5
2021-11-05 19:46:49.876 - Prestaging post: container-image.tar.gz check passed
2021-11-05 19:46:49.878 - Prestaging post: prestaged file : container-image1.tar.gz
2021-11-05 19:46:49.879 - Prestaging post: prestaged file : container-image2.tar.gz
2021-11-05 19:46:49.880 - Prestaging post: prestaging integrity checks passed
2021-11-05 19:46:49.881 - Prestaging post: prestaging complete
------------- -------------
Debug options Debug options
@ -472,117 +449,13 @@ There are 2 categories of failure:
- Installation Failure - Installation Failure
- Prestaging Failure - Prestaging Failure
When the Anaconda installer is running you will see the reverse video banner You can monitor the progress and installation failures on the boot screen.
at the bottom of the screen:
.. code-block::
[anaconda] 1:main- 2:shell* 3:log 4:storage-log 5:> Switch: Alt+Tab or Ctrl-o
First ``Ctrl-o`` gets you into Linux console shell as Anaconda root.
Subsequent ``Ctrl-o`` toggles through each of 4 additional less helpful views.
Log files are in ``/tmp``. It is recommended to look at the ``program.log`` for
a failure reason log.
If there are Prestaging logs they will also be in ``/tmp/program.log`` or be in
one of the individual randomly named kickstart logs.
.. code-block::
cat /tmp/ks*.log | grep Prestaging | sort
**Anaconda reports “Installation Failed” Reason: Specified boot device is invalid**
Look for 'device is invalid' logs on the console, in the ``/tmp/program.log``
or in the individual kickstart logs (``/tmp/ks*.log``).
Example from the console:
.. code-block::
There was an error running the kickstart script at line 611. This is a fatal error and installation will be aborted. The details of this error are:
2021-11-05 23:03:44.105 - Found rootfs /dev/disk/by-path/pci-0000:c3:00.0-nvme-1 on: ->.
2021-11-05 23:03:44.119 - Found boot /dev/disk/by-path/pci-0000:c3:00.0-nvme-1 on: ->.
Installation failed.
ERROR: Specified installation (/dev/disk/by-path/pci-0000:c3:00.0-nvme-1) or boot (/dev/disk/by-path/pci-0000:c3:00.0-nvme-1) device is invalid.
**Prestaging Failure: Server Install Device Too Small**
Look for 'No space left on device' logs on the console, in the
``/tmp/program.log`` or in the individual kickstart logs (``/tmp/ks*.log``).
**Debugging a Rejected Local Install** **Debugging a Rejected Local Install**
The following command is to query Local Install logs: The logs for a failed prestaging are found in /var/log/lat. ``miniboot.cfg`` is
used for prestaging from the System Controller. You can find the log files
.. code-block:: at /var/log/lat/miniboot.log.
$ sudo cat /var/log/anaconda/ks* | grep Miniboot | sort
**Example of a typically successful Local Install log stream**
.. code-block::
2021-11-05 05:03:10.044 - Miniboot pre: local install check
2021-11-05 05:03:12.059 - Miniboot pre: prestaged file : bootimage.iso
2021-11-05 05:03:12.060 - Miniboot pre: found prestaged iso image /mnt/platform-backup/nn.nn/bootimage.iso
2021-11-05 05:03:12.060 - Miniboot pre: prestaged file : bootimage.md5
2021-11-05 05:03:17.339 - Miniboot pre: bootimage check passed
2021-11-05 05:03:17.340 - Miniboot pre: prestaged file : container-image.tar.gz.md5
2021-11-05 05:03:28.432 - Miniboot pre: container-image.tar.gz check passed
2021-11-05 05:03:28.432 - Miniboot pre: prestaged file : container-image1.tar.gz
2021-11-05 05:03:28.433 - Miniboot pre: prestaged file : container-image2.tar.gz
2021-11-05 05:03:28.434 - Miniboot pre: local iso found : /mnt/platform-backup/nn.nn/bootimage.iso
2021-11-05 05:03:28.438 - Miniboot pre: local iso mounted for local install
2021-11-05 05:10:25.372 - Miniboot post: mount for eject
2021-11-05 05:10:25.382 - Miniboot post: /mnt/sysimage files : total 82
2021-11-05 05:10:25.384 - Miniboot post: /mnt/sysimage/www/pages/feed/rel-nn.nn files : total 23
2021-11-05 05:10:25.385 - Miniboot post: /mnt/sysimage/www/pages/updates/rel-nn.nn does not exist
2021-11-05 05:10:25.386 - Miniboot post: /mnt/sysimage/opt/patching does not exist
2021-11-05 05:10:25.387 - Miniboot post: copying software repository /mnt/bootimage/Packages
2021-11-05 05:10:25.387 - Miniboot post: /mnt/sysimage/opt/patching/packages/nn.nn/ does not exist
2021-11-05 05:10:26.465 - Miniboot post: updating platform.conf with install uuid : e1beb1c8-db83-4d0e-b2c5-8623b322a2a7
2021-11-05 05:10:26.467 - Miniboot post: Local Install
2021-11-05 05:10:26.472 - Miniboot post: downloading patch repository http://[2620:10a:a001:a103::167]:8080/iso/nn.nn/nodes/subcloud1/patches
2021-11-05 05:10:26.474 - Miniboot post: fetch packages
2021-11-05 05:10:26.478 - Miniboot post: fetch package repodata
2021-11-05 05:10:27.284 - Miniboot post: fetch patch metadata
2021-11-05 05:10:27.390 - Miniboot post: save a copy of all patch packages, preserve attributes
Specifically look for the “Local Install” log.
- ``<date> - Miniboot post: Local Install``
**Rejected Local Install** **Rejected Local Install**