Why 'unfortunately', the world is hetrogeneous my friend as is most
non-trivial infrastructure !
Anyway that aside, this could be a pretty big question (as I'm sure you
realise).
First off, I'm am no expert in terms of what is a legal licensing position
for your company (or you personally), so you certainly shouldn't accept
anything I say here without first checking with your Software Asset
Management folk (or whatever the equivalent is in your org).
Insofar as licensing is concerned, that obviously depends on a number of
things that relate to the organisation you work for (unless this is a
personal project), the expected longevity of your development environments,
your org's attitude to using 'free/trial' licenses and so on. If you work
for a company that has an Enterprise license agreement for MS Windows
across desktop and server versions (you haven't said what version you want
to build on and licensing options will likely differ) then, you may well
find that the 'host' Windows license will include provisioning a limited
number of Windows VMs running on that single host, so no additional
licenses are required. If you are not in that situation then you will
either need to purchase licenses for each VM or go down the free trial
license route. For the latter, there are a couple of options depending on
your starting point. If you want to build your own base image from an ISO
(using [say] Packer with a post provisioner to produce a Vagrant box) you
can pop over to TechNet and download an ISO with a trial license. These
typically last between 90-180 days (which is one reason why I mentioned the
expected 'longevity of your dev environments). If you want to start further
up the stack and are comfortable in taking a pre-built Vagrant box for your
preferred VM (say Virtualbox) then you can head over to the Hashicorp Atlas
site (there are others too) and download most versions you might need from
there. For this option you still need to provide an activation key of some
sort, so agian, either an Entreprise Volume license or a trial. If you
*are* using an Enterprise MAK then you *may* want to configure your VMs to
use a KMS server that you can reach on your network. Windows Server
licensing is probably going to be a different story, although can still get
trial licenses from TechNet if thats what you want to do. Otherwise you are
likely going to need a separate licence for every VM.
Lifecycle of VMs revisited .... Typically I don't expect a development VM
to be around too long ('too long' is a bit subjective, but I mean, measured
in hours, days or sometimes weeks, but probably no longer than that).
Mostly we follow the 'up' -> 'use' -> 'destroy' pattern and by-and-large
aim for immutable instances that we can stand up and then destroy and
re-create at will. As soon as you start down the path of incremental
updates for 'long-lived' VMs you are likely to see recurrence of the 'works
on my machine' nonsense, which we all know is a massive time waster because
of the compounding effect of those updates. We have experienced this even
when following Desired State Configuration (DSC) approaches, so these days
we favour highly disposable instances (often Docker containers). In fact
Docker containers are something we are using more and more rather than
fully blown VMs, although we will often run them inside a VM host .. but I
digress and Docker isn't really production-ready for Windows just yet.
You also need to work thru any concerns that your security/audit folk might
have when the VMs are connected to your corporate network (e.g. anti-virus,
et al), but thats likely to be very site specific and it depends how you
configure networking options in your VMs.
Once you have a repeatable process for creating your base OS (and
optionally 'hardended') builds (which will usually include some core
provisioning tools too), you can then move on to configuration management.
In our case, for Windows, we like to use a combination of Puppet,
Powershell and Chocolatey, along with a package server (we use Sonatype
Nexus) for provisioning the application stack, all of which can be launched
as part of your VagrantFile, or earlier in Packer if you prefer. Clearly
these depend heavily on the choices you have made in terms of the tools and
skills you are comfortable with maintaining, so YMMV. Our primary CM tool
is Puppet (which we run masterless). I highly recommend approaches that
leverage the declarative abstraction of resources (rather than just OS
level scripting) for lots of obvious reasons that I'm sure you are aware of
(not least of which that you can share many modules across OS's, acheive
idempotence and ..yadda, yadda, well, you get the idea). You will find
modules on Puppet forge and on the Chocolately forge for common packages
such as those you have mentioned as well as the ability to install and/or
activate Windows 'features' and 'roles'. Substitute your CM tool of choice,
but stay away from 'raw' scripting would be my advice (i.e. in the
Vagrantfile you might use the Puppet provisioner rather than the
[Power]Shell one).
Thats a short and not very detailed trip through some of the options, but
as I said at the start, there's a lot more details and a bunch of options
which, without knowing the environment constratints that you are working
in, make it near impossible to be more prescriptive.
HTHs
Fraser.
On Thursday, 10 December 2015 14:43:18 UTC, Jamie Jackson wrote:
>
> Hi Folks,
>
> I've set up a couple of Linux/Apache/MySQL/Web-App projects with Vagrant,
> using shell script provisioners (the learning curve of some of the fancy
> provisioners was prohibitive at the time). So far, I've been perfectly
> happy with configuration as code (building from scratch on bare Ubuntu
> Vagrant images), since I don't care to version binary images.
>
> Another project, (unfortunately) on a Win/MSSQL/IIS/Web-App stack, has
> asked me to help out. I could use some advice as to how to approach it? For
> instance, how do people tackle the issue of Windows licensing (vagrant
> destroy/up every month)? What are some suggestions as to which provisioner
> to use?
>
> Thanks,
> Jamie
>
--
This mailing list is governed under the HashiCorp Community Guidelines -
https://www.hashicorp.com/community-guidelines.html. Behavior in violation of
those guidelines may result in your removal from this mailing list.
GitHub Issues: https://github.com/mitchellh/vagrant/issues
IRC: #vagrant on Freenode
---
You received this message because you are subscribed to the Google Groups
"Vagrant" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vagrant-up/1d654125-5ab1-4519-aa7f-1461d7b524c4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.