openSUSE Tumbleweed and openSUSE MicroOS for Uyuni - uyuni-project/uyuni GitHub Wiki

Intro

Part Hack Weeks 22 and 23

Two PRs produced:

What was tested and works

  • Onboarding via WebUI, bootstrap script as regular Salt minions, and as Salt SSH minions
  • Running Salt Commands as both regular minions and Salt SSH minions
  • Installing/Removing/Updating packages (on Tumbleweed it seems the package refresh does not happen automatically after such operations, or does not work as expected, see below)
  • Applying formulas (locale formula). Worked only on Tumbleweed (see below for MicroOS)

What does not work

on Tumbleweed and MicroOS

  • Applying the highstate, as one of the state fails:
    ----------
              ID: mgr_install_products
        Function: product.installed
            Name: mgr_install_products
          Result: false
         Comment: An error was encountered while installing package(s): Zypper command failure: Loading repository data...
    Reading installed packages...
    Resolving package dependencies...
    2 Problems:
    Problem: the to be installed product:openSUSE-20231108-0.x86_64 conflicts with 'distribution-release' provided by the to be installed product:Aeon-20231108-0.x86_64
    Problem: the to be installed product:openSUSE-20231108-0.x86_64 requires 'product(openSUSE) = 20231108-0', but this requirement cannot be provided
    
    Problem: the to be installed product:openSUSE-20231108-0.x86_64 conflicts with 'distribution-release' provided by the to be installed product:Aeon-20231108-0.x86_64
     Solution 1: Following actions will be done:
      do not install product:Aeon-20231108-0.x86_64
      deinstallation of product:MicroOS-20231108-0.x86_64
      deinstallation of patterns-microos-base-5.0-80.2.x86_64
      deinstallation of product:MicroOS-20231108-0.x86_64
      deinstallation of patterns-microos-base-zypper-5.0-80.2.x86_64
      deinstallation of patterns-microos-defaults-5.0-80.2.x86_64
     Solution 2: Following actions will be done:
      do not install product:openSUSE-20231108-0.x86_64
      deinstallation of product:MicroOS-20231108-0.x86_64
      deinstallation of patterns-microos-base-5.0-80.2.x86_64
      deinstallation of product:MicroOS-20231108-0.x86_64
      deinstallation of patterns-microos-base-zypper-5.0-80.2.x86_64
      deinstallation of patterns-microos-defaults-5.0-80.2.x86_64
    
    Choose from above solutions by number or skip, retry or cancel [1/2/s/r/c/d/?] (c): c
         Started: 14:46:19.066941
        Duration: 5788.462
             SLS: packages
         Changed: {}
    ----------
    

on MicroOS

  • Package operations on Salt SSH Minions, as such minions are not detected as transactional systems.
  • Applying formulas or at least the locale formula on regular Salt minions, but I wonder if it's because a reboot was missing, as it worked fine on a Salt SSH minion
              ID: mgr_timezone_setting
        Function: timezone.system
            Name: MST
          Result: false
         Comment: An exception occurred in this state: Traceback (most recent call last):
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/state.py", line 2401, in call
        ret = self.states[cdata["full"]](
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 149, in __call__
        return self.loader.run(run_func, *args, **kwargs)
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1234, in run
        return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1249, in _run_as
        return _func_or_method(*args, **kwargs)
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1282, in wrapper
        return f(*args, **kwargs)
      File "/usr/lib/venv-salt-minion/lib/python3.10/site-packages/salt/states/timezone.py", line 70, in system
        if __salt__["timezone.get_hwclock"]() == "localtime":
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 149, in __call__
        return self.loader.run(run_func, *args, **kwargs)
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1234, in run
        return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
      File "/usr/lib/venv-salt-minion/lib64/python3.10/site-packages/salt/loader/lazy.py", line 1249, in _run_as
        return _func_or_method(*args, **kwargs)
      File "/usr/lib/venv-salt-minion/lib/python3.10/site-packages/salt/modules/timezone.py", line 400, in get_hwclock
        ret = _timedatectl()
      File "/usr/lib/venv-salt-minion/lib/python3.10/site-packages/salt/modules/timezone.py", line 57, in _timedatectl
        raise CommandExecutionError(msg)
    salt.exceptions.CommandExecutionError: timedatectl failed: System has not been booted with systemd as init system (PID 1). Can't operate.
    Failed to connect to bus: Host is down
    
         Started: 14:46:24.855576
        Duration: 8.386
             SLS: locale
         Changed: {}
    

Does not work in Tumbleweed

  • I updated packages, but it seems that after that the package refresh did not happen (as Salt Minion) or it happen but didn't refresh the UI (Salt-SSH minion), so in both cases I still see the warning about pending updates

What else should be needed before a Tech preview

Reposync repository pruning

We should have a way to prune the repositories with reposync. openSUSE Tumbleweeds repositories drop packages regularly, and without this Tumbleweed (and MicroOS updates will grow very quickly very large, and can potentially fill the Uyuni Server Hard disk.

How to test

WARNING: Do not sync the openSUSE Tumbleweed or openSUSE MicroOS in a production Uyuni Server. See the problem described at Reposync repository pruning above. Besides, openSUSE Tumbleweed and openSUSE MicroOS do not fully work, as described above.

If you accept the limitations and want to test, and provided feedback or even fixes, then you need to create a separate Uyuni Server, and then add and sync the channels by running, as root:

For Tumbleweed:

spacewalk-common-channels -a x86_64 opensuse_tumbleweed opensuse_tumbleweed-non-oss opensuse_tumbleweed-openh264 opensuse_tumbleweed-
updates opensuse_tumbleweed-uyuni-client

For MicroOS:

spacewalk-common-channels -a x86_64 opensuse_microos opensuse_microos-non-oss opensuse_microos-openh264 opensuse_microos-update opensuse_microos-uyuni-client

When the sync is complete (spacewalk-common-channels launches it), the bootstrap repositories will be automatically created, and all you need is activation keys, and start bootstrapping normally.