What's the current sentiment on Chef vs. Puppet these days?
Chef is a nice idea written by people who don't understand Unix. (evidence? check out popen in their source, try to figure out why subprocesses occasionally get SIGPIPE, and then grep to see where it's used and count the file handle leaks. I've had to reimplement that six or seven times and theirs was the one with the most subtle errors. Yes, I'll submit a patch when I have time, which at the current rate the day job…
The only trick is that Puppet must be aware of the file change. This happens automatically when the file is modified by Puppet. But if it's modified externally by a shell script or a git pull, you need to have Puppet copy that file to another "dummy" file, so it can detect that it changed from the previous version and trigger the restart.
What a "service restart" means can also be configured if you want a SIGHUP or something else. The default is the equivalent of "/etc/init.d/nginx restart".