2022 Foreman Plugin Audit

Hello Foreman Community!

We’re trying to round up all of the unmaintained plugins that people actually use to ensure that your favorite plugin doesn’t get left behind. I took a look at all of the plugins listed here (Foreman :: Plugin Manuals) and here (List of Plugins - Foreman) and checked if they’ve been updated within the past 6 months or so.

The plugins that appeared to be unmaintained are listed below. Please let us know if any of the plugins you use are on that list. Likewise, let us know if there are any plugins missing from this list. If you’re a maintainer, let us know if you’re still keeping an eye on your plugin(s) in this list.

  • Chef
    • Unmaintained
  • Default Host Group
    • Unmaintained? 8 months since last commit
  • Column View
    • Unmaintained
  • Default Host Group
    • Unmaintained? 8 months since last commit
  • Kubevirt
    • Unmaintained? Last commit was in 2021
  • Memcache
    • Unmaintained
  • Setup
    • Unmaintained? 8 months since last commit
  • Digital Ocean
    • Unmaintained
  • Docker (not to be confused with Katello’s Docker content type)
    • Archived
  • Fog Proxmox
    • Unmaintained? Last commit July 23, 2021
    • Has eyes on it per @quba42 's comment below.
  • Xen
    • Unmaintained
  • Scaleway
    • Unmaintained
  • Rescue
    • Unmaintained? Last commit June 10, 2021
  • ForemanAbrt
    • Unmaintained
  • Datacenter
    • Unmaintained
  • DHCP browser
    • Unmaintained
  • Expire hosts
    • Unmaintained
  • Monitoring
    • Foreman plugin: Unmaintained
    • Smart proxy plugin: Maintained
  • IPAM
    • Unmaintained
  • Spacewalk
    • Archived
  • Git Templates
    • Unmaintained? Last commit June 14, 2021
  • Host Extra Validator
    • Unmaintained
  • Radiator
    • Unmaintained (2013!)
  • Wreckingball
    • Unmaintained? Last commit November 30, 2021
  • Audited notifications
    • Unmaintained
  • Azure (not to be confused with AzureRm)
    • Archived
  • Cockpit
    • Unmaintained
  • Content
    • Unmaintained
  • CPP Cloudstack
    • Unmaintained
  • Custom Banner
    • Unmaintained
  • Deployments
    • Unmaintained
  • EPEL Release
    • Unmaintained
  • Host Overview
    • Unmaintained
  • Host Rundeck
    • Unmaintained
  • Icinga (replaced by foreman monitoring?)
    • Unmaintained
  • MCO
    • Repo is gone!
  • NoEnv
    • Unmaintained
  • One
    • Unmaintained
  • Openstack Cluster
    • Unmaintained
  • OVirt
    • Unmaintained
  • Param Lookup
    • Unmaintained
  • Pipeline
    • Unmaintained
  • ForemanPluginComputeresourceAddRemoveInterface
    • Unmaintained
  • Foreman Plugin Exec CMD
    • Unmaintained
  • Foreman Reserve
    • Unmaintained
  • Foreman resources
    • Repo is gone!
  • Sentry
    • Unmaintained
  • Hubot Notify
    • Unmaintained
  • OVirt Provision Plugin
    • Unmaintained
  • Staypuft
    • Unmaintained
  • Ansible inventory
    • Unmaintained
  • Data binding
    • Unmaintained
  • Mcollective
    • Unmaintained
  • Wimaging
    • Unmaintained
  • rex-foreman
    • Unmaintained
  • Stackstorm
    • Unmaintained? Last commit December 19. 2021

For completeness, here are the plugins that appeared to be well-maintained:

  • Ansible
    • Alive
  • AzureRm
    • Alive
  • Bootdisk
    • Alive
  • Discovery
    • Alive
  • Katello
    • Alive
  • OpenSCAP
    • Alive
  • Remote Execution
    • Alive
  • Salt
    • Alive
  • Tasks
    • Alive
  • Templates
    • Alive
  • PuppetDB
    • Alive
  • Virt-Who Configure
    • Alive
  • Foreman Maintain
    • Alive
  • Foreman Ansible Modules
    • Alive
  • Foreman ACD
    • Alive
  • Foreman Operations Collection
    • Alive
  • WDS
    • Alive
  • SCC Manager
    • Alive
  • Snapshot Management
    • Alive
  • Vault
    • Alive
  • Omaha
    • Alive
  • DLM
    • Alive

Thank you!

I think this is now redundant and we should archive it. There’s Caching with Rails: An Overview — Ruby on Rails Guides and we have built in support for Redis caching (using the foreman-redis package; there’s installer support for this).

1 Like

I would expect the following to be maintained:

Not sure about:

1 Like

While we have not quite prioritized it to the point of putting major effort into revitalizing this plugin, we do have our eyes on it. I would say it is definitely on our internal wish list to revitalize it. We do have some internal test systems with the plugin installed and an attached proxmox compute resource.

1 Like

I did a further bit of playing with this (since I also have an interest). Here’s a script that retrieves the repo and determines if it’s archived. If not, it retrieves the last commit. That’s all written back to the original file.

As a GH admin I can also see which teams should be attached to Foreman repos and if they have members. That might be a good next step.

1 Like

Monitoring is half true.

I lack the knowledge (and time) to do more than triage pullrequests, merge them and create a release for the Foreman plugin. Timo is also not very active here anymore.

For the Smart Proxy plugin I can do much more.

So it depends on the level of maintenance needed if you want it to list unmaintained or maintained.

I think as long there is someone who cares for the plugin to work, and can either do the needed fixes or at least notice breakage and ask for help, I’ll call that maintained. :slight_smile:

1 Like

So I took a stab at listing what the Foreman Installer’s Puppet modules can manage and also checked what the installer actually exposes. The result is:
https://ekohl.github.io/foreman-plugin-overview/

The source is:

From that I do see some TODOs and things we should drop.

For my own sanity, I actually want to expand on that to create more context. For example, are there acceptance tests in the Puppet modules (which can help prove a plugin at least installs or is broken).

@laugmanuel Did you get supervisory_authority back to a working state? If yes, I can have a look at puppet code and installer.

@Dirk , there is a PR for bumping ElasticAPM agent to ~> 4.0.0 : Bump ElasticAPM Agent to ~> 4.0.0 by laugmanuel · Pull Request #7 · timogoebel/foreman_supervisory_authority · GitHub

This should help us to get right direction. @TimoGoebel can you have a look at the PR? I don’t have permissions over there.

1 Like

From the list, we have foreman_expire_hosts installed.
I am also missing the hooks plugins on the list. While I know foreman_hooks is deprecated and we are currently working on migrating our hooks to webhooks/shellhooks, we still have it installed. Accordingly, the webhooks plugin seems to be missing in the list (and shellhooks, in case you are also looking for smart-proxy plugins).
The Puppet plugin is also missing (probably due to it’s history). @ekohl’s list seems to include all of those, though.

I merged the PR, but cannot do any tests/further development right now.

I was going to ask about supervisory_authority. Any thoughts on migrating it to theforeman org on GH?

I’m not against migrating it to the foreman GH org, I just temp. need the permissions to create a new repo in the foreman org.

It should now be possible for you to create a new repo.

I’ve moved the plugin. You can remove the temporary permissions now. Thanks.

1 Like

I’ve released foreman_supervisor_authority 0.1.0 which should be compatible with current Foreman releases. The new release also needs elastic-apm >= 4.0 due to changes in Ruby / the APM agent.

I’ve created the two required spec files: foreman_supervisory_authority 0.1.0 · GitHub

The problem I have is the requirement of http gem in 4.4.1 or newer in the new elastic-apm gem (due to FrozenError on Ruby 3.0.0 · Issue #922 · elastic/apm-agent-ruby · GitHub ).

@Dirk can you help in packaging the http gem and it’s dependencies?

I will look into it, but not before next Wednesday because of a full schedule.

Adding a gem for RPMs is relatively straight forward. In foreman-packaging:

./add_gem_package.sh http default "" foreman-plugins-el8

That said, you should also look at the dependencies. Looks like llhttp-ffi is also unpackaged and that in turn depends on ffi-compiler.

I’ve tried to build all the dependencies locally but I’m stuck building llhttp-ffi. I suspect it’s because this gem is building native extensions.
Note: yes, I’m still building for/with SCL. All the other gems (http, http-form_data, ffi-compiler) were build just fine.

LoadError: cannot load such file -- ffi_c
/opt/theforeman/tfm/root/usr/share/gems/gems/ffi-1.12.2/lib/ffi.rb:6:in `rescue in <top (required)>'
/opt/theforeman/tfm/root/usr/share/gems/gems/ffi-1.12.2/lib/ffi.rb:3:in `<top (required)>'
/opt/theforeman/tfm/root/usr/share/gems/gems/ffi-compiler-1.0.1/lib/ffi-compiler/compile_task.rb:4:in `<top (required)>'
/home/rpmbuild/rpmbuild/BUILD/llhttp-ffi-0.4.0/opt/theforeman/tfm/root/usr/share/gems/gems/llhttp-ffi-0.4.0/ext/Rakefile:3:in `<top (required)>'
/opt/rh/rh-ruby27/root/usr/share/gems/gems/rake-13.0.1/exe/rake:27:in `<main>'

Caused by:
LoadError: cannot load such file -- 2.7/ffi_c
/opt/theforeman/tfm/root/usr/share/gems/gems/ffi-1.12.2/lib/ffi.rb:4:in `<top (required)>'
/opt/theforeman/tfm/root/usr/share/gems/gems/ffi-compiler-1.0.1/lib/ffi-compiler/compile_task.rb:4:in `<top (required)>'
/home/rpmbuild/rpmbuild/BUILD/llhttp-ffi-0.4.0/opt/theforeman/tfm/root/usr/share/gems/gems/llhttp-ffi-0.4.0/ext/Rakefile:3:in `<top (required)>'
/opt/rh/rh-ruby27/root/usr/share/gems/gems/rake-13.0.1/exe/rake:27:in `<main>'

Caused by:
LoadError: cannot load such file -- ffi-compiler/compile_task
/home/rpmbuild/rpmbuild/BUILD/llhttp-ffi-0.4.0/opt/theforeman/tfm/root/usr/share/gems/gems/llhttp-ffi-0.4.0/ext/Rakefile:3:in `<top (required)>'
/opt/rh/rh-ruby27/root/usr/share/gems/gems/rake-13.0.1/exe/rake:27:in `<main>'
(See full trace by running task with --trace)
ERROR:  Error installing llhttp-ffi-0.4.0.gem:
	ERROR: Failed to build gem native extension.

    current directory: /home/rpmbuild/rpmbuild/BUILD/llhttp-ffi-0.4.0/opt/theforeman/tfm/root/usr/share/gems/gems/llhttp-ffi-0.4.0/ext
/opt/rh/rh-ruby27/root/usr/bin/ruby -I/opt/rh/rh-ruby27/root/usr/share/rubygems/rubygems -rrubygems /opt/rh/rh-ruby27/root/usr/share/gems/gems/rake-13.0.1/exe/rake RUBYARCHDIR\=/home/rpmbuild/rpmbuild/BUILD/llhttp-ffi-0.4.0/opt/theforeman/tfm/root/usr/lib64/gems/ruby/llhttp-ffi-0.4.0 RUBYLIBDIR\=/home/rpmbuild/rpmbuild/BUILD/llhttp-ffi-0.4.0/opt/theforeman/tfm/root/usr/lib64/gems/ruby/llhttp-ffi-0.4.0
Building has failed. See above output for more information on the failure.
rake failed, exit code 1

Do you have any idea on how to solve this problem?