Here's the makefile from Harrow.io: vagrant: harrow-Debian_64.box -vagrant box remove $(basename $<) vagrant box add $(basename $<) $<
files/supervisord.tar.gz: files/supervisord/* tar -cvf $@ $(wildcard $<) harrow-Debian_64.box: harrow-Debian_64.json files/supervisord.tar.gz $(wildcard script/*.sh) http/preseed.cfg packer build $< clean: -rm harrow-Debian_64.box .PHONY: clean Losely speaking the names on the left, before the first : are "targets" (tasks) the things after that semi colon are other targets, or files that are relied upon to build this target, and the indented lines (e.g. tar) http://lee.hambley.name/2013/01/07/gnu-make-still-great-for-workflow-control.html find more here. Lee Hambley -- http://lee.hambley.name/ +49 (0) 170 298 5667 On 20 March 2014 12:30, Roy Miller <r...@theotherroad.com> wrote: > Sounds like a good idea. I don't know anything about Makefiles, so I'll > have to research that and how it integrates with Packer. If you can point > me to any good resources, feel free to share :) > > > On Thursday, March 20, 2014 6:58:35 AM UTC-4, Lee Hambley wrote: > >> One great thing about knife-solo is that it integrates with Berkshelf to >>> resolve cookbook dependencies when you "knife solo cook". Very nice >>> feature. I won't be doing that anymore, but I'll see if I can figure out >>> how to have my Packer provisioning hook into that somehow to save headache. >>> It might be as easy as using a script provisioner to fire berks installand >>> prepare the cookbooks. I'll find out. >> >> >> I have a Makefile for my Packer build (make, make clean, etc) which I >> use to kick off things like Berkshelf and friends when I'm using them. >> >> Lee Hambley >> -- >> http://lee.hambley.name/ >> +49 (0) 170 298 5667 >> >> >> On 20 March 2014 11:54, Roy Miller <r...@theotherroad.com> wrote: >> >>> Yep, makes sense to me. >>> >>> The work I've done to figure out the approach I was using definitely >>> isn't wasted. I learned a ton about Cap, knife-solo, and rake specfically, >>> and provisioning and deployment in general. Now I'll shift to figuring out >>> how to reuse my recipes via Packer instead. >>> >>> One great thing about knife-solo is that it integrates with Berkshelf to >>> resolve cookbook dependencies when you "knife solo cook". Very nice >>> feature. I won't be doing that anymore, but I'll see if I can figure out >>> how to have my Packer provisioning hook into that somehow to save headache. >>> It might be as easy as using a script provisioner to fire "berks install" >>> and prepare the cookbooks. I'll find out. >>> >>> Thanks again for the advice. And from now on I'll post all Cap-related >>> questions here instead of potentially putting non-issues on a particular >>> tool's issues list at GitHub (e.g., capistrano/rbenv). >>> >>> >>> >>> On Thursday, March 20, 2014 6:44:16 AM UTC-4, Lee Hambley wrote: >>> >>>> It's always a fine balance, definitely there's something our industry >>>> has to fine it's way with. Years ago the unit of deployment was "bare metal >>>> boxes", recently it's become "diffs from a source control mechanism"… but >>>> the less we deploy, the more we assume about what came before, and I so I >>>> expect our devops movement towards more atomic deployments of assets. >>>> Probably that will be binary-identical virtual machines. (but then of >>>> course, we have to improve the way we handle configuration and consensus) >>>> >>>> We're not there yet, but for now, Packer provisioning my own >>>> *nearly*immobile components, and relying on a combination of nfs and etcd >>>> are >>>> giving me the flexibility that I need. >>>> >>>> - Cheers >>>> >>>> Lee Hambley >>>> -- >>>> http://lee.hambley.name/ >>>> +49 (0) 170 298 5667 >>>> >>>> >>>> On 20 March 2014 11:23, Roy Miller <r...@theotherroad.com> wrote: >>>> >>>>> I get your point, Lee. I don't see what I'm doing as making >>>>> Capistrano responsible for provisioning (knife-solo does that), it's just >>>>> kicking the process off as a prerequisite to doing the actual deploy. But >>>>> I >>>>> understand how one could see "Capistrano drives it" as making Cap do too >>>>> much. >>>>> >>>>> It certainly does take a lot of time building up from a bare box. I've >>>>> already used Packer, so I'm familiar with it and I already know how to >>>>> provision a box like what I want, Ruby and all. So I'll probably switch >>>>> over to using the Packer AWS builder and chef-solo provisioner. That >>>>> should >>>>> accomplish the same goal. As you mention, the debugging time should drop, >>>>> too. >>>>> >>>>> Going that route also will let me avoid installing rbenv and using the >>>>> Cap/rbenv integration. It works fine, no complaints, but it'll be >>>>> unnecessary for what I'm trying to accomplish. If I need to switch Rubies >>>>> (the primary purpose of rbenv), I'll re-provision the box. They're >>>>> supposed >>>>> to be Phoenix servers anyway. >>>>> >>>>> Thanks for the advice. >>>>> >>>>> >>>>> >>>>> On Thursday, March 20, 2014 3:31:34 AM UTC-4, Lee Hambley wrote: >>>>>> >>>>>> I spent the last two days trying to figure out how to make a my >>>>>>> deploy to a Vagrant box run faster. It takes roughly 30 minutes. Not >>>>>>> unexpected considering that I'm trying to create a box almost from bare >>>>>>> metal (i.e., it has the OS and pretty much nothing else), but it's too >>>>>>> slow >>>>>>> for what I need. >>>>>>> >>>>>> >>>>>> The short answer: Don't. >>>>>> >>>>>> The longer, and more helpful one: If you start from a naked Ubuntu >>>>>> (or similar) base box, you're going to waste a lot of time, all the time >>>>>> setting the box up. The Vagrant author also produces a tool called >>>>>> Packer ( >>>>>> http://packer.io/), packer (example manifest and etc here: >>>>>> https://github.com/capistrano/packer) allows you to easily build a >>>>>> base box for Vagrant (amongst other things) >>>>>> >>>>>> The linked Packer template won't install Ruby (check `./scripts/`), >>>>>> but you have a script for that already >>>>>> >>>>>> >>>>>>> Part of the process is using knife-solo to provision the box. I >>>>>>> wrote a rake task for it, called with a "before" hook in Cap. It works >>>>>>> just >>>>>>> great, and Cap manages the entire deploy process, which is nice. The >>>>>>> slowdown comes when I install Ruby. I'm installing directly from >>>>>>> source. It >>>>>>> works, but man, it's dog slow, even on a beefier AWS box. That one >>>>>>> recipe >>>>>>> takes 15-20 minutes to run for a fresh box. >>>>>>> >>>>>> >>>>>> You can also use knife solo to provision the box with Packer. >>>>>> >>>>>> >>>>>>> So I experimented with getting rbenv working. It seems to take much >>>>>>> less time to install Ruby. I have no idea why, but the time drops to >>>>>>> about >>>>>>> 5 minutes. Much better. Getting it to work with Cap was a little >>>>>>> challenging, believe it or not, but I got it working -- until I hit a >>>>>>> snag. >>>>>>> >>>>>> >>>>>> The time drops, because those tools will install a binary packaged >>>>>> managed by their communities, if one is found. They also almost certainly >>>>>> install less extensions to Ruby than the script I gave you (OpenSSL.) >>>>>> Also, >>>>>> you trade 10 minutes of installation time, once with 10 minutes of >>>>>> debugging every time you try and deploy/automate anything. >>>>>> >>>>>> >>>>>>> Part of my provisioning process is to set up the deploy user in an >>>>>>> automated fashion. Cap doesn't complain when I don't use the >>>>>>> capistrano-rbenv gem. As soon as I plug that in, however, the initial >>>>>>> rbenv:validate check fails because ... the deploy user isn't there yet, >>>>>>> of >>>>>>> course, and rbenv says it can't authenticate. >>>>>>> >>>>>> >>>>>> Right, that's why we discourage the use of Capistrano for >>>>>> *provisioning*, Cap excels at short, rapid fire processes. Provisioning >>>>>> is >>>>>> anything but. >>>>>> >>>>>> >>>>>>> So I'm stuck. If I don't use rbenv with Cap, the Ruby install takes >>>>>>> forever. If I use it, I can't deploy until the deploy user is there, and >>>>>>> it's not there until after I provision the box. Catch-22. >>>>>>> >>>>>> >>>>>> tl;dr: Use Packer. >>>>>> >>>>>> Hope that helps Roy. >>>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Capistrano" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to capistrano+...@googlegroups.com. >>>>> To view this discussion on the web, visit https://groups.google.com/d/ >>>>> msgid/capistrano/2475811c-dd4e-4bd0-93d7-784206111163%40googl >>>>> egroups.com<https://groups.google.com/d/msgid/capistrano/2475811c-dd4e-4bd0-93d7-784206111163%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Capistrano" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to capistrano+...@googlegroups.com. >>> To view this discussion on the web, visit https://groups.google.com/d/ >>> msgid/capistrano/2b0d26b7-8214-4735-a8c1-d08164098190%40googlegroups.com<https://groups.google.com/d/msgid/capistrano/2b0d26b7-8214-4735-a8c1-d08164098190%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "Capistrano" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to capistrano+unsubscr...@googlegroups.com. > To view this discussion on the web, visit > https://groups.google.com/d/msgid/capistrano/90b1d950-b89b-473c-b81c-63066a3f8da6%40googlegroups.com<https://groups.google.com/d/msgid/capistrano/90b1d950-b89b-473c-b81c-63066a3f8da6%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Capistrano" group. To unsubscribe from this group and stop receiving emails from it, send an email to capistrano+unsubscr...@googlegroups.com. To view this discussion on the web, visit https://groups.google.com/d/msgid/capistrano/CAN_%2BVLVR3wZsYS%2B0SkmKjdC%3DwZHdNO4a2vNfdRq2sai5xm%2BQmA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.