Thanks @dirk for your help. I think missed multiple parts here. Or maybe they were not linked correctly 
Following your explanation I was able to create a hiera file like this:
---
classes:
- foreman_proxy
foreman_proxy::omapi_port: 7911
foreman_proxy::settings_directory: /etc/foreman-proxy/settings.d
foreman_proxy::ssl_ca_file: /etc/puppetlabs/puppet/ssl/certs/ca.pem
foreman_proxy::ssl_certificate: /etc/puppetlabs/puppet/ssl/certs/rmvm088.ad1.DOMAIN.com.pem
foreman_proxy::ssl_private_key: /etc/puppetlabs/puppet/ssl/private_keysrmvm088.ad1.DOMAIN.com.pem
foreman_proxy::trusted_hosts:
- rmvm069.ad1.DOMAIN.com
foreman_proxy::foreman_url: https://rmvm069.ad1.DOMAIN.com
foreman_proxy::daemon: true
foreman_proxy::bind_host:
- '*'
foreman_proxy::https_port: 8443
foreman_proxy::log_file: /var/log/foreman-proxy/proxy.log
foreman_proxy::log_level: INFO
foreman_proxy::log_buffer: 2000
foreman_proxy::log_buffer_errors: 1000
foreman_proxy::tftp: true
foreman_proxy::tftp_root: /var/lib/tftpboot
foreman_proxy::dhcp: true
foreman_proxy::dhcp_listen_on: https
foreman_proxy::dhcp_managed: true
foreman_proxy::dhcp_provider: isc
foreman_proxy::config: /etc/dhcp/dhcpd.conf
foreman_proxy::leases: /var/lib/dhcp/dhcpd.leases
I had a lot errors and step by step I had to import the following modules to resolve the errors that appeared.
mod 'theforeman-foreman', '21.2.0'
mod 'theforeman-foreman_proxy', '21.0.0'
mod 'theforeman-tftp', '8.0.0'
mod 'theforeman-dhcp', '8.2.0'
mod 'puppet-extlib', '6.0.0'
mod 'puppet-redis', '8.5.0'
mod 'richardc-datacat', '0.6.2'
It is still not working. Now the next error occurred:
Error: no parameter named 'max_files' (file: /tmp/kitchen/modules/foreman_proxy/manifests/tftp.pp, line: 18) on File[/var/lib/tftpboot/pxelinux.cfg] (file: /tmp/kitchen/modules/foreman_proxy/manifests/tftp.pp, line: 18) on node ip-172-31-37-223.eu-west-1.compute.internal
Not sure how to solve this one right now.
@dirk While reflecting on your sentence I am not sure where your issue is as the module is nothing special
, I can agree only party. I know it is always more or less the same. Adding classes, defining parameters etc.
But how do you know which parameters exist? How do you know which ones are required and which ones are optional? Or which values are allowed? Mixed with the general forge.puppet.com problem that there are no examples of configuration snippets it is always unnecessary pain.
I bet the information is somewhere, but it is not well enough linked together or mentioned.
Just compare an Ansible documentation page of a tool or function with the one in Puppet forge. At least I prefer always the one in Ansible. There is always a list of all parameters and values, a lot examples and so on and so forth. Usually you take an example modify it and it works.
And this is what I would like to have for Puppet modules in general, but also the Foreman project could improve a bit on this. I know it is not easy to make documentation easy accessible, but maybe a thought worth.
Coming back to the initial question.
What I wanted to do: Installing Foreman proxy with DHCP and TFTP using Puppet
Now remember what I had to do to just install this stuff (and it is not done yet). Reading Puppet forge, reading Github modules page, asking here, searching in answer files, guessing, assuming, testing. And it is still not installed.
If I am specialized in Foreman and Puppet maybe it is pretty obvious. But in my opinion an installation part should have less hard entry points. It鈥檚 just my opinion and don鈥檛 get me wrong. I really like this project and you guys 
It鈥檚 just feedback of a user 