Disclaimer: this is exactly how I do it :)
I see no benefit in putting Artifactory on the same server as the Puppets, and this seems like a bad idea.
In Artifactory, I have a virutal repository that includes only our product artifacts that concern me. I have a separate shared web server that hosts different dollhouse sites, and sometimes people in our company need to download. This server is also a direct proxy virtual repo server in artifactory.
The local web server is synchronized every night with an external aws server. Inside, the nodes that need to load the bits get them from our local server. Externally, they are downloaded from a cloud server (indeed, an autoscaling cluster).
This makes for a pretty simple way to write puppet manifests / custom types that can load, md5 and set artifacts on nodes. Even slicker for Linux will consist in creating packages, but at the moment I do not.
I also use Foreman as an ENC Kuppet. Software versions are configured as Foreman parameters at the global, group and, if necessary, node level. To deploy a new version of the war with the application, someone simply logs into Foreman, sets this parameter and waits for Puppet to do its work (or log in to the node system and start Puppet launch, if necessary).
Hope you get some ideas.
source share