I have been working with an opensource cicd called screwdriver.
http://screwdriver.cd/ . Goals: 1) be able to launch screwdriver with nomad and 2) configure screwdriver to use nomad as its execution engine. The first goal was fairly straight forward. I came up with a few different launch methods, all in one group, all separate groups, in docker, exec'ed, etc... The main goal of getting nomad as the executor was actually pretty easy:
https://github.com/lgfausak/executor-nomad/blob/master/config/nomad.hcl shows the configuration and integration with screwdriver. The concept with screwdriver executor is simply that there is a screwdriver build docker instance, which contains everything screwdriver needs to do an arbitrary build. The technique is that is mounted on the docker instance of your choice to do the cicd work.
I have ci/cd jobs that can run hundreds of simultaneous instances. Nomad is perfect for it :-)
By the way, when I was writing the code I used the Kubernetes executor driver as a template. They didn't support volumes-from in that driver. Their approach was to use a thing they call an initcontainer (happens before the container?) and copy the files from it to the host, create volumes on those, then mount the volumes on the target work container. --volumes-from is *much* quicker when you are looking at the size of the files being moved around.
I am still thinking about using your approach with the host volumes and simply have an install step that must be run first. The raw_exec makes me nervous, even in a private environment.
-g