What are the "templates" and "Registration" features?

I just upgraded from Foreman 3.0 → 3.1, and ran into a problem with foreman-installer. To get around this problem, I had to disable two features by running:

foreman-installer --foreman-proxy-templates=false --foreman-proxy-registration=false

However, I don’t know what these features are or if I need them.

The 3.1 manual is fairly terse about these features.

    --foreman-proxy-templates     Enable templates feature (current: false)
    --foreman-proxy-registration  Enable Registration feature (current: false)

If I don’t deactivate these features, I get an error like this:

root@puppet:/etc/foreman-installer/scenarios.d# foreman-installer
2023-05-03 18:31:54 [NOTICE] [root] Loading installer configuration. This will take some time.
2023-05-03 18:31:58 [NOTICE] [root] Running installer with log based terminal output at level NOTICE.
2023-05-03 18:31:58 [NOTICE] [root] Use -l to set the terminal output log level to ERROR, WARN, NOTICE, INFO, or DEBUG. See --full-help for definitions.
2023-05-03 18:32:00 [NOTICE] [configure] Starting system configuration.
2023-05-03 18:32:09 [NOTICE] [configure] 250 configuration steps out of 1405 steps complete.
2023-05-03 18:32:09 [NOTICE] [configure] 500 configuration steps out of 1407 steps complete.
2023-05-03 18:32:10 [NOTICE] [configure] 750 configuration steps out of 1413 steps complete.
2023-05-03 18:32:10 [NOTICE] [configure] 1000 configuration steps out of 1519 steps complete.
2023-05-03 18:32:28 [NOTICE] [configure] 1250 configuration steps out of 1810 steps complete.
2023-05-03 18:32:28 [NOTICE] [configure] 1500 configuration steps out of 1810 steps complete.
2023-05-03 18:32:28 [NOTICE] [configure] 1750 configuration steps out of 2051 steps complete.
2023-05-03 18:32:28 [NOTICE] [configure] 2000 configuration steps out of 2295 steps complete.
2023-05-03 18:32:29 [NOTICE] [configure] 2250 configuration steps out of 2295 steps complete.
2023-05-03 18:32:30 [ERROR ] [configure] Proxy puppet.example.org has failed to load one or more features (Registration), check /var/log/foreman-proxy/proxy.log for configuration errors
2023-05-03 18:32:30 [ERROR ] [configure] /Stage[main]/Foreman_proxy::Register/Foreman_smartproxy[puppet.example.org]/features: change from ["BMC", "DHCP", "Discovery", "HTTPBoot", "Logs", "Puppet", "Puppet CA", "TFTP"] to ["BMC", "DHCP", "HTTPBoot", "Logs", "Puppet", "Puppet CA", "Registration", "TFTP"] failed: Proxy puppet.example.org has failed to load one or more features (Registration), check /var/log/foreman-proxy/proxy.log for configuration errors
2023-05-03 18:32:30 [ERROR ] [configure] /Stage[main]/Foreman_proxy::Register/Foreman_smartproxy[puppet.example.org]: Failed to call refresh: Proxy puppet.example.org has failed to load one or more features (Registration), check /var/log/foreman-proxy/proxy.log for configuration errors
2023-05-03 18:32:30 [ERROR ] [configure] /Stage[main]/Foreman_proxy::Register/Foreman_smartproxy[puppet.example.org]: Proxy puppet.example.org has failed to load one or more features (Registration), check /var/log/foreman-proxy/proxy.log for configuration errors
2023-05-03 18:32:34 [NOTICE] [configure] System configuration has finished.

  There were errors detected during install.
  Please address the errors and re-run the installer to ensure the system is properly configured.
  Failing to do so is likely to result in broken functionality.

  The full log is at /var/log/foreman-installer/foreman.log
root@puppet:/etc/foreman-installer/scenarios.d#

But /var/log/foreman-proxy/proxy.log is not helpful. For completeness, I’ll include the log below. It simply has mundane messages like so.

2023-05-03T18:34:26 b08ada90 [I] Started GET /v2/features 
2023-05-03T18:34:26 b08ada90 [I] Finished GET /v2/features with 200 (13.65 ms)
2023-05-03T18:34:26 b08ada90 [I] Started GET /v2/features 
2023-05-03T18:34:26 b08ada90 [I] Finished GET /v2/features with 200 (3.76 ms)

Template and Register are both feature which enable a system to use the Smart proxy instead of Foreman directly. Template gives access to the provisioning templates and Register (requiring Templates) does the same with the registration template.

So it really depends on your environment if it is required.

Templates was active by default for some releases, but it is not any longer, this could be why it is active in your environment. But no idea why it fails.

We have Foreman installed on one server in a fairly default configuration. That means that Foreman and the Smart Proxies are installed on one box. I think this means that we don’t need these particular smart proxies, so I’ve disabled them. Foreman provisioning seems to work fine so far.