We use packer to reproducibly create VM images for our aws deployments. Going on 3+ years and multiple clients now. The biggest pain point for me has been having multiple small bash lines in the json spec packer uses.
1. For your AWS deployment, could I know why you didn't use docker image for your deployment?
Because essentially you can use docker for building the image instead of packer. Furthermore, Docker also has caching mechanism which make the build much faster. I'm not sure packer also has capabilities for caching.
except with docker youre managing two userlands, the underlying host and the container, instead of one.
I've used packer a bunch of times, generally for things that dont change frequently. For instance, for creating the image the docker containers run on.
Or for one-off utility servers that are just running third party code that doesnt support docker. For the thing that id work on and deploy every day, id want something else on top whether thats docker/puppet/codedeploy/etc - probably docker today.
Some of the most business critical code ive worked with was built with packer, because the extra complication of docker added no value, we wanted as little software on the server as possible since each added thing could fail, and we wanted fast bootup times and minimal launch scripts for autoscaling.
Ah also one thing that I wonder in Packer is versioning. Since in docker we can tag every release of the image, we can somehow do versioning on that.
1. How is the versioning in Packer?
2. Also, do you have plan to adopt docker image/ other containerization pattern even if you already used packer for 3+ years? Maybe you have different use cases for adopting docker?
1. We just commit packerfile to repo and version through git
2. We've talked about it. The problem is we have some stateful processes we can't trust to container- like database stuff/etc. So its really a matter of separating what is safe to containerize or not.
1. For your AWS deployment, could I know why you didn't use docker image for your deployment?
Because essentially you can use docker for building the image instead of packer. Furthermore, Docker also has caching mechanism which make the build much faster. I'm not sure packer also has capabilities for caching.
Any reason you choose packer over docker?