In contrast with previous releases when services were containerized, in the 9.x
release services run on the host system level. Due to the fact that all Fuel
services where moved from containers to the host system level it is impossible
to perform upgrade of a Fuel Master node using standard tools.

The octane tool provides an approach how to upgrade a Fuel Master node from
the 7.0 to 8.0 version through the re-installation from 8.0 ISO. This approach
was developed in an assumption that services on both source and destination
Fuel Master nodes are run in containers. This means that it can not be applied
for upgrades from 9.x as is.

Current approach assumes that all services ran in Docker containers, they
are managed by dockerctl and docker toolsets. Also, new versions of
services can be delivered through destroy and build processes of respective
containers. This can be achieved by a sequence of commands
dockerctldestroy and dockerctlbuild.

The new approach shall modify current handlers that are used in commands
octanefuel-backup and octanefuel-restore to perform all
manipulations on the host system level instead of container level and
and shall conform the requirements:

services are managed by Puppet tasks located on a Fuel Master node in
/etc/puppet/modules/fuel/examples/

services are controlled by the systemctl command as other
ordinary services on the host system

/var/lib/cobbler/config/systems.d is placed in the host filesystem and
contains configuration of already deployment nodes

This minimal set of modifications shall not change a format and a content of
an upgrade tarball. It means that the data set is compatible with the upgrade
approach that was developed earlier.

After the upgrade all installed plugins will have the same version they had
before the upgrade, so Fuel Operator will have to install the compatible
version onto the Fuel Admin node after the restore is done.

This proposal covers modifications of technical aspects of the upgrade
workflow. Backup/restore now work for non-containerized services and
the restore part re-uses puppet tasks to reconfigure and manage services in
a consistent way.

Backups created by octanefuel-backup and octanefuel-repo-backup
commands are tarballs that contain all files and data according to
the back up/restore upgrade approach.

On fresh installation of the 9.x Fuel Master node, octanefuel-restore
and octanefuel-repo-restore restore an ability to manage already
deployed environments and create new ones with new versions provided by
the 9.x releases, including: