Study Topic: Virtualisation

From Matt Morris Wiki
Jump to navigation Jump to search

This is a Study Leave topic.

What Is It?

Various ways of getting environments for code execution set up efficient and scalably

Why Study It?

The flexibility that virtualisation brings is a large part of why people are interested in Microservices

Toggl code

Toggl code is TECH-VIRTUAL

Deliverables

Max 7 hours of time:

WriteUp

TODO:

  • Something on Kubernetes

Vagrant

  • Vagrant is a tool for automatically provisioning multiple virtual machines each with their own configurations managed with puppet and/or chef.
  • For its virtualisation it can use different providers: originally the default provider was virtualbox, but it now supports many more, including vmware fusion and amazon-ec2.
  • Vagrant has a Docker provider now, so you can use vagrant to manage Docker builds and deployments.

Configuration Management

Puppet and Chef are the biggest: these are pretty direct competitors. Puppet works on dependency structures, Chef is more procedural (install this, then that). An article comparing them is here: (27Mar2013) Puppet or Chef: The configuration management dilemma

A more general review here: (21Nov2013) Review: Puppet vs. Chef vs. Ansible vs. Salt

Some general points:

  • Puppet and Chef are geared to devs and dev-oriented shops
    • Puppet is Ruby-oriented. Config can get Byzantine. Safest bet for varied environments
    • Chef has a stable and well-designed layout, and while it's not quite up to the level of Puppet in terms of raw features, it's a very capable solution. Chef may pose the most difficult learning curve to administrators who lack significant programming experience, but it could be the most natural fit for development-minded admins and development shops.
  • Salt and Ansible have historically more attuned to the needs of system administrators
  • Ansible is easy to set up and run, and will work well in a shop with lots of Linux and Unix systems
  • Salt is the sleekest and most robust of the four, and like Ansible it will resonate with sys admins. Highly scalable and quite capable, Salt is hamstrung only by the Web UI.
  • Both are getting better, and may actually be worth checking out as initial CM tools, see (04Aug2014) Moving away from Puppet: SaltStack or Ansible?

Continuous Integration

Jenkins is an Open Source fork (done in late 2010/early 2011) of Hudson, which in turn outstripped Cruise Control in 2007 or so.

TeamCity seems preferred to Jenkins by many (of those willing to pay money for CI), but Jenkins still actively used and supported and worth checking out.

Containers

LXC

Linux containers (LXC etc), aim at providing a vendor/distro-neutral execution environment for Linux software.

v1.0 in Feb 2014.

Docker

  • "Containerisation" / "OS-Level Virtualisation".
  • Standardised software containers for Linux. Can run on Windows/OSX machines (but code is still bound to Linux).
  • v0.9 (March 2014) introduced their own container ("libcontainer") as an optional alternative to LCX

Rocket

Launched by CoreOS in Dec 2014 as an open source alternative to Docker, with an open "App Container" spec

Kubernetes

Other technologies