Clients Update Using Recurring Actions
This workflow shows how to automate updating the clients registered at Uyuni using recurring actions.
1. Use Case / Situation
Automated update of clients is benefitial when:
-
update of a large number of clients is wanted
-
the workflow should not be re-done every execution
-
a dedicated maintenance window exists.
2. Outcome / Resolution
Successful completion of this workflow results in consistent and supportable state.
3. Preparation
Before you start, you should have a number of clients onboarded.
It may make sense to have them sorted into groups you want to update together.
In this workflow we use a system group named infra-services
.
4. Step-by-Step Workflow Instructions
To update a client two steps are required. A third step is optional but highly recommended to finalize the update process.
-
As an example, we create the action to update Salt itself as a recurring action for all systems in the organization. In the Uyuni Web UI, navigate to
and click Create. -
Select
Action Type
Custom State and enter aSchedule Name
likeupdate-salt
. -
Select a schedule. For example, Weekly: Wednesday, 9:00 am .
-
Assign the
update-salt
state by selecting the checkbox. -
Click Save Changes to save the action.
-
You can edit the execution order of the states if needed. Click Confirm to confirm the order.
-
Click Create Schedule to save the action.
-
As an example we create the action to apply all updates as a recurring action for a system group called infra-services. In the Uyuni Web UI go to
and click oninfra-services
. -
Now go to
Recurring Actions
and click Create. -
Select
Action Type
Custom State and enter aSchedule Name
likefull-system-update
. -
Select a Schedule. For example, Weekly: Wednesday, 9:30 am . Keep enough time between this action and the
update-salt
action. Theupdate-salt
actions must be finished on all systems before this action should be executed. -
Assign the states
util.syncall
,certs
,channels
anduptodate
by selecting the checkboxes. To perform a reboot afterwards you can also addreboot
orrebootifneeded
. -
Save the action by clicking Save Changes.
-
You can edit the execution order of the states. The order should be
util.syncall
,certs
,channels
,uptodate
and finallyreboot
orrebootifneeded
if chosen. Click Confirm to store the order. -
Click Create Schedule to save the action.
-
As an example, we create the action to apply the highstate for the same group which was fully updated before. In the Uyuni Web UI, navigate to
and clickinfra-services
. -
Go to
Recurring Actions
and click Create. -
Select
Action Type
Highstate and enter aSchedule Name
likehighstate
. -
Select a Schedule. For example, Weekly: Wednesday, 10:30 am . Again, keep enough time between this action and the
full-system-update
action. -
Click Create Schedule to save the action.
5. Background Information on uptodate
State
-
The
uptodate
state applies critical patches to the update components.-
On SUSE-based systems, the state executes the command:
zypper --non-interactive patch --updatestack-only
And then, the state also updates Salt.
-
On all the other systems, not based on SUSE, the state only updates Salt.
-
-
The state runs the package manager, such as
dnf
,yum
,apt
, orzypper
based on what is available on the client operating system to update the rest of the packages.-
The state lists all of the upgradable packages, based on the synchronized package repositories in Uyuni.
-
The state upgrades the packages to their latest available version by using the client’s package manager. The executed command depends on the operating system of the client:
-
For Debian-based clients, such as Debian or Ubuntu, the action executes
apt dist-upgrade -q -y $PACKAGES
. -
For RPM-based clients that are not SUSE, such as Red Hat Enterprise Linux or SUSE Liberty Linux, the action executes
yum --quiet -y update $PACKAGES
ordnf --quiet -y upgrade $PACKAGES
(depending on the package manager the client is using). -
For non-transactional SUSE clients, such as SUSE Linux Enterprise 15, the action executes
zypper --non-interactive --auto-agree-with-licenses update $PACKAGES
. -
For transactional SUSE clients, the action executes the same in a transactional shell.
-
-
-
Uyuni provides the
reboot
andrebootifneeded
actions. Use one of the actions if you want your client to reboot after the package upgrade.rebootifneeded
-
Reboot detection is specific to the client operating system.
-
For Debian or Ubuntu, see https://www.debian.org/doc/debian-policy/ch-opersys.html#signaling-that-a-reboot-is-required.
-
For non-transactional SUSE clients, Uyuni reboots the client when
zypper -x list-patches
indicates that the patches require a reboot. -
For transactional SUSE clients, Uyuni reboots the client if there is a pending transaction.
-
For the Red Hat-based clients, Uyuni reboots the client if
dnf -q needs-restarting -r
indicates that a reboot is required.
-
For more information, see the
reboot_info.py
module: https://github.com/uyuni-project/uyuni/blob/master/susemanager-utils/susemanager-sls/src/modules/reboot_info.py
6. Related Topics
-
For more information about recurring actions, see Recurring Actions.
-
For more information about custom info values, see Custom System Information.