LPI DevOps Tools Engineer Certification
Course Development Director in Content
The DevOps movement has entered the maturity stage in Information Technology. The philosophy behind DevOps is well understood at this point, and more and more tools are being developed to enable the implementation of that philosophy.
This course will prepare the prospective engineer for the LPIC DevOps Tools Engineer Certification exam. We'll take a broad look at a large number of tools that are commonly used in DevOps environments and gain a better understanding of how they enable DevOps in any enterprise environment.
Important Information about LPI Exam Discount Vouchers for 2019
Please view the following video for important information regarding LPI exam vouchers for 2019.
About This Course
In this video, you will learn about the LPI DevOps Tools Engineer Certification and what this course covers.
About The Instructor
Before we get started on the course, let's learn a little about who is teaching it!
How to Use the Linux Academy Cloud Playground for this Course
This video provides an initial walkthrough on how to access and use Linux Academy's new Cloud Playground. The new service has replaced our now deprecated "Cloud Servers" platform. It is important to note that some videos in this course may use/refer to the old "Cloud Servers" platform, so here are a few important notes to remember and use: 1) If you see the instructor using (and/or telling you to use) login credentials such as "user" or "linuxacademy" AND the password "123456" - they will no longer work. Use the specific credentials provided to you (for the server you are using) in the new Cloud Playground user interface.2) You cannot log into the Cloud Playground servers as the root user. However, you can access the root shell by using the command sudo -i. NOTE: In this course, you may see the instructor running commands as the root user. In order to follow along with those commands, you must run the sudo -i command first. Otherwise, you will get a permissions error.3) To access the servers GUI (if you provisioned a distribution that has one), you need to select "Actions" then "Graphical Shell" for your server in the Cloud Playground. NOTE: You cannot access the GUI via VNC Viewer as port 5901 is blocked. Detailed documentation on the new Cloud Playground can be found here: https://support.linuxacademy.com/hc/en-us/articles/360019096651-Cloud-Playground-FAQ
What is Vagrant?
Vagrant is a great way to ensure Dev/Prod parity. This means you will have an easier time replicating production issues in dev because they are similar environments. In this lesson, we will go over what Vagrant is, what you can use it for, as well as some of the basic commands you will be using.
Vagrant Commands Part 1
Knowing the commands is fundamental to learning any new technology. In this lesson, we will explore the commands that you will use to manage a Vagrant environment. You will learn how to generate a Vagrantfile, bring the environment online by using vagrant up as well as how do destroy the environment when you are done with it.
Vagrant Commands Part 2
Building on what we learned in Vagrant Commands Part 1, we will use the same commands to manage a Vagrant Docker environment.
Vagrantfiles Part 1
In this lesson, we will cover the purpose of the Vagrantfile as well as the basic syntax. We will then create a Vagrantfile that will be used to create a Docker Ghost blog environment.
Vagrantfiles Part 2
We've already looked at how to use a Vagrantfile to create a Docker environment. In this lesson, we will take what we've learned previously and use it to create an environment with VirtualBox.
Accessing Vagrant VMs
In this lesson, we will look at an alternative way to access a Vagrant VM other than using vagrant ssh.
Defining Multiple Machines in Vagrant
Previously, we learned how to use a Vagrantfile to create a single guest machine. In this lesson, we will learn how to create multiple VMs to build out a more realistic local dev environment.
In this lesson, we will take a look at provisioners and how to use them in our Vagrantfile. Provisioners are the easiest way to configure your guest machines to build out the environment that best suits your needs.
What are Vagrant Boxes?
In this lesson, we will discuss Vagrant Boxes and the commands that you will use to manage Vagrant Boxes.
Creating a Base Box
Vagrant Box Commands
In this lesson, we will talk about the commands to manage your Vagrant Boxes. You will learn how to list your boxes, update them when they are out of date, and how to prune out older versions.
Box File Format
In this lesson, we will untar a box file and take a look a the contents.
QUIZ: Vagrant Boxes
Packer and Cloud Init
What is Packer?
Packer is an awesome tool for automating the creation of machine images. In this lesson, we will learn the basics of Packer, the commands you will use, and the components of a Packer template.
Packer is a great tool that can be used to automate the creation of machine and container images. In this lesson, we will go through the steps of installing Packer on CentOS 7. Packer Download Page
Creating a Packer Template
In this lesson, we will automate the creation of a Docker image using Packer by creating a Packer template. We will pass in two variables using the Docker builder, configure it with some shell commands, and then tag the image when Packer completes. Note: if you are using an updated packer or node version, use the following to run the image - docker run -dt -p 80:3000 --entrypoint "/usr/local/bin/node" la/express:0.0.1 /var/code/bin/www
What is Cloud Init?
Cloud Int is a great way to configure your cloud instances when they first spin up. In this lesson, we will talk about some of the basic commands and formats that Cloud Init uses. Cloud Init Modules
QUIZ: Packer and Cloud Init
Configuration Management with Ansible, Puppet, and Chef
What is Configuration Management?
Before we jump into talking about Ansible, Puppet, and Chef, it's a good idea to explore the concept of Configuration Management and the problems it is trying to solve. In this lesson, you will learn the basic concepts of Configuration management and why you should use it. We will also have a top-level comparison of Ansible, Puppet, and Chef.
What is Puppet?
This lesson is a high-level overview of Puppet. You will learn the basic concepts of Puppet.
This lesson is a high-level overview of Chef. You will learn the basic concepts of Chef.
What is Ansible?
In this lesson, we will take a high-level look at Ansible. You will learn the basics of Ansible and its commands.
You never want to leave passwords or API keys unencrypted. This is where solutions like Ansible Vault come in. In this lesson, we will take a high-level overview of Ansible Vault.
QUIZ: Configuration Management
Docker and Kubernetes
What is Docker?
Containerization has become a very important tool in the DevOps space. In this lesson, we will go over the basics of Docker, what it is, and how it works.
In this lesson, well will start working with Docker images. You will learn the basics of how they work, and we will move on to building an image using a Dockerfile.
Because of the disposable nature of containers, we don’t want to store data in them. In this lesson, we will learn about how to use volumes for persistent storage and how to use them with our containers.
In this lesson, we will discuss Docker Networks. You will learn about the different network drivers and the purposes they serve. We will finish off the lesson with a demo on creating a user-defined network bridge.
In this lesson, we will go over the basics of how to build a Dockerfile. We will cover the various build instructions and what effect they have when building a Docker image.
What is Kubernetes?
In this lesson, we will look at Kubernetes —an open-source container-orchestration system for automating deployment—, scaling, and management of containerized applications.
In this lesson, we will go and configure our Kubernetes' Cluster using a single master and an additional node. Init Kubernetes Node: kubeadm init --pod-network-cidr=10.244.0.0/16 Install Flannel: kubectl -n kube-system apply -f / https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
Pod, ReplicaSets, and Deployments
In this lesson, you will learn about Pods, ReplicaSets, and Deployments and how to deploy them to your Kubernetes cluster.
QUIZ: Docker and Kubernetes
Installing Docker Compose
Docker Compose is a tool that helps deploy multi-container Docker applications. In this lesson, we will go and install Docker Compose on CentOS 7. curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Docker Compose Commands
In this lesson, we will look at the commands used to manage our environments created by Docker Compose. You will learn how to start, stop, restart, create, and destroy containers managed by Docker Compose.
Creating A Docker Compose File
This lesson will be an overview of how to create a docker-compose.yml file. We will cover the more common uses cases such as creating services, linking containers, creating volumes, and networks.
QUIZ: Docker Compose
Docker Swarm And Docker Machine
What is Docker Swarm?
Take your Docker knowledge to the next level. In this lesson, we will start looking into Docker Swarm. Docker Swarm is a clustering and scheduling tool for Docker containers. It allows you to establish and manage clusters of Docker nodes.
Docker Swarm Commands
Now that we know the fundamentals of Docker Swarm, we will start learning the command line basics of how to create and manage a swarm.
Creating a Docker Swarm Service
Now that we have a swarm setup, we will go and create a swarm service. docker volume create swarm-vol docker service create --name [NAME] -p 8080:80 --replicas 2 --mount source=swarm-vol,destination=/usr/share/nginx/html nginx:latest
What is Docker Machine?
Docker Machine is a tool that lets you install Docker Engine on a virtual host and manage the host with docker-machine commands.
Installing Docker Machine
In this lesson, you will learn how to install Docker Machine. Installing on MacOS: base=https://github.com/docker/machine/releases/download/v0.14.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine Installing on Linux: base=https://github.com/docker/machine/releases/download/v0.14.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo install /tmp/docker-machine /usr/local/bin/docker-machine Installing on Windows: base=https://github.com/docker/machine/releases/download/v0.14.0 && mkdir -p "$HOME/bin" && curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && chmod +x "$HOME/bin/docker-machine.exe" Git CLI
Docker Machine Commands
In this lesson, we will take a look at some of the Docker Machine commands. We will create a Docker Engine on VirtualBox and deploy a container to it. docker-machine create --driver=virtualbox vbox-test eval $(docker-machine env vbox-test)
QUIZ: Docker Swarm and Docker Machine
Modern Software Development
Do you know what REST means? How about nouns and verbs of the web? In this lesson, you will learn about how RESTful APIs work.
Service Oriented Architecture
In this lesson, we will take a high-level overview of Service Oriented Architectures.
In this lesson, you will learn about Microservices and why using them is a better option than a monolithic application.
In this lesson, we will take a look at a high-level overview of the Agile Development process. You will learn the fundamentals of what it means to be Agile.
Test Driven Development
In this lesson, we will take a look at the practice of Test Driven Development. Installing Node.JS: curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - yum -y install nodejs yum -y install gcc-c++ make
QUIZ: Modern Software Development
CI/CD and Jenkins
What is Continuous Integration
This lesson covers the concept of continuous integration (CI). Continuous integration is a critical part of any DevOps pipeline. We will define continuous integration and talk about how it can benefit you. This lesson will give you a basic understanding of the concept of continuous integration.
Continuous Delivery and Continuous Deployment
In this lesson, continuous delivery and continuous deployment are introduced. Continuous delivery and continuous deployment are important parts of how code gets into production. We will define each of these terms, talk about the differences between them, and offer some insight into why you should use them. You should understand what continuous delivery and continuous deployment are after this lesson.
What is Jenkins?
In this lesson, we will go over what Jenkins its various uses.
In this lesson, we will take a high level look at Artifact Repositories.
In this lesson, we go over installing Jenkins. Install Jenkins yum install -y java wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key yum install -y java yum install -y jenkins service jenkins start chkconfig jenkins Get admin password: cat /var/lib/jenkins/secrets/initialAdminPassword
In this lesson, we will go and install AnsiColor, Copy Artifact Plugin, Docker Slave, Docker Pipeline Plugin, Docker Build and Publish plugin, Fingerprint Plugin, Git Plugin, and NodeJS Plugin.
Setting up a Jenkins Slave
In this lesson, we will create a Jenkins slave and add it to our environment. Download Packer onto your Jenkins slave: wget https://releases.hashicorp.com/packer/1.2.4/packer_1.2.4_linux_amd64.zip
Using Parameters in a Job
In this lesson, you will learn how to create a Jenkins job that will use a build slave. This job will execute Packer to build a Docker image. Give Jenkins access to Docker Sock. usermod -a -G docker jenkins content-lpic-ot-701-packer-docker repo
Creating a Build Job to Execute Tests
In this lesson, we will create a Jenkins build job that will execute a test for a Node.JS project. TDD Project
QUIZ: CI/CD and Jenkins
What is Git?
Git is one of the most popular version control systems on the market today. In this lesson, you will learn the basics of Git and how it handles storing data.
Git Commands Line Basics
In this lesson, you will learn all the basic commands necessary for managing files in Git. This will include adding and committing files, pushing and pulling files from a remote repository, how to view the logs, and differences in changes.
Managing Files with Git
In this lesson, we will go beyond the command line basics. You will learn how an amend commits if you leave something out, delete and move files using git before better logging, revert commits without losing the history of what was reverted, and how to stash changes and then add them in for later.
Branching and Merging
In this lesson, you will learn how to create a branch, make changes to a branch, and merge those changes into another branch. We will also dive into how to rebase branches.
There are times when you need to include a vender library in your code. You can accomplish this with submodules. In this lesson, you will learn how to add and manage submodules in your Git project.
Dealing with Conflicts
When you work with other developers on the same project, there will be times when merge conflicts occur. This lesson will show you how to resolve merge conflicts in Git.
Tagging in Git
Tags are a fixed point in your repositories history and are a good way to deploy your code to production. In this lesson, you will learn how to create tags and push them to your remote repository.
Deploying Code to Production
Immutable Servers are a handy way to manage your cloud instances. In this lesson, you will learn about the concepts of immutable infrastructure and how it differs from configuration management.
In this lesson, we will learn about Blue-Green Deployments and how you can use these techniques to achieve minimal disruption to your application when rolling out a newer version. If your organization requires as close to zero downtime as possible, then Blue-Green Deployments are for you.
In this lesson, you will learn about Canary Deployments and how you can use these techniques to achieve minimal disruption to your applications when deploying to production.
QUIZ: Deploying Code to Production
Standard Components and Platforms for Software
Content Delivery Network
Content Delivery Networks are responsible for serving up the majority of the Internet's content. In this lesson, you will learn the basics of how CDNs work and why you should use them.
Cloud Foundry is an open source cloud platform as a service on which developers can build, deploy, and run their applications. In this lesson, we will take a thousand foot view of Cloud Foundry.
OpenStack is an open-source infrastructure-as-a-service (IaaS) for cloud computing. In this lesson, we will take a thousand foot view of OpenStack and its components.
QUIZ: Standard Components and Platforms for Software
Cross Site Scripting, ACID and CAP Theorem
Cross Site Scripting
Cross Site Scripting represents 47% of website vulnerabilities. In this lesson, you will learn about the types of vulnerabilities and how to prevent them.
Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources on a web page to be requested from another domain. In this lesson, you will learn about CORS headers and how to add them to a Node.JS application. CORS example code: git clone https://github.com/linuxacademy/content-lpic-ot-701-cors.git JS Bin
In this lesson, we will learn about Cross-Site Request Forgery attacks and how we can try to stop them.
Consistency, Availability, and Partition tolerance; pick two. In this lesson, you will learn about CAP theorem and how distributed data store can only have two out of the three guarantees.
ACID and BASE
In this lesson, you will learn about ACID and BASE and how they pertain to relational and NO-SQL databases.
QUIZ: Cross Site Scripting, ACID and CAP Theorem
Prometheus and Logstash
What is Prometheus?
Monitoring your applications and systems is an important part of DevOps. In this lesson, you will learn about Prometheus; a systems and service monitoring tool.
What is Logstash?
Logstash is an open source tool for collecting, parsing, and storing logs for future use. In this lesson, you will learn about Logstash and the stages that make up the Logstash pipeline: input, filters, and outputs.
QUIZ: Understand Prometheus and Logstash