Closed kensykora closed 9 years ago
The reason it is included is a simple one: when I started this repo, I was a heavy Chef user. And I wanted to be able to vagrant up
And use the chef solo provisioner without any bootstrapping.
I do think there's value in having one of [chef, puppet, other] installed by default, but of course that creates a chicken and egg problem that varies by person and by use case.
Is there a way to use environment variables or something similar to determine which to use (chef, puppet, none, initially)? I'd like to avoid a scenario where EVERYBODY has to fork the repo or make changes to get the happy path working.
I think that's a potentially larger discussion around how to setup this project to work with options to install various things. Given what you said, but the way this project is currently setup is really more of a template for producing a windows vagrant box than anything else. For instance, we delete the vbox/vmware output which prevents us from re-running packer against what we've already created. In my local installs I turn this off so that I can iterate on this to produce other images.
I'm sure we could do something with environment variables and turning on/off certain provisioners that are included as optional scripts, but I'd like to treat that as a separate enhancement for now.
Yes, there is a way to use variables with packer. There is an incredible project from Mischa Taylor and many contributors at box-cutter for many Linux platforms, but also for Windows boxes: https://github.com/box-cutter/windows-vm
In these projects you can specify your configuration management tool and some other things (like the path to the ISO and its checksum) with variables and the -var
option of packer.
He also does some vagrant-serverspec tests which I have adopted to my boxes for a Jenkins based build pipeline.
Yeah, it's definitely possible to do this with an environment variable, I'm just wondering if we should do it. Considering the goal of this project is a template for a windows build, we are basically expecting anyone who uses this project to customize it to some degree. If we go the environment variable route, we're really headed towards being a project completely parallel to box-cutter (which it kind of already is) and it makes me wonder what the long term road-map for this project looks like.
It seemed odd to me that chef is included as a default provisioning tool in this project when there are optional scripts for others. Rather than taking a stance on what should be installed by default, it seems like we should simply let everyone choose what's right for them as a manual provisioning step to install their provisioner of choice.
So with that in mind, I propose we remove Chef as a default installed tool