The update workflow is usually always the same for each version, and quite simple. You do always update the Foreman server with all plugins first, then update all your smart-proxies servers (if you have additional ones besides the Foreman server). You have to update one version at a time, though, so updating from your current version to a recent one will take some time.
The complete workflow for upgrades usually looks like this. I will assume you have a setup with additional dedicated smart-proxy servers. If not, just skip those parts. In general, you can just follow Katello’s upgrade instructions for each version, but here is the general workflow:
Make a backup
Start out with reading the release notes for all versions of both Foreman and Katello you are going to pass throughout your upgrades. Especially deprecation notices and upgrade warnings are important, but it is usually worth the time to at least zoom through everything.
Run “yum update -y” on all of your Foreman and smart-proxy systems. Reboot if there was a kernel update.
On your foreman servers, install the release packages for the next versions of Foreman/Katello.
Run “yum clean all && yum update -y” on the foreman server.
Run " foreman-installer --scenario katello --upgrade" on the foreman server. If your system has had manual changes to foreman related configs, this will override those. If you are unsure, I would recommend running " foreman-installer --scenario katello --upgrade -v --noop" first. This will print out the logs of the upgrade procedure and might point you to config changes that could break your setup. If you spot any changes that will affect your environment, you should pass the desired config parameters to foreman-installer as well on the actual upgrade. That way they will be stored for the future.
Install the matching release packages for Foreman/Katello repos on any dedicated smart-proxy servers and “yum clean all && yum update -y” on them.
Regenerate the smart-proxy certificates on your Foreman server and copy the new tarball over (needs to be done per dedicated smart-proxy system).
Run " foreman-installer --scenario foreman-proxy-content --upgrade --foreman-proxy-content-certs-tar ~/myproxy.example.com-certs.tar --certs-update-all --certs-regenerate --certs-deploy" (replace filename with ones that match your environment) on your smart-proxy servers. Like with the Foreman server itself, this will upgrade any manual config changes that might have been done and you might want to run the installer with an additional “-v --noop” first.
Repeat 3.-9. until you are on the desired version.
Update the foreman-client repos for your managed servers to the release you are on now and update the client tools on each system.
I would recommend checking the update documentation for each release, though, since there might be additional steps needed on some occasions.
Here are the one for the first version you will have to update to: Foreman/Katello Update Smart-Proxy Update
Feel free to ask any additional questions you might have on this
upgrades are only supported one version at a time. Please follow the upgrade instructions for each version you are updating to, starting with the links provided above by @areyus. Be sure to go over the upgrade warnings and release notes for both foreman and katello in the manuals for every version you are upgrading prior to the upgrade, there have been a lot of changes over the past several years since 1.13/3.2 were released.
If you are running on a VM, I recommend taking a snapshot after each successful version upgrade so you don’t have to restart if one step fails.
The alternative option, which may be easier depending on your setup, is to install a fresh new Katello 3.15 server and manually migrate your configuration and all hosts over to it. if you have a small-ish estate, it might be easier than doing 12 version upgrades one after the other.
As an addition to what @tbrisker already explained, if you are not able to setup a new instance or willing to invest the extra effort:
No, this will not bring you directly to latest. This will just bring your OS to the latest point and upgrade your Foreman/Katello Stack to the latest bugfix Release (X.YZ.N). Each Foreman and Katello minor version (X.YZ) have their own repository. Those are switched as part of step 4.
You should use the Katello upgrade guide, since you have a Katello stack. That upgrade documentation also handles Foreman upgrades in sync with the Katello version. I linked the documentation for your first upgrade (to 1.14/3.3) in my earlier post. Do not use the “plain” Foreman documentation for upgrading a Katello stack, you will break your setup and get yourself in a quite nasty position.
When I try to run foreman-proxy-certs-generate on katello server to generate certs I am getting this error. Any thoughts?
/usr/share/gems/gems/kafo-0.9.8/lib/kafo/param_builder.rb:83:in const_defined?': wrong constant name Stdlib::absolutepath (NameError) from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/param_builder.rb:83:in get_type’
from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/param_builder.rb:55:in build' from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/param_builder.rb:30:in block in build_params’
from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/param_builder.rb:29:in map' from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/param_builder.rb:29:in build_params’
from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/puppet_module.rb:79:in parse' from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/configuration.rb:89:in block in modules’
from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/configuration.rb:89:in map' from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/configuration.rb:89:in modules’
from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/configuration.rb:189:in params' from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/configuration.rb:199:in preset_defaults_from_puppet’
from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/kafo_configure.rb:270:in set_parameters' from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/kafo_configure.rb:99:in initialize’
from /usr/share/gems/gems/clamp-1.0.0/lib/clamp/command.rb:133:in new' from /usr/share/gems/gems/clamp-1.0.0/lib/clamp/command.rb:133:in run’
from /usr/share/gems/gems/kafo-0.9.8/lib/kafo/kafo_configure.rb:154:in run' from /sbin/foreman-proxy-certs-generate:79:in ’
I had to install foreman-installer-katello package to be able to run foreman-proxy-certs-generate script.
I keep getting these errors? can you see if I am missing certain repos?
Error: Package: pulp-server-2.9.3-1.el7.noarch (@katello-pulp)
Requires: python-celery < 3.2.0
Removing: python-celery-3.1.11-1.el7.noarch (@katello-pulp)
python-celery = 3.1.11-1.el7
Obsoleted By: python2-celery-4.2.1-3.el7.noarch (epel)
python-celery = 4.2.1-3.el7
You could try using --skip-broken to work around the problem
** Found 4 pre-existing rpmdb problem(s), ‘yum check’ output follows:
I assume you did a “yum update -y” against all repositories? Could you provide your /etc/qpid-dispatch/qdrouterd.conf? You can mask servernames and the like I you want to.
There has been a major version upgrade to qpid from qpid that requires a new config file syntax in the past, but old foreman-installer commands are not able to produce that config version. This caused a lot of trouble back in the day, though I am currently unable to find any related thread.
If this is the problem, I can provide you with a working config template that should fix the issue going forward until you reach a release that can handle the new qdroter config.