Hi everybody!
I already have some versions of Foreman / Katello behind me now, but only getting to a point where I would say that I know enough to really report back.
So this was the upgrade from 4.3 to 4.4 on my side, and I would like to point out some things I found before, during and after the upgrade process.
Upgrade Documentation:
https://docs.theforeman.org/3.2/Upgrading_and_Updating/index-katello.html
- I noticed that the upgrade docs don’t reference anything about Enterprise Linux 8 (Rocky Linux 8 in my case), which might be getting the main version after a long time now. I’m actually already used to it not finding it there, but I think it would be time to either add or replace OS version in the upgrade documentation now. (just noticed that the Smart-Proxy docs actually already have it in it)
- The guide mentions the use of
foreman-installer
without any parameters right after the package update, but shouldn’t it beforeman-installer --scenario katello
for Katello incl. installations? - I also noticed that in the upgrade docs
screen
is referenced, this is deprecated since RHEL 8, so it might be better to referencetmux
(as mentioned in the knowledgebase) instead - (also noticed on checking for new ports, that the install guides mentioned CentOS 8 as well
)
Issues Pre-Upgrade:
- I actually had this issue as well (but spoiler alert, can confirm that’s fixed now!):
- I also had the issue that I wasn’t able to install multiple Erratas from the host page (with the admin user), also fixed now
- I further had an issue creating incremental CVs (which also looks to be fixed in 4.4
):
- One other thing is, that on the Errata page, if
Installable
is selected, it still shows only applicable Erratas (that’s still happening) (even looks like there is no difference between onlyApplicable
andInstallable
) (still happening):
Upgrade:
The upgrade itself ran through flawlessly!
Post-Upgrade:
In the release announcement, there is an issue mentioned about Migration of encrypted fields...
, this actually should have hit me, but I didn’t notice anything about this issue before the upgrade, nevertheless I wanted to check if the repair dry-run would show me any needed repairs, but it just crashes:
# pulpcore-manager datarepair-2327 --dry-run
Traceback (most recent call last):
File "/usr/bin/pulpcore-manager", line 11, in <module>
load_entry_point('pulpcore==3.16.6', 'console_scripts', 'pulpcore-manager')()
File "/usr/lib/python3.8/site-packages/pulpcore/app/manage.py", line 11, in manage
execute_from_command_line(sys.argv)
File "/usr/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/usr/lib/python3.8/site-packages/django/core/management/__init__.py", line 363, in execute
settings.INSTALLED_APPS
File "/usr/lib/python3.8/site-packages/django/conf/__init__.py", line 82, in __getattr__
self._setup(name)
File "/usr/lib/python3.8/site-packages/django/conf/__init__.py", line 69, in _setup
self._wrapped = Settings(settings_module)
File "/usr/lib/python3.8/site-packages/django/conf/__init__.py", line 170, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/lib64/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/usr/lib/python3.8/site-packages/pulpcore/app/settings.py", line 301, in <module>
settings = dynaconf.DjangoDynaconf(
File "/usr/lib/python3.8/site-packages/dynaconf/contrib/django_dynaconf_v2.py", line 79, in load
lazy_settings.populate_obj(django_settings_module)
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 113, in __getattr__
self._setup()
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 163, in _setup
self._wrapped = Settings(
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 233, in __init__
self.execute_loaders()
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 967, in execute_loaders
self.pre_load(env, silent=silent, key=key)
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 986, in pre_load
self.load_file(path=preloads, env=env, silent=silent, key=key)
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 1013, in load_file
if py_loader.try_to_load_from_py_module_name(
File "/usr/lib/python3.8/site-packages/dynaconf/loaders/py_loader.py", line 66, in try_to_load_from_py_module_name
mod = importlib.import_module(str(name))
File "/usr/lib64/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/usr/lib/python3.8/site-packages/pulp_ansible/app/settings.py", line 24, in <module>
ANSIBLE_CONTENT_HOSTNAME = settings.CONTENT_ORIGIN + "/pulp/content"
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 136, in __getattr__
value = getattr(self._wrapped, name)
File "/usr/lib/python3.8/site-packages/dynaconf/base.py", line 277, in __getattribute__
return super().__getattribute__(name)
AttributeError: 'Settings' object has no attribute 'CONTENT_ORIGIN'
And after everything finished I noticed a few more things:
- After the successful creation of a incremental CV (which took forever, but that could just be the mass of packages/repos which are in that one) I noticed that the description got filled with a immense load of package names, this looks to bug out in the CV version overview (the picture shows the full screen height):
- There are some pages, where the package names push the page border in the visible overflow, which creates a horizontal scrollbar (
/job_invocations
,/template_invocations
when the command is visible, as well as the preview tab on the same page and/foreman_tasks/tasks
on the raw tab) - Nearly missed that one, if any
/job_invocations
page gets opened there is a error message in the production.log:
2022-03-29T00:44:00 [I|app|b473f28f] Started GET "/javascripts/charts.js" for 10.0.0.10 at 2022-03-29 00:44:00 +0200
2022-03-29T00:44:00 [F|app|b473f28f]
b473f28f | ActionController::RoutingError (No route matches [GET] "/javascripts/charts.js"):
b473f28f |
b473f28f | lib/foreman/middleware/logging_context_request.rb:11:in `call'
b473f28f | katello (4.4.0) lib/katello/prevent_json_parsing.rb:12:in `call'
2022-03-29T00:44:00 [I|app|15de4e87] Started GET "/javascripts/charts.js" for 10.0.0.10 at 2022-03-29 00:44:00 +0200
2022-03-29T00:44:00 [F|app|15de4e87]
15de4e87 | ActionController::RoutingError (No route matches [GET] "/javascripts/charts.js"):
15de4e87 |
15de4e87 | lib/foreman/middleware/logging_context_request.rb:11:in `call'
15de4e87 | katello (4.4.0) lib/katello/prevent_json_parsing.rb:12:in `call'
Other notable things:
- The new documenation design is really great (not talking about the info itself which also was so helpful over the time)! Only one little thing about usability, it is not possible to click beside the dropdowns to close them again.
- I once tested how far the Ubuntu support already has come in Katello and looked at the Content Host docs for that part. It took me a while to understand where the GPG key thumbprints came from in point 3 of 5.5:
Content Management Guide - And the hammer command in 5.23 on the same page for importing GPG keys looks to be different now (
hammer content-credentials create
) - Btw, I’m really looking forward to the finished deb Errata functionality, because that is kind of the milestone, where it is easier to argue about using Katello over other solutions
- One last notable project I’m trying to figure out is, how to run automatic Errata installs for all hosts via REX or Ansible initiated from the server side, I saw that the hammer errata commands are only for the katello-agent and that I would need to somehow do the parsing of the necessary packages myself and then push it to the hammer job-invocation command, but I didn’t come any further so far on that (maybe somebody has built something or written a blog post already I missed)
Oh… as this got quite a long and dense wall of information, I totally can split out some parts to where they belong if needed!
As always, thanks for this great project!
Foreman and Proxy plugin versions:
foreman-release 3.2.0-1.el8
katello-repos 4.4.0-1.el8
Used plug-ins:
VMware provider
Tasks
Ansible
Bootdisk
Puppet
Remote Execution
Snapshot Management
Statistics
Templates