Virtualize Everything


_

I began dabbling in virtualization somewhere around 2007.  I used VMware sever for creating some virtual labs but nothing too serious.  At that time it was a cool technology and I was happy to have a small group of linux servers running on one single physical server.

Later in 2008 I got a taste of virtualizing windows servers in a production environment using VMware and vSphere.  This was where I fell in love with the technology.  The speed at which I could provision servers was amazing, and having that well designed console that is vSphere…just beautiful, it truly made me feel like a superhero, but it wasn’t until late 2012 that I finally got to try my hand at constructing a fully virtualized infrastructure.

As IT Manager for a EMR software company, I reached my final destination that was over 100 virtual machines across 4 UCS blades, a couple 10G Cisco switches and a VNX5300.  This project is one of my most beautiful creations to date.  The architecture of that infrastructure made our IT department much more flexible and able to keep up with the demands of a extremely fast paced business.  We virtualized both production and staging environments that included application servers, web servers and database servers, and we utilized VMware High Availability for protection, and vMotion for meeting SLAs.  I still to this day think back to that work of art.

Since then I have setup three more virtualized environments.  I’ve helped larger environments empower their IT departments in order to manage remote virtual data centers, as well as helping small businesses realize the benefits of virtualization with amazing results.

With that brief history you’ll find it no surprise that wherever I go I always make sure I have the capabilities to virtualize.  I find that very often development departments and IT departments will be testing things in production, or testing things local to their workstation then rolling it out to production.  The two most obvious problems with these practices are, when you test in production…you are being completely unsafe, and when you develop on a different architecture, you don’t know how something will react in production.  Usually the common excuses I hear are; It’s too expensive to configure a virtualized environment, We don’t have the expertise, and We just aren’t sure about the viability of virtualized solutions yet.

It’s too expensive to configure a virtualized environment – Yes, it is expensive, 4 UCS Blades, 2x 10G Cisco switches, and the VNX5300 along with VMware Enterprise plus will cost somewhere around 225k.  1 HP Server with a couple terabytes of space, 32GB of RAM and VMware Essentials plus will run you around 15k.  If your business doesn’t have the funds for such configurations, then you should get creative.  Sometimes baby steps are best.  Check your server graveyard, put together something with as much RAM and as much hard drive space as you can muster.  You’ll be surprised how little cpu it takes to run 6 vms for use in a staging or development environment.  I have found that these first baby steps will provide enough illumination for management to take a more serious look at the benefits of virtualization.

We don’t have the expertiseYes, you will need someone to configure this.  If you go the expensive route, I would highly recommend that you not only get your staff training, but also get at least one consultant that has been to the rodeo a couple times.  I would also suggest that if you are truly interested in being awesome, then start learning virtualization by setting up your own development environment or proof of concept environment.  Don’t just hack it, configure and install, learning as you go.  Virtualization knowledge is never a bad thing to have.

We just aren’t sure about the viability of virtualized solutions yetReally?  Virtualization is not new, its not bleeding edge, you are behind in the times if you aren’t reaping some of the benefits that come with virtualization.  Your sandbox environment could be completely virtualized for little to no hardware and software costs.  I too was weary of virtualization, people would say scary things like SQL performs poorly.  Most of the people saying these things were older IT workers that clearly hadn’t been keeping up with the times.  Once I finally took the plunge, I found performance to be more than acceptable (especially when moving from lesser physical servers to greater virtual servers), and to be honest, one should probably be more worried about the unoptimized code running in their infrastructure.

At this point, I ask you the reader…why aren’t you virtualizing something?  You can use VMware, Virtualbox, or Hyper V.  Virtualbox is free, Hyper-V comes with Windows 8.1 and VMware Workstation has a price tag of $249.  For the love of all that is holy and light…please just download Virtualbox and start learning how to virtualize.  Don’t just create a client workstation vm, create a domain controller, maybe a web server, learn how to use virtual networking, read how to optimize settings for different server types.  I can assure you that you will not be wasting time.

In my current position I am using a laptop with Windows 8.1 and a 1TB external drive, so naturally, I am using Hyper-V.  I highly recommend that you get familiar with PoSH because creating Hyper-V machines is much quicker when you script them.  Here is a link to the script I used as a reference.  I wrote a modified version that takes in a couple parameters and loops through a file for creating multiple machines.

I like to create host only networks so that all my traffic is contained within my virtualized environment.  This is very simple in VMware (click, click, click), just as simple in Virtualbox, but when it came to Hyper-V I referenced this page to get an Internal network with internet access (routing and remote access server…fu).

After the machines are created, you should setup a domain.  I like to use sandbox.dev so that it’s extremely obvious what the domain was created for (or it should be).

To configure the dc

  1. Install Windows Server 2012 R2 Core
  2. Run through sconfig.cmd and set your ip address, set the dns server, and computer name set.
  3. Run Add-WindowsFeature AD-Domain-Services -IncludeManagementTools
  4. Run Install-ADDSForest -DomainName “sandbox.dev” -DomainNetbiosName “SANDBOX”
  5. Reboot and win
  6. Create other machines, join them to the sanbox.dev domain
  7. Win again
The finished product is a mini domain where I can haz admins, and I can test various configurations.  Currently on my laptop I have virtualized; a core dc, a core app server, a core sql server and an instance of kali.  If you are like me then after reading this you will be thinking about how you can refine the process in order to quickly provision new servers for any purpose in a matter of minutes (think PoSH and unattended windows install files).  Want to test some security changes?  Test them out on a fresh vm.  Want to see about how large an index might be?  Create it on a vm.  Want to do anything that makes you feel uneasy while doing it on a production machine…do it on a vm!

From this point you should have a good idea on how virtualization can help you configure sandboxes in order to test without impacting production.  There are always extreme cases, like Mr. “What about my multi-terabyte db servers”…, you sir, will need to use your head.  I have simply laid out a scenario where a professional can self contain severs to at least provide a framework for sandboxing.

 

Leave a Reply

Your email address will not be published. Required fields are marked *