The reason I chose Puppet was that it allows my servers to pull their configuration instead of my pushing it to them. This is important because my servers are all remote and behind firewalls that I don't control. Using Puppet, my servers can make an outbound connection to the Puppet Master without having to mess with firewall ingress rules.
Things like Salt or Fabric require direct access to the target servers and won't work in my situation. I'm not sure about how Chef works as it wasn't available (popular) when I was setting this up several years ago.
Things like Salt or Fabric require direct access to the target servers and won't work in my situation. I'm not sure about how Chef works as it wasn't available (popular) when I was setting this up several years ago.