1.5 Compare and contrast cloud and virtualization concepts and technologies Flashcards
Objective 1.5: Compare and contrast cloud and virtualization concepts and technologies
Describe Virtualization
virtualization is a technology that allows a host operating system to run a separate instance of an operating system in an isolated wrapper that lets it impersonate a real machine
What is a hypervisor?
A hypervisor is code that separates a host operating system from a virtual machine, and it is used to create, destroy, and manage virtual machines
Slices or chroot
This refers to the ability to slice up or put in a root jail applications that must be shared between users or for security domains. (Using a root jail means restricting an application such as Apache to make it believe that a virtual root of a file system exists.) Solaris’s zones are a superset of this method
Full virtualization
This method, which is used by VMware, Parallels, KVM, and XEN, involves what can be described as full-system virtualization
Containers (old)
LXC (Linux Containers) is an early form of what would later become Docker’s offering. OpenVZ and Virtuozzo are somewhat similar in that one uses portions of the OS to create an environment and the other creates virtual private servers to perform the task
Containers (new)
Docker is the predominant method used today to wrap up applications and their dependent services into a container or single addressable instance of partial operating system virtualization commonly called a container
Amazon Machine Images (AMI)
an AMI as a template that includes a system root, an operating system, and whatever else you want to have included in the AMI.
An AMI is a bit like a frozen dinner: You can “thaw” one out and have it piping hot and ready in just a few seconds, but it’s prepackaged, and if you don’t like or want it customized, you have to rework it and then package it up all over again
Cloud-Init
Cloud-init is a unique tool. You can use it by itself, and it will allow you to do a lot with the customization of your cloud VM installs. However, its real strength lies in being the initial bootstrap tool that prepares the VM environment for the more feature-rich tools, such as Chef and Puppet
Puppet
Its key strength is in getting systems ready for serving what they are designed to serve. Its downside is that it’s a centralized system, and the failure of the central management node can be catastrophic. Puppet is also prone to bottlenecks due to its architecture.
Puppet has its own domain-specific language, and if you have learned it, Puppet is fairly easy to use. The Puppet language is a nonstandard implementation of the Ruby language with a lot of changes
Chef
The designers of Puppet have learned a lot of lessons that have enabled them to make Chef a more viable, scalable, and healable infrastructure tool than Puppet. Designed from the get-go as a distributed tool that can use a central repository of objects, Chef doesn’t depend on that repo being constantly available to do its job.
Chef’s domain language is standards compliant with the Ruby language, so when a DevOps engineer gets to a point where the built-in implementation can’t handle a configuration issue, he or she can use the full Ruby language to solve the issue.
Chef is also designed to be massively scalable; it can handle upward of 250,000 nodes, which is another improvement on the Puppet tool.
Anaconda/Kickstart
Kickstart uses a single file that contains all the configuration and automated responses necessary to perform a hands-off installation of a Linux
Kickstart requires the following components:
Installation media (either locally or on a network resource)
Kickstart file (the default is anaconda-ks.cfg)
Boot method
Kickstart file
Command: This section contains the commands to install the distribution, including answers, if required
Packages: This section lists the package selections to be installed, in a stanza that begins with %packages and ends with %end. The packages to be installed can be in groups, or they can appear as individual packages. Groups are prefaced with an @, such as @Sound and Video, whereas an individual package would just be referenced by the short package name, such as vim.
Pre and post: These sections contain commands and functions to perform before installation and after installation. These sections are stanza based, beginning with %pre and ending with %end. It’s important to make sure that the Pre and Post sections are at the end of an Anaconda or Kickstart file
VM Templates
A template is usually not a bootable or usable VM but a master version of a VM that is used to make a copy that can be customized into a VM for use in a particular environment
Open Virtual Appliance (OVA)
Open Virtual Appliance (OVA) file is effectively a bundling of one or more VMs together in an installable/runnable package such as a virtual appliance that might include a VM for NGINX and another for MySQL, packaged together and usable very quickly in an environment such as VMware
Open Virtualization Format (OVF)
An Open Virtualization Format (OVF) file is a compressed package that contains any needed certificates and disk image files and that is similar in format to a TAR archive file. An OVA file can contain multiple OVF files, and each OVF file effectively represents a VM instance
YAML Ain’t Markup Language
YAML is a superset of (or encompasses) JSON. YAML is mainly used for configuration files with a stanza-based format of hierarchical items and is imminently human friendly and readable.
YAML also allows for a larger feature set, as well as the ability to include comments for documentation and clarity
JSON
JSON is used as a way to serialize data. It’s simpler in format than YAML and can be used to conduct data exchange and transfer between APIs and their requesting applications or services.
JSON is a subset of YAML, and it can be parsed with a YAML interpreter or parser, so you can use YAML and JSON together for your templating needs
Container Images
A container image is a binary file that has within it all the necessary components to run as a Docker container instance. Container images, like VM templates, make deploying many multiple instances of a given configuration a lot simpler