Skip to content

groovy-sky/devops-101

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 

Repository files navigation

DevOps-101

Introduction

This repository is designed to help anyone with very little or no computing background learn the basics of DevOps. Course is self-paced and when you’re finished with it, you’ll know how to manage resouces in Azure Cloud, using Infrastructure as Code approach.

Learning path is just a collection of publicly available courses, grouped by a specific topic. Some section have homework part - you can use it for a self-evalution.

if you have any questions regarding this tutorial, please do not hesitate to contact me (using Reddit,Linkedin or by pushing pull request to this repository).

Prerequisites

Accounts:

Software:

Learning Path

DevOps

  1. The Origins of DevOps
  2. Guide to DevOps
  3. DevOps Model from Amazon

Linux

  1. Running Windows Subsystem for Linux
  2. Linux Fundametals

Linux Homework

  1. Deploy a Linux environmet (could be a Virtual Machine, Container Instance, Windows Subsystem for Linux etc.)
  2. Install some webserver and reconfigure it so it would run on a custom port (like 8088)
  3. Configure and apply a custom response page for the webserver (something like "Hello World!")

Git

  1. Introduction to Git
  2. Learn Git Branching
  3. Introduction to GitHub in Visual Studio Code
  4. Working with Git in Visual Studio Code

Git Homework

  1. Fork this repository
  2. Clone forked repository to your local environment (could be PC, Virtual Machine, WSL etc.)
  3. Locally create a new branch and modify README.md file in it (by appending it with "Hello World!" line)
  4. Commit and push all changes to remote Github repository (forked one, not the original)

Python

  1. What is Python?
  2. LearnPython.org interactive Python tutorial
  3. Perform mathematical operations on numeric data in Python
  4. [Optional][Advanced] An Introduction to Interactive Programming in Python

Containerisation

  1. What is virtualization?
  2. What are containers?
  3. What is Docker?
  4. Introduction to Docker containers
  5. Containers for Beginners

Containerisation Homework

  1. Create Dockerfile (base image can be any prefferable Linux image) in which a webserver is installed and started
  2. Build an image from the Dockerfile (for that you'll need installed Docker Engine) and run the container (don't forget to expose port for HTTP)
  3. Validate that you can access the webserver
  4. Publish your image to your Docker Hub Registry (for that you'll need account in Docker Registry)

Continuous Integration (CI)

  1. Continuous Integration Explained
  2. Create your first GitHub Action

Continuous Integration Homework

  1. Create a new Github repository.
  2. Create and configure Github Action, which builds Dockerfile and publishes it in Docker Hub Registry once every day.

Azure

Intro

  1. Introduction to Azure fundamentals
  2. Create an Azure account
  3. Manage services with the Azure portal

Access and Security

  1. Services and identity types of Azure AD
  2. Service Principals vs Managed Identities
  3. Create a service principal
  4. Manage secrets with Azure Key Vault
  5. Azure role-based access control
Access and Security Homework
  1. Register a new application in Azure Active Directory.
  2. Generate and store a secret for the application.
  3. Create a Key Vault and grant access to the application: on resouce level - Contributor role, on Vault level - policy which would allow to create and read secrets.
  4. Using non-GUI approach (Powershell, Azure CLI etc.): authenticate to Azure using application's credentials; create a new secret, read it, delete the whole Key Vault.

ARM Templates

  1. Deploy resources using ARM template
  2. Use Azure Key Vault to pass secure parameters
  3. Deploy ARM templates by using GitHub Actions
ARM Templates Homework
  1. Create a new Key Vault and add a secret with some value, which will be used as virtual machines password
  2. Deploy DNS Forwarder with your own parameters file, which for an user password would use Key Vault refference
  3. Check the result by logging in VM using a password from the Key Vault

Networks

  1. Fundamentals of computer networking
  2. Connect on-prem to Azure using VPN Gateway
  3. Connect on-prem to Azure using ExpressRoute
  4. Design an IP addressing schema
  5. Intro to VNet peering
  6. Hub and Spoke topology
  7. Design and implement private access to Azure Services
Networks Homework
  1. Create two VNets with different IP ranges (which doesn't overlap) and a storage account
  2. Expose storage account's fileshare privately (using private endpoint) on both networks
  3. Establish between networks VNet peering
  4. Create two virtual machines - one in the first network with public IP and another in the second network without public IP
  5. Connect remotely to publicly available machine and using it connect to the privately available VM
  6. From both VMs resolve privately exposed fileshare (using nslookup or any other prefferable way) and validate that in both cases IP is private

Serverless

  1. Choose the right integration and automation services in Azure
  2. Configure Azure Container Instances
  3. Publish Azure Functions by using Azure Functions Core Tools
  4. Create a Python function in Azure from the command line
  5. Monitor GitHub events by using a webhook with Azure Functions
  6. Create a function on Linux using a custom container
Serverless Homework
  1. Deploy function for showing your public IP and check how it works
  2. [Optional][Advanced] Configure the same function but as a custom Docker container, deploy that image to Azure Container Instance with public IP address (with exposed HTTP port) and validate the result

Azure DevOps

  1. Introduction to Azure DevOps
  2. Implement CI/CD with Azure DevOps
  3. Host your own build agent in Azure Pipelines

Azure DevOps Homework

  1. Create a new organization and project in Azure DevOps.
  2. Deploy and configure self-hosted build agent on Azure Container Instance.
  3. Use self-hosted agent for deploying a Python web app.

Ansible

  1. Ansible Overview
  2. Ansible Introduction
  3. Run web server using Ansible
  4. Ansible User Guide
  5. Configure Ansible on an Azure VM

Ansible Homework

  1. Install Ansible with Azure modules
  2. Choose some ARM template from Azure Quickstart Templates and deploy it using azure_rm_deployment

Infrastructure as Code

What is Infrastructure as Code (IaC)?

Infrastructure as Code Homework

Configure and deploy your own IaC

Next steps

Congratulations! You have successfully completed this course! Now you can explore Azure by yourself. If you still wondering where to start, check following resources: