RFC - Foreman navigation redesign

Thanks for the response. That’s great to hear! How do I choose a default? (I’m running 3.1/4.3 rc’s now).

Thanks for all the responses so far, I appreciate it a lot! Looks like complex problem that needs more understanding

See the Foreman 3.1 release notes:

1 Like

Completely agree with his. We use Foreman since a couple of years, but the menu still confuses the hell out of me. I sometimes randomly click around trying to remember where to find what.

A pet peeve of mine is seeing the logs of an ansible run:
You click on Monitor → Jobs → then you need to click on the description field (not on the status field, mind you) → on the following page below the overview there is a Host table, there you click on the Hostname (not on the status field, mind you, also not on the host detail button, really only on the hostname), then you get the output of the run. I have no idea if there is a different way to get them.

In the beginning, we had lots of problems understanding the basic concepts of Foreman and Katello, so we also didn’t understand the menu. We came from Cobbler and basically wanted to use primarily provisioning via Kickstart on locally managed repositories (including custom repos) with the hosts continuing to use these repos. Being faced with Organisations, Locations, Host Groups, Host Collections, Lifecycle Environments, Content Views, Installation Media, Operating Systems, Products and their repos, and all of the associations between them, was quiet straining in the beginning. The relationship between all of them wasn’t really clear to us in the beginning, so it was really hard to find the correct places to configure everything.

What I still really don’t like is how you configure the kickstart file that is used for provisioning. First, its not clear to me why Architectures, Kickstart templates and so on are under Hosts instead of under Content, and then having to associate things through editing them, to be able to choose them in dropdowns on other objects, is really unnecessarily hard in my opinion. E.g. having to find and edit the kickstart template to associate it with an Operating System, to be able to associate it with a Hostgroup for Installation.

I hope that all doesn’t sound too critical, I just think there’s potential to facilitate the structure of the navigation and some of the most popular workflows.

1 Like

The division between “Hosts” and “Content” is roughly speaking the division between Foreman and Katello. Everything to do with deploying a host is under “Hosts” (including Architectures, Kickstart templates and so on). Everything to do with managing content (primarily RPM packages or APT packages, etc.) is under “Content”. Not saying that division is very good, just hoping this might help you conceptualize it a bit better until it eventually gets reworked. :wink: And yes, associating templates by hand is a nightmare!

Oh yes, while I do know that, it doesn’t really persuade me to be honest. Why shouldn’t Katello add entries to other submenus? And regarding the split: Installation Media and Operating Systems are for me much closer to content actually. And why are Host Collections under Hosts and Host Groups under Configure? Just some other examples. I just think it could be more accessible.

Host Groups are part of the Configure menu for two reasons: First, they mostly bundle (provisioning and) configuration settings (like Puppet Modules, Salt States, or Ansible Roles); and second, they are not a group/list of hosts. That would be a host collection instead. You can think of host groups as “blueprints/templates” for new hosts.

Where it gets confusing: some settings apply to existing hosts, some settings of a host group only apply to new hosts that are provisioned based on that host group.

But all other Provisioning settings are NOT under Configure, they are under Hosts in a Submenu, which is even called “Provisioning setup”. By the way, much closer to “Host Collections” than to “Host Groups”.
I know these concepts, I just think, even after years of using Foreman, that the menu structure is not optimal.

We need to identify major Foreman competencies and make the main menu according to this. I am thinking something like:

  • Inventory (Arch, IM, OS, Hardware models)
  • Infrastructure (Hosts, Content Hosts, Host groups, Global parameters, Smart Proxies, Subnets, Domains, Realms)
  • Content (Katello)
  • Provisioning (Discovered hosts, Discovery Rules, Prov Templates, Partition tables)
  • Configuration (Puppet, Ansible)
  • Remote execution
  • Reporting (Dashboard, Audits, Facts, Reports)
  • Administer

Just a rough idea, my takeaway:

  • Remove Hosts main menu because pretty much everything tends to do something with hosts and we used to over-use this menu item.
  • Inventory could be a separate item
  • Provisioning should definitely be a separate item
  • Monitor and Reporting sounds common, perhaps merging them (into Reporting)?
1 Like

I have a good first impression of this taxonomy. I am not sure I fully understand Inventory vs. Provisioning, though it might be better to have several small menus rather than fewer large ones?

Then there are plugins like openscap that ignore the menu taxonomy and just place all their stuff under a subheading within the Hosts menu. That really messes things up. (Two different places for reports, etc.) Do you have any thoughts on how to help plugins seamlessly integrate into the main menu?

1 Like

I would say that Hosts (and implicitly Content Hosts) are Inventory.

I also think we should consider a world where Content Hosts no longer exists when rebuilding the menu. In the Foreman database there are just Hosts. Today there are multiple views (for historical reasons) but I’d say work is very close to addressing that. I think it’s safe to assume this work is completed before the new menu is implemented.

How about Overview?


Yes, I think it’s a good idea to first evaluate the use cases and typical workflows.

I also just noticed due to your post that this might be part of the confusion with the menu. I can basically see two approaches (maybe there are more, I’m not a Usability pro, just my 2 cents): structure by workflow vs. structure by entity. The entity is kind of what you are working on, like “Hosts”. This structure is like in a REST API or classic MVC model based view (e.g. Hosts → Create / Update / Delete). “Configure” on the other hand is an activity / a workflow. At the moment the menu is kind of mixed between the two. E.g. for reports, there is only one page to create, update, delete them, but also to execute them, e.g. create reports based on the templates. For other things, there are actually multiple pages, e.g. there’s a separate Create Hosts menu entry.


That’s an excellent observation.

Personally I think I prefer an entity based menu. This is mostly because we don’t really have a common workflow: plugins can add aspects and thus add workflows. It’s also how my mind works and how I see Foreman (an inventory system).

1 Like

My thinking is that inventory is a common ground for both provisioning and configuration management. If you put it either way, the other feature will miss that.

I think we should not introduce any kind of “Plugins” menu, they should hook to any appropriate section including a top-menu. Plugins should be able to create top-menu entries if that is not feasible today - for example OpenSCAP should probably add a top-menu “Security” which is a very important top menu to have. Katello could also drop an item or two into it.

I agree, infrastructure was my initial thought and I probably like it in the Inventory more. The reason why I ended up with inventory was that I am afraid not to end up with some kind of “god-menu” again. But after I finished with my proposal, I can see what I did not see when I started: infrastructure is already pretty crowded. So yeah, I like that.

Overview is not bad, maybe too generic but I am good.

I also lean towards this, maybe it might be considered as a bad UX, however, ton of other software do this too and I am kinda used to this.

+1 on hosts and content hosts being inventory.

I kind of like “overview” - in my mind, I want a clear distinction in the interface between “what do I have right now” (i.e. hosts and content, and config) and “what tools do I have to make more” (proxies, subnets, architectures, media, etc). To be fair, the more I think about it the more lines blur a bit, since content has feet in both the abstract and concrete.

“Overview” may be a generic term but Foreman and Katello do cover a lot of ground, and I think a generic term is called for here.

I made a few other observations in the meantime (I can’t stop thinking about the menus while using Foreman at the moment), I go from top to bottom:

  • I would refrain from mixing nouns and verbs in the menu (e.g. “Hosts” vs “Configure”)

  • Basically Foreman uses a 3-level menu, you have the categories (Hosts), the mouse-over submenu (All Hosts) and then the menu in the upper right on a page (e.g. Create Host, Register Host). However, some of the third level pages have direct menu entries (Create and Register), but most of them don’t. Some pages (mostly Katello) extend this navigation with tabs and additional dropdowns.

  • Pages in the Monitoring category are mostly read-only (as you would expect I guess), but not all of them:
    – Jobs has a run job button which you can otherwise only reach from the “Schedule remote job” button on a Host detail page as far as I see it?
    – Report Templates seems to have it backward somehow. The page itself can only be used to configure stuff instead of monitoring stuff, but you can Generate the reports from here as well. I would actually expect to get a list of recent reports here as with the other stuff like Jobs, Tasks, etc?
    – Recurring logics seems to be totally out of place (and the name is really unusual)

  • I don’t like the Content menu for our workflow, but thats probably a matter of taste and depends on the usage of subscriptions / activations and views etc. But I’d feel more at home if it had more emphasis on repositories and operating systems instead of hiding everything behind Products. There is a Red Hat Repositories page, but no page for other repositories, unfortunately. You have to go into a product to see the repositories first, or otherwise into the Views repositories tab, there you can get a list of all repositories.
    – I think sync status could be a subpage of sync plans, or of the as of yet unexisting repositories page :wink:
    – everything under Content Types seem to be read-only report pages (e.g. list of packages, list of files, list of modules) where you can’t do anything actively. Maybe they should go to a report / monitor section?

  • Configure: Its not really clear to me if this is supposed to mean Configuration Management only? In that case I would call it that, because me and my colleagues thought that you configured foreman here (or all parameters regarding provisioning etc.) and wondered about the difference to Administer.
    – I would actually move Host Groups elsewhere, because those also dictate all provisioning settings like operating system, partition tables, installation media etc. all of which you configure in the “Hosts” category. Not necessarily under hosts, but somewhere together (maybe a new Provisioning menu?).
    – Probably way too late to change that, but I actually think that “Host Profiles” would have been a better term than “Host Groups”, because the differentiation that Foreman makes between the terms “group” and “collection” seems really arbitrary in my opinion.

  • Not directly related, but I’d actually remove the reverse referentiation of Partition tables and provisioning templates. Its not uniform as is (e.g. Installation media doesnt have it) and it would save time navigating between pages.

Again, I hope I don’t offend anyone, I’m just trying to make constructive suggestions. I’m sure others might see it differently.


things that you can’t stand

Ctrl+click does the same thing as a regular click, ie just follows the link instead of opening it in a new tab. Middle mouse click works as expected, but ctrl+click does not. That is probably my biggest gripe with the current nav.

There’s a couple of other places from which you can run jobs. Host details, host index (after selecting at least one host), job templates index and then there are some utility buttons which perform various things by running jobs.

I’m with you, they are out of place and the name is pretty bad. Otoh, it feels like they wouldn’t really fit anywhere, no matter how we would shuffle the menu items around. And as far as the name is concerned, I’m open to suggestions but don’t want to derail this thread.

Excellent observations @agemuend. Just jumping in on some to provide some context:

I think Configure is something you configure about hosts where Administer is more about configuring Foreman itself.

It’s good to know that Host Collections is something Katello adds and doesn’t exist in regular Foreman.

Historically Partition Tables and Provisioning Tables were separate database models. AFAIK they have been merged a long time ago (thankfully) but the separation in the UI remains. I’m not sure if there’s a good reason for this or if it’s just historical.

Feel free to fill out this card sorting research about the new navigation and share it with other interested users! :star2: :star2:
See also the post about the research in the forum.
(Edited link)

Another research -
This time about the nav design - just vote here RFC: Navigation once again