Suggestion around setting up new foreman/Puppet/katello environment

Problem:
I am looking to find out what is the recommended way to setup a new environment, where each component of the foreman stack is responsible for a particular task. Right now, I have foreman and Puppet master in the same server. I am trying to gauge whether it makes sense to separate the foreman and Puppet master and Katello into their own separate hosts. The individual parts are:

Foreman: For provisioning
Puppet master: Configuration management/External node classifier/Puppet dashboard
Katello: Content host management

Right now, I provision hosts using foreman and assignt he classes to the new host using ‘Puppet classes’ tab so that the new host obtains all necessary configuration. Therefore, I have to maintain an ‘always-on’ line between the foreman and Puppet master, if I decide to put those two responsibilities in two separate hosts.

The environment will be located in vmware and not on any public/private cloud. Although requirements of that nature may come in future, but I haven’t heard anything like that so far.

Given above information, what is the suggested/recommended way of setting up the new environment will be? I have to support a mix of RHEL6 and RHEL7 hosts, although the new foreman environment will be in RHEL7.

Any questions/comments are highly appreciated.

It does make sense and should be supported. Our installer supports the content proxy scenario and you can disable some settings to make sure it only has Puppet enabled. You’d need to look at the exact options.