Sure, you could do it all with slightly longer and more detailed instructions and more hand rolled scripts, but it would be slower and more fragile. Vagrant doesn't really solve any new unsolved problems, it's just a bit easier than the alternatives.
(Also, I'm not sure I understand your argument against vagrant. Part of the point of vagrant is, yes, to try and maintain the same deployment tools for dev and producton. Why do you think using vagrant makes that harder?)