I think that ultimately, anyone in any technical position needs their own sandbox to properly learn any kind of emerging technology. Sure you can always pick up a book, or google your way to happiness looking for certain configurations and problems that you run into when setting up infrastructure, but I feel that personally the best way to learn anything is to set it up, break it, fix it, and optimize what you have. Build it, then deconstruct it, pick up the known issues and nuance, and then build it right.
Often times I find myself too busy at work just reacting to things. Tight deadlines, irate customers, and rushed sales promises sometimes makes it really tough to genuinely absorb yourself into a project, as there is always something waiting around the corner. So with that, I’ve decided that it’s time for me to create a little mini-lab, playground, sandbox called home.lab
I’m sure you’re familiar with virtualization, as that is what technology runs on today. It’s what the clouds use today. What I am going to be doing is effectively building my own cloud, at home. I was fortunate that I was able to get some equipment from my company that was no longer needed, which I upgraded to get the proper specs that I was looking for (e.g. more CPUs, more RAM, hard drives, etc). Using eBay, I was able to get my entire project rolling for about a thousand dollars (which I hope to recoup by putting more bullet points on my resume).
Even though my degree is in computer science/programming, I have always enjoyed the sysadmin side of things more. Originally I worked with all Microsoft technologies (Active Directory, Exchange, etc) and most recently have worked at a startup that is an all Linux shop (with some Windows Server and Mac thrown in). I know there admins who only like Microsoft (aka things that are tested and work – on the enterprise side) and those who only like Linux (with a greater sense of software freedom and fairplay). I personally like both, and have no problems switching between either. I have seen Microsoft servers with runtimes of over 3 years between reboots, and the same on the Linux side. I have seen the blue screen of death from Windows for no reason, and have seen as many segfault errors on the linux side. Both have their ups and downs, and both have their proper places and uses.
For my 7 year old, for example, his first computer is going to be a Linux box. Simply because I don’t need to worry about viruses and spyware when he gets online (which of course has nothing to do with watching your children online, that is a different parental requirement). Once he gets more comfortable and savvy about the web and the internet, and knows what to click and what not to click, will roll him into the Windows or Mac world as that is the more common platform he will encounter in the real world.
But I digress, as is easy to do about anyone’s children. The home.lab project will be broken down into the following points (and pages) as I go through building my own cloud:
- Hardware – putting together all of the components and getting the machines ready for business
- Networking – although the setup will be very straightforward, it will be placed behind a firewall, and separated from our home environment
- Storage – following current convention, will have a separate storage area network (SAN) that the servers will use for their boot and operating partitions
- Hypervisors – will be setting up both VMWare ESXi and KVM for CentOS. If I can find enough extra hardware, would love to have a hyper-V box thrown in as well.
- Technologies – I like to call them technologies rather than servers. Sure a DHCP and DNS servers are required for any network, but the key is to learn the technology. You can setup DNS and DHCP on several platforms, using several different packages and different operating systems. This list is just a start and hopefully will get some cool evolving technologies on here, like Foreman, Puppet, Chef, etc when there is more time.
- DNS – Domain naming system
- DHCP – Dynamic host configuration protocol
- PXE and TFTP– Preboot execution environment
- Active Directory and Group Policy – You can write several books on these technologies and what is available, but will try to hit the major items (for my home.lab uses)
- Exchange 2013 – Sure it’s bleeding edge and less likely to be adopted for some time, but why not start with the latest and greatest?
- MySQL and PostGRES – Database technologies that run many of the free linux packages available
- Apache and NginX – Open source web servers that power much of the web today
- SQL Server 2013 – Primary database for big data on the Microsoft side and runs most of their web technologies
- Sharepoint – Microsoft’s web collaboration software
- System Center – Microsoft’s monitoring platform
- Nagios – Linux monitoring software
- Rancid/Arpwatch/Cacti/Racktables – Linux networking monitor apps
- vSphere – VMWare’s hypervisor management tool (Microsoft only for now)
- Virt-Manager – Linux KVM virtual machine manager
Hopefully this page and project will be a moving target, and I’ll be able to cool little nuggets on the way (maybe something like XBMC or a little Roku web server for streaming media), but let’s get started with the above infrastructure first and get that in place. Just so you are aware, I was a big Marvel comics fan when I was a kid, and consequently named all my servers after Marvel superheroes. I was originally going to name them after Transformers (my son’s favorite toy/show line now) but since I already did that at work might as well start anew here :))