Smart Proxy for Puppet failed to load

Problem:
Error: Proxy provisioning.build.com has failed to load one or more features (Puppet), check /var/log/foreman-proxy/proxy.log for configuration errors

Expected outcome:
features: change from ["BMC", "DHCP", "DNS", "Logs", "Puppet CA", "TFTP"] to ["BMC", "DHCP", "DNS", "Logs", "Puppet", "Puppet CA", "TFTP"] should succeed

Foreman and Proxy versions:

root@provisioning:/home/rje/puppet# dpkg-query -l | grep foreman
ii  foreman                               3.2.0-1                             amd64        Systems management web interface
ii  foreman-debug                         3.2.0-1                             all          provides support utility foreman-debug.
ii  foreman-dynflow-sidekiq               3.2.0-1                             all          package providing dynflow sidekiq services for Foreman
ii  foreman-postgresql                    3.2.0-1                             all          metapackage providing PostgreSQL dependencies for Foreman
ii  foreman-proxy                         3.2.0-1                             all          RESTful proxies for DNS, DHCP, TFTP, and Puppet
ii  foreman-service                       3.2.0-1                             all          package providing Foreman services running via puma

Distribution and version:
Ubuntu 20.04

Other relevant data:

I am installing Foreman and its proxies with the puppet modules. If foreman_proxy::puppet: true, when I run puppet apply I get this error:

Error: Proxy provisioning.build.com has failed to load one or more features (Puppet), check /var/log/foreman-proxy/proxy.log for configuration errors
Error: /Stage[main]/Foreman_proxy::Register/Foreman_smartproxy[provisioning.build.com]/features: change from ["BMC", "DHCP", "DNS", "Logs", "Puppet CA", "TFTP"] to ["BMC", "DHCP", "DNS", "Logs", "Puppet", "Puppet CA", "TFTP"] failed: Proxy provisioning.build.com has failed to load one or more features (Puppet), check /var/log/foreman-proxy/proxy.log for configuration errors

There are no errors in /var/log/foreman-proxy/proxy.log.

Reading the proxy’s /vs/features endpoint looks correct.

root@provisioning:/home/rje/puppet# curl -k  --cert /etc/puppetlabs/puppet/ssl/certs/provisioning.build.com.pem --key /etc/puppetlabs/puppet/ssl/private_keys/provisioning.build.com.pem   https://provisioning.build.com:8443/v2/features | python3 -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1708  100  1708    0     0  63259      0 --:--:-- --:--:-- --:--:-- 63259
{
    "facts": {
        "http_enabled": false,
        "https_enabled": false,
        "settings": {},
        "state": "disabled",
        "capabilities": []
    },
    "dns": {
        "http_enabled": false,
        "https_enabled": true,
        "settings": {
            "use_provider": "dns_nsupdate"
        },
        "state": "running",
        "capabilities": []
    },
    "templates": {
        "http_enabled": false,
        "https_enabled": false,
        "settings": {
            "template_url": null
        },

        "http_enabled": false,
        "https_enabled": true,
        "settings": {
            "tftp_servername": null
        },
        "state": "running",
        "capabilities": []
    },
    "dhcp": {
        "http_enabled": false,
        "https_enabled": true,
        "settings": {
            "use_provider": "dhcp_isc"
        },
        "state": "running",
        "capabilities": [
            "dhcp_filename_hostname",
            "dhcp_filename_ipv4"
        ]
    },
    "puppetca": {
        "http_enabled": false,
        "https_enabled": true,
        "settings": {
            "puppet_url": "https://provisioning.build.sea1.j4cap.com:8140",
            "use_provider": [
                "puppetca_hostname_whitelisting",
                "puppetca_http_api"
            ]
        },
        "state": "running",
        "capabilities": []
    },
    "puppet": {
        "http_enabled": false,
        "https_enabled": true,
        "settings": {
            "puppet_url": "https://provisioning.build.sea1.j4cap.com:8140",
            "use_provider": [
                "puppet_proxy_puppet_api"
            ]
        },
        "state": "running",
        "capabilities": []
    },
    "bmc": {
        "http_enabled": false,
        "https_enabled": true,
        "settings": {},
        "state": "running",
        "capabilities": [
            "ipmitool",
            "redfish",
            "shell",
            "ssh"
        ]
    },
    "realm": {
        "http_enabled": false,
        "https_enabled": false,
        "settings": {
            "use_provider": null
        },
        "state": "disabled",
        "capabilities": []
    },
    "logs": {
        "http_enabled": false,
        "https_enabled": true,
        "settings": {},
        "state": "running",
        "capabilities": []
    },
    "httpboot": {
        "http_enabled": false,
        "https_enabled": false,
        "settings": {
            "http_port": null,
            "https_port": null
        },
        "state": "disabled",
        "capabilities": []
    },
    "registration": {
        "http_enabled": false,
        "https_enabled": false,
        "settings": {},
        "state": "disabled",
        "capabilities": []
    }
}

Just giving this a bump to see if anyone has any ideas…

Fixed it. So for Foreman to use the Puppet Smart Proxy, Foreman needs the Puppet plugin and it won’t get that unless it is included in the manifest as it is not included by the Foreman manifest:

include foreman::plugin::puppet

Also needed are the settings in hiera (in my case I had the default but nothing was using it without the manifest):

foreman::plugin::puppet: {}