4 ms·
That is literally what the concept of base boxes is for. Build your own base box with whatever prerequisites you have baked in. It's still a 10 minute puppet r
by stephenr 9y ago
That is literally what the concept of base boxes is for.
Build your own base box with whatever prerequisites you have baked in. It's still a 10 minute puppet run if that's how long your provisioning takes, but that happens once, and then you distribute the box. While you can just use a base distro box, for large/complex setups it's not always the best approach.
- sumedh 9y agoHow long does it take to setup postgres 9.4 with test datbase and one user for that DB in vagrant? What is the command/process to do that?
- stephenr 9y agoWhat's your config management tool of choice? I assume they will have recipes/etc for basic tasks like that. Personally I'd just put the call to `apt-get` and then `psql` into a shell script. Either way, set the provisioner. Either do it in vagrant provisioning, or if that takes to long, build a base box with Packer and put the provisioner there. Edit: or for a simpler use, look on Vagrantcloud.com and find a base box that has what you want, and run that.
- turtlebits 9y agoFor docker w/ docker-compose, I can get a postgres container in <2 seconds with this definition version: "2" services: database: image: postgres environment: - POSTGRES_PASSWORD=123456 ports: - "5432:5432" docker-compose up -d 0.59s user 0.14s system 50% cpu 1.462 total And restarting it takes < 1 second.
- stephenr 9y agoSee: https://news.ycombinator.com/item?id=15565554 https://news.ycombinator.com/item?id=15565554 You're relying on an existing image. That concept works in Vagrant too. And if you want quick startup and are already on a Linux host, use vagrant-lxc.
- sumedh 9y agoSince you did not give a simple one line command I am going to assume its difficult to do that in vagrant. You dont need to mess with a config management tool when you have docker.
- stephenr 9y agoIf a box provides Postgres it's just `vagrant init vendor/boxname && vagrant up`. That's what you're relying on with a '1 line command' in docker to give you Postgres: an image that someone else has created. Whether a Postgres-only box exists in Vagrantcloud is irrelevant, unless your argument is purely on the merits of the pre-made boxes/images third parties have contributed.
- sumedh 9y agoYou did not answer how long does it take to do that.
- stephenr 9y agoMost boxes start in ~30s on reasonable hardware. I don't know how long the box will take to download because I don't know what box you might use, what vagrant provider (e.g. parallels boxes are usually a little bigger than vbox ones), what your internet connection speed is. If your entire decision making process is "I only run things that take two seconds" then I don't think we can have a conversation because honestly I don't even think about the time vagrant takes to start. My computer does multiple things all at once. It takes longer for my IDE to start and be usable than it does for Vagrant, and funnily enough computers can run multiple processes at once, so this whole "omg 30 seconds is too long to wait" argument doesn't fly for me.
- sumedh 9y agoThe setup time is one of the argument, in docker the whole thing takes couple of seconds, you might not appreciate the quick boot up time but lot of others care about that. If you are happy with slow boot up time then you should not migrate to docker but if you want something quick and easy then consider docker.
- viraptor 9y agoThe idea of the base boxes is there, sure. But the ability to configure repositories, make base box of that, install keys, make base box of that, install required told, make base box of that, ... etc. with the mechanism for transparent reuse of the latest cached box you care about is not available on vagrant. And when you're making changes and debugging, it makes all the difference. If vagrant integrated a nice way to do that, the time saving would be amazing.
- stephenr 9y agoYou kind of can do that, but it's not a Vagrant feature, so much as a Packer feature. Most of the Packer builders (e.g. virtualbox, parallels, VMware) support building from scratch (i.e. start with ISO install media and a blank VM disk) OR building from an existing VM. So you could have a multi-stage Packer build pipeline that iterates step by step. But I'm still not really sure what your workflow is. My company builds a series of Debian (and for a client, Ubuntu) base boxes. When debugging issues, 99% of time required is checking/fixing inside a running box. Once a solution is found, applying that back to the base box provisioning scripts (or preseed or even the packer config) and testing a build doesn't take that long.