For a few years now, my go-to deployment option is not puppet, kubernetes, docker, capistrano, etc. I just make a tiny shell script. It compiles a large-ish binary, which embeds all assets and may be statically linked too. Then it rsyncs the binary to the server and reloads whatever's needed (nginx, systemd unit, etc)
Discussion
I feel boilerplate has just gone so meta that it came full circle. The OS is already virtualized and runs on an hypervisor only god knows where. A statically linked binary is the most minimalistic representation of what my software actually intends to do. Infrastructure should disappear, not become code.