1. Headline Features

1.1. Improvements and additions to the new Host Details page

The new Host Details page is no longer experimental, although it is still not the default one. One can change SettingsNew hosts details UI to Yes to make it the default option. There are few new tabs added on this page,

1.1.1. Insights tab

The recommendations are available for the hosts in the Insights tab when using RHEL with a Red Hat cloud subscription. It is feasible to begin remediation for the suggested remedies (if any are available).

1.1.2. Ansible tab

It has the ability to manage Ansible roles and variables. The recurring jobs for the host can also be scheduled from the Ansible tab.

1.1.3. PatternFly 4 Search tab

A contemporary search experience is provided by the new search bar. It’s the beginning of an eventual transition to PatternFly 4 for many UI components in the future.

1.1.4. New Build button and card for BMC Power Management

New modals for a build button and BMC Power Management is available, which improves exprience of new Host Details page.

1.2. Descriptions for all of the provisioning templates

Over a hundred new descriptions have been added to provisioning templates, snippets, and scripts to assist users understand particular usage and use them in an effective manner.

1.3. New purge:puppet rake task

If you don’t intend to use the Puppet ENC functionality then this rake task can be used to purge Environments, Puppetclasses, Smartclass parameters and Config groups.

1.4. Cron job to clean old Audits

A new cron job has been introduced to purge the old Audits on a daily basis. The new Saved audits interval setting allows you to specify the number of days you want to save Audits for.

1.5. Provisioning snippets support Puppet 7

The provisioning snippets have been updated to setup Puppet 7 repositories, as well as configure and install packages from those repositories.

1.6. Performance improvements for index pages and Host Config Status

The new caching approach speeds up index pages loading while consuming less memory. The Host Config Status is now more efficient, using fewer requests and less memory.

2. Upgrade Warnings

2.1. Running Foreman on Ubuntu 18.04 dropped

Foreman 2.5 introduced support to run on Ubuntu 20.04. Foreman 3.0 deprecated support for running on Ubuntu 18.04 and Foreman 3.1 drops it. Users are encouraged to upgrade to Ubuntu 20.04 either on Foreman 2.5 or 3.0.

Note that this is only support to run Foreman and Foreman Proxy themselves on Ubuntu 18.04. Managing Ubuntu 18.04 systems remains supported. See the RFC for more information.

3. Deprecations

3.1. The :unattended Setting has been deprecated

Historically Foreman has supported the :unattended setting in settings.yaml. Setting it to false is barely tested and has seen various regressions because of that. This setting will be removed in the future and Foreman will behave as if it’s set to true.

The host registration feature can be used to register hosts on Foreman for the sole purpose of an inventory. Refer to the removal RFC for more information.

3.2. Running Foreman on EL7

Foreman 2.1 introduced EL8 support and Katello 4.0 (on Foreman 2.4) followed. While it’s currently undecided when EL7 support will be dropped exactly, this is an early notice given the considerable number of EL7 deployments. For fresh installations, EL8 should considered the preferred target. Existing installations should start thinking about a migration plan.

Note that this is only support to run Foreman and Foreman Proxy themselves on EL7. Managing EL7 systems remains supported. See the RFC for more information.

4. Foreman 3.1.3

A full list of changes is available via Redmine

4.1. Foreman

4.1.1. JavaScript stack

  • Adding the host parameters clears the values of the prior line - #34747

4.1.2. Host registration

  • The registration database migration could fail when template is not available - #34661

4.1.3. Security

  • Settings defined by DSL are not properly encrypted - #34573

4.1.4. Inventory

  • The Submit button on a host form redirects to an invalid page - #34572

4.1.5. Web Interface

  • Add pagelet mountpoints for hosts list table - #34543

4.1.6. Templates

  • Ensure that the insights snippet is being called by honoring the value of host_registration_insights parameter - #34525

4.2. Installer

  • Installer does not restart foreman.service when changing Puma configuration - #34824

4.3. Packaging

4.3.1. Debian/Ubuntu

  • Updates oauth Gem installed by puppet-agent-oauth under Debian to a newer version (0.5.1 produces lots of warnings about URI.escape) - #34681

4.4. SELinux

4.4.1. Plugins

  • Syncing the git templates on RHEL8 raise SElinux errors - #34726

4.5. Smart Proxy

  • Set the MALLOC_ARENA_MAX variable to counter memory bloating in production environments - #34624

5. Foreman 3.1.2

A full list of changes is available via Redmine

5.1. Foreman

5.1.1. Organizations and Locations

  • Organization context fails to change in web UI - #34416

5.1.2. API

  • Change example for --order - #34381

5.1.3. Plugin integration

  • Facets do not allow emptying their relations through mass assignment - #34375

  • GraphQL types touch database in migration rakes - #34366

  • Allow Site manager role to be extended from plugins - #34351

  • Allow specific permissions to be excluded from being added to default roles - #34329

5.1.4. Host creation

  • Host form redirect does not work for unmanaged host - #34371

5.1.5. Facts

  • Fix IPv6 support in rhsm fact facter - #34330

5.2. Installer

5.2.1. foreman-installer script

  • run foreman-rake upgrade:run only conditionally - #34440

5.2.2. Foreman modules

  • Dynflow doesnt properly come back if the DB is unavailable for a brief period of timet properly come back if the DB is unavailable for a brief period of time - #34394

  • Create the Pulp group as system group - #34379

  • Candlepin errors when using an encrypted key generated with genpkey or on a FIPS enabled machine - #34189

5.3. Smart Proxy

5.3.1. DHCP

  • DHCP error with wrong number of arguments for validate_supported_address - #34359

6. Foreman 3.1.1

A full list of changes is available via Redmine

6.1. Foreman

6.1.1. Host creation

  • Host form redirect relies on the primary interface being the first interface - #34300

  • Remove workaround for root_password encoding - #34289

6.1.2. Templates

  • upgrade fails during db:seed with ActiveRecord::RecordNotDestroyed: Failed to destroy the record - #34299

  • More Anaconda kernel boot parameters without inst.' prefix template changesinst. prefix template changes prefix template changes - #34265

  • Puppet aio detection is broken in Foreman 3.1 provisioning templates, PR#8899 is full of typos - #34214

  • is_true? & is_false? template helpers - #34213

  • Include Tower extra vars feature when calling the API callback - #33942

6.1.3. Web Interface

  • Ignore URL query params when setting active tab - #34271

  • Core cards in overview tab should be arrangeable - #34142

  • Hosts UI - UX Review - Spacing - #34129

  • Host Detail Graphs VERY slow to load after upgrade to 3.0.0-rc1 - #33310

6.1.4. Host registration

  • Missing example for "Install packages" field - #34252

  • Grammatical errors with Insecure help text at Host Registration - #34250

  • Host facts are not uploaded to Foreman when host is registered with global registration - #34249

  • Fix bool params in global registration template - #34206

6.1.5. Audit Log

  • Recent audits card in new host page is missing username - #34223

6.1.6. Packaging

6.1.7. Reporting

  • Remove warning from reports page in 3.1 - #34140

  • Importing puppet report via the API does not authorize - #34026

6.1.8. Monitoring

  • Report disallowed metric labels as "other" - #34122

6.1.9. Facts

  • New OS created due to facts mismatch for operatingsystem for RHSM, Puppet and Ansible - #33981

6.1.10. Compute resources - VMware

  • Unable to create compute profile for specific vmware compute resource - #30550

  • Cannot view Compute-Profiles from a specific Compute-Resource - #28155

6.2. Installer

6.2.1. Foreman modules

  • [Custom Certs] - Failed to install the custom certs on Katello 4.3, works on 4.1 - #34317

  • Seed may not be triggered after migration - #34308

  • support KEEP_CHANGELOG_LIMIT option with pulpcore - #34298

  • Katello 4.2 to 4.3 upgrade doesnt trigger apipie:cache:index, breaking some new hammer commandst trigger apipie:cache:index, breaking some new hammer commands - #34161

6.3. Smart Proxy

6.3.1. DNS

  • Windows DNSCMD no implicit conversion of nil into String - #34226

7. Foreman 3.1.0

A full list of changes is available via Redmine

7.1. Foreman

7.1.1. Users, Roles and Permissions

  • Authorizer cache loads all permitted resources to memory - #34093

  • Unable to assign ansible roles to a host group via hammer/api with non-admin user - #33727

  • Drop view_tasks permission in core - #33387

  • Non-admin users can not list their Personal Access Tokens - #33371

7.1.2. Templates

  • Rename enable-puppetlabs-puppetX-repo to enable-puppetofficial-puppetX-repo - #34088

  • Add current date macro - #33907

  • Job Invocation - demodulize resource type for permission - #33853

  • Package manager snippet - #33695

  • Remove CentOS 8 AppStream kickstart workaround - #33680

  • Optionally use ignoredisk in kickstart default partition template - #33666

  • Rename UNDI iPXE filename to end with zero - #33584

  • Unlocking a locked template does nothing - #33570

  • Prepare Kickstart for RHEL 9 provisioning - #33566

  • Provisioning of EL no longer writes to tty3 - #33426

  • Add support for all RHEL derivatives in Content Host Registration - #33408

  • service network restart on EL8 doesnt workt work - #33092

  • Provide a description for shipped provisioning templates - #33034

  • AutoYaST iPXE should support static networking - #32937

  • Resource template input for job templates - #32822

  • include repo support for puppet 7 in provisioning snippets - #32602

  • save_to_file() in templates cuts off last end of line - #32461

  • Add ksvalidator and grub2 script checks to jenkins suite - #31947

  • Extract Environment from TemplateCombination model - #31732

  • Add eject cdrom snippet and call it from preseed finish script - #31454

7.1.3. JavaScript stack

  • Webpack cant find loaders for plugins in productiont find loaders for plugins in production - #34086

  • Host details active tab not set correctly when tab name contains spaces - #33894

  • The new host detail page allows me to build the host even if I have view only permissions - #33872

  • Host details page needs some integration tests - #33833

  • foreman-develop-package-release fails after removing react-intl - #33800

  • Update pf4 to 4.162.2 - #33758

  • Rename the link to old UI of Host detail - #33742

  • Refactor ToastsList to use slice pattern - #33690

  • remove snapshot testing from pf4 bookmarks - #33675

  • update Audits and Models pages buttons to pf4 after searchbar styles changed to PF4 - #33635

  • Toast type in errorToast is incorrect - #33514

  • Use gray background only for overview tab on Host detail page - #33423

  • Simplify ForemanSwitcher - #33416

  • Slot&Fill reducer doesnt remove a fill from the store after unregisteringt remove a fill from the store after unregistering - #33405

  • Toast message is hidden - #33316

  • Fix Nightly React test failures - #33265

  • Add React error boundaries - #33026

  • Add confirmation modal service - #32880

  • Add PF4 Searchbar - #32750

  • Make tabs on new Host detail page routable - #32398

  • Add action items dropdown extension mechanism in host details page - #30981

  • Add PF4 icons in empty state - #30865

7.1.4. Web Interface

  • Audit cards 'All audits' link doesn’t filter the hosts All audits' link doesn’t filter the hostAll audits link doesn’t filter the host link doesnt filter the hostt filter the host - #34085

  • New Host detail page - small screen cant see build modalt see build modal - #33955

  • Host details tabs arent clickablet clickable - #33805

  • Add report and facts to host details kebab dropdown - #33714

  • Add build review modal in the new host details page - #33696

  • After creating new host group from help page, page doesnt redirect to main landing page.t redirect to main landing page. - #33637

  • Remove experimental host wizard page - #33621

  • "All audits" link in host details page doesnt workt work - #33617

  • Adding a banner for the experimental host details page - #33597

  • There should be buttons to link in between the old host page and the new host detail page - #33507

  • The new host detail page audits card gets misaligned - #33505

  • The new host detail page hostname should never be split to two lines - #33504

  • Mac Address label should have capital letters in the word MAC on the new host detail page - #33503

  • The host owner name should be expanded to the full width as it typically takes more than a one line - #33502

  • New host detail page MAC should remain on one line if theres a long host group next to its a long host group next to it - #33501

  • Experimental host page kebab menu buttons do nothing - #33491

  • Edit button in experimental host page doesnt workt work - #33490

  • Add setting for redirecting to the new host details page - #33484

  • "Login Page Footer Text" Blocking Login Button on Foreman UI - #33481

  • Use the new confirm modal in the host status clear - #33473

  • Host details page tabs re-render continuously - #33324

  • broken Documentation button in search for react pages - #33323

  • Add power options dropdown to details card - #33268

  • After creating new host group or Http proxy, page doesnt redirect to main landing page.t redirect to main landing page. - #33177

  • Host details tabs titles arent translatedt translated - #33151

  • Add console to the host details page - #32999

  • Add manageBookmarks to pf4 bookmarks - #32656

  • Move the host status page from foreman_wreckingball to core - #31638

  • The time ago creation line is not translated in the new host details page - #30984

7.1.5. Parameters

  • Cannot search by organization or location parameter - #34008

7.1.6. Host registration

  • Fix name & path to OS host_init_config template - #33979

  • In UI form show proxies that have enabled Registration and templates features only - #33697

  • Run subscription-manager clean' when force=truesubscription-manager clean when force=true when force=true - #33540

  • Use PF4 styling for warning in registration form - #33390

  • Make the registration form more compact - #33389

  • The katello-ca-consumer is not being removed when the force option is checked in the Advanced' tab under Hosts -> Register Host Advanced tab under Hosts -> Register Host tab under Hosts -> Register Host - #33305

  • Remove hard-coded link to documentation - #33215

  • Move katello_ca_consumer to registration template - #32678

7.1.7. Settings

  • Speed up settings index page - #33935

  • Foreman wont start with old settings in DB - #33861

  • Settings defined in settings.yaml do not take precedence in the new DSL - #33791

  • Setting DSL does not use the explicit initial values - #33740

  • SettingRegistry fails on older categories if setting table is not ready - #33706

  • Improve caching of SettingRegistry#load_values - #33640

  • Use new DSL to define Puppet settings - #33607

  • Use new DSL to define Provisioning settings - #33601

  • Use new DSL to define Notification settings - #33596

  • Use new DSL to define Email settings - #33595

  • Use new DSL to define Authentication settings - #33589

  • "OAuth map users" setting has a bad explanation - #33440

  • Settings search is broken in hammer - #33347

  • Mark Settings defined by DSL as special category in DB - #33280

  • Use new DSL to define General settings - #32893

  • Add custom validations to new setting DSL - #32403

  • Extract Puppet setting - #32064

  • Add more reliable way to detect Foreman CA certificate - #31049

  • Reorder settings - #29288

7.1.8. DHCP

  • Provide a meaningful report when a subnet has an invalid address - #33929

7.1.9. Organizations and Locations

  • Mismatch report fails with uninitialized constant Environment’uninitialized constant Environment - #33897

7.1.10. Monitoring

  • forget_status doesnt update the global host’s statet update the global hosts states state - #33882

7.1.11. Rails

  • Cleanup Bullet config - #33851

  • Create proper HttpUrl validator - #32892

7.1.12. BMC

  • bmc_credentials_accessible hides BMC information in host view - #33826

7.1.13. Statistics

  • Unused leftover methods in core - #33802

7.1.14. Host creation

  • ipv4/6 auto-suggested address should be removed when the different domain and subnet with ipv6/4 are selected - #33794

  • Template is written twice when resolving provisioning templates for a host - #33793

  • The edit interface view (in interface tab) is too narrow for vmware network names - #33574

7.1.15. API

  • Drop non-standard compliant way of selecting api version - #33787

  • The default password in settings is not encoded - #33732

  • GraphQL response should return valid attribute values - #33647

  • please expose capabilities in the smart_proxies show API - #33611

  • Undefined method error when calling Api::V2::SmartProxiesController#import_puppetclasses - #33539

  • Host creation API "overwrite" parameter is not documented - #32541

  • Register query fields with custom resolvers - #32214

7.1.16. Performance

  • Drop Ruby pre-2.5 compatibility in Host#parse_ip_address - #33784

7.1.17. Facts

  • Ignore unstable legacy Facter facts - #33778

  • RHSM IPv6 fact is not being parsed for foreman hosts. - #33776

  • Cloned viewer role cannot view facts - #33656

  • Reduce allocations in FactImporter#update_facts - #33639

  • Add fact parser registry - #33419

  • foreman-rake facts:clean fails with foreign key constraint violation - #30028

  • Ansible Windows network facts fail to import - #23936

7.1.18. Inventory

  • Handle different Windows installation types - #33769

  • Distinguish between "regular" hosts and hosts on which Foreman and/or smart proxy runs - models and fact processing - #32328

7.1.19. Reporting

  • Show warning on old Reports page - #33757

  • Rename the Report template button - #33432

  • Improve job invocation report template - #33223

  • User shouldnt have a login current_usert have a login current_user - #33724

  • Add scoped search definition for arf reports that finds reports for hosts owned by current user - #33025

7.1.21. Packaging

  • Make dynflow-sidekiq@\* services part of foreman.service - #33723

7.1.22. Rake tasks

  • dont warn about apipie cache when using "rake config"t warn about apipie cache when using "rake config" - #33671

  • Add task to purge puppet data - #32652

7.1.23. Plugin integration

  • Allow foreman plugins to use webpack - #33626

  • Improve Facets registration - #31372

7.1.24. Tests

  • Fix test failures in plugins - #33560

  • Introduce skip pattern for ACL tests - #33122

  • capybara 3.32.1 breaks ReportTemplateJSIntegrationTest - #29481

7.1.25. Audit Log

  • Audits should be searchable by the current user so a role with filter to "see my audits" can be created - #33551

  • Audits cleanup - #27024

7.1.26. Puppet integration

  • Remove Puppet API endpoints - #33550

  • Extract Puppetclass migrations - #33541

  • Extract ConfigGroup migrations - #31096

  • Extract Environments migrations - #31060

7.1.27. TFTP

  • TFTP Unable to download Flatcar OS - #33469

7.1.28. Compute resources - VMware

  • Compute Resource cannot list the VMs if any VMs in the datacenter has config.instanceUuid set to ' - #33396

  • Compute profile references wrong datacenter path after changing datacenter name - #32792

  • app/models/concerns/orchestration/compute.rb:93 rescue ends up with error (ArgumentError): too few arguments - #32273

7.1.29. Authentication

  • Appropriate error message to be shown when creating authsource with same name as existing authsource.

7.1.30. Compute resources - oVirt

  • Foreman error on retrieving networks/vnics from oVirt if description contains non ascii characters - #32908

7.1.31. Proxy gateway

  • Drop unwanted URI parsing from NetHttpExtension - #32837

7.1.32. Compute resources

  • Associate a VM via API to a compute resource - #32769

7.1.33. Smart Proxy

  • Add information about proxy status - #32727

7.1.34. Internationalization

  • [Foreman 2.3] [zh_CN/ja_JP] Localized string broken into two separate lines, at <Administer - Locations page>, at <Administer - Organizations page> and at <Infrastructure - Domains>. - #31338

  • Remove statistics & trends API endpoints - #30504

7.1.36. Compute resources - libvirt

  • Libvirt connection leaks - #14854

7.2. Installer

  • disable registration module on smart proxies by default - #33864

  • Drop content type settings from katello module - #33830

  • Add host_reports to the installer - #33760

  • For Katello scenario, do not deploy Puppet by default - #33337

  • Foreman client certificates should be used to set up qpid queues - #33233

  • potential memory leak in puma

7.2.1. Foreman modules

  • Allow registration through content proxy via port 443 - #33863

  • Foreman Proxy Templates feature only listens to https by default - #33808

  • Mark host where the installer is running as smart-proxy when deploying smart-proxy - #33790

  • Mark host where the installer is running as foreman when deploying foreman - #33789

  • Support Pulp 3.15 - #33766

  • Support OSTree & Python content enablement - #33751

  • workaround for pulpcore-content PostgreSQL connection issue - #33744

  • need to generate private db key for pulpcore 3.15 - #33733

  • dynflow workers started before redis - #33511

  • Use OpenSSL Ruby to ensure Apache certificate bundle is in the proper format on FIPS machines - #33431

  • Candlepin.conf refers to incorrect job schedule options - #33321

  • Refer to FQDN instead of "Foreman server" in SmartProxy registration error messages - #33320

7.2.2. foreman-installer script

  • Foreman Puppet plugin is enabled in the migration even if Foreman is disabled - #33577

  • Date used by katello-certs-check should be formatted correctly by program - #33109

7.3. Packaging

  • clean up packaged plugins - #33867

  • Add cron to audits cleanup - #33623

7.3.1. RPMs

  • drop obsolete plugin from RPM packaging: digitalocean - #33880

  • drop obsolete plugin from RPM packaging: xen - #33879

  • katello-change-hostname should conditionally mention updating puppet-foreman-server-url - #33743

  • change hostname suggests dropped parameter foreman-proxy-content-parent-fqdn - #33719

  • Hostname change script should suggest new --puppet-server-foreman-url - #33580

7.3.2. Debian/Ubuntu

  • drop obsolete plugin from Debian packaging: xen - #33871

  • drop obsolete plugin from Debian packaging: cockpit - #33870

  • drop obsolete plugin from Debian packaging: digitalocean - #33869

  • drop obsolete plugin from Debian packaging: azure - #33868

  • Drop Ubuntu 18.04 support - #33785

7.4. Smart Proxy

  • Require templates for Registration module - #33756

  • bundler warns /usr/share/foreman-proxy is not writable - #33520

7.4.1. Security

  • Disable Webrick client initiated renegotiation - #33452

  • native_ms/dnscmd providers should use shell escaping when running commands - #4026

7.4.2. Templates

  • Do not pass proxy in x-forwarded-for - #32607

7.4.3. DHCP

  • Add ip and mac address validations to api endpoints in dhcp api controller - #18069

7.4.4. TFTP

  • Smartproxy TFTP using wget -c to pull new PXE defaults produces errors while booting - #2412

Appendix A: Foreman Contributors

We’d like to thank the following people who contributed to the Foreman 3.1 release:

Adam Cecile, Adam Ruzicka, Adi Abramovich, Alexander Olofsson, Amir Fefer, Amit Upadhye, Andrew Teixeira, Anna Vitova, Antoine Beaupré, Avi Sharvit, Bernhard Suttner, Birkir Freyr, Chris Roberts, Dave Thomas, Dominik Matoulek, Eric D. Helms, Evgeni Golov, Ewoud Kohl van Wijngaarden, Gordon Bleux, Jeremy Lenz, John Mitsch, Jonathon Turel, Justin Sherrill, Kamil Szubrycht, Leos Stejskal, Lukáš Zapletal, Magnus Toneby, Marcel Kühlhorn, Marek Hulán, Maria Agaphontzev, Melanie Corr, Nacho Barrientos, Nadja Heitmann, Oleh Fedorenko, Ondřej Ezr, Ondřej Pražák, Patrick Creech, Rahul Bajaj, Romuald Conty, Ron Lavi, Samir Jha, Shimon Shtein, Shira Maximov, Tim Meusel, Tomer Brisker, Trent Anderson, William Clark, Yifat Makias, amtilghman, andrewgdewar, maccelf, rafaelguerra01

As well as all users who helped test releases, report bugs and provide feedback on the project.