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).
Accounts:
Software:
-
Some linux-based environment (like Ubuntu, Fedora, Suse etc.)
-
Some software for managing Azure (like Azure CLI, Azure Powershell, Azure Cloud Shell etc.)
- Deploy a Linux environmet (could be a Virtual Machine, Container Instance, Windows Subsystem for Linux etc.)
- Install some webserver and reconfigure it so it would run on a custom port (like 8088)
- Configure and apply a custom response page for the webserver (something like "Hello World!")
- Introduction to Git
- Learn Git Branching
- Introduction to GitHub in Visual Studio Code
- Working with Git in Visual Studio Code
- Fork this repository
- Clone forked repository to your local environment (could be PC, Virtual Machine, WSL etc.)
- Locally create a new branch and modify README.md file in it (by appending it with "Hello World!" line)
- Commit and push all changes to remote Github repository (forked one, not original one)
- What is Python?
- LearnPython.org interactive Python tutorial
- Perform mathematical operations on numeric data in Python
- An Introduction to Interactive Programming in Python
- What is virtualization?
- What are containers?
- What is Docker?
- Introduction to Docker containers
- Containers for Beginners
- Create Dockerfile (base image can be any prefferable Linux image) in which a webserver is installed and started
- 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)
- Validate that you can access the webserver
- Publish your image to your Docker Hub Registry (for that you'll need account in Docker Registry)
- Create a new Github repository.
- Create and configure Github Action, which builds Dockerfile and publishes it in Docker Hub Registry once every day.
- Services and identity types of Azure AD
- Service Principals vs Managed Identities
- Create a service principal
- Manage secrets with Azure Key Vault
- Azure role-based access control
- Register a new application in Azure Active Directory.
- Generate and store a secret for the application.
- 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.
- 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.
- Deploy resources using ARM template
- Use Azure Key Vault to pass secure parameters
- Deploy ARM templates by using GitHub Actions
- Create a new Key Vault and add a secret with some value, which will be used as virtual machines password
- Deploy DNS Forwarder with your own parameters file, which for an user password would use Key Vault refference
- Check the result by logging in VM using a password from the Key Vault
- Fundamentals of computer networking
- Connect on-prem to Azure using VPN Gateway
- Connect on-prem to Azure using ExpressRoute
- Design an IP addressing schema
- Intro to VNet peering
- Hub and Spoke topology
- Design and implement private access to Azure Services
- Create two VNets with different IP ranges (which doesn't overlap) and a storage account
- Expose storage account's fileshare privately (using private endpoint) on both networks
- Establish between networks VNet peering
- Create two virtual machines - one in the first network with public IP and another in the second network without public IP
- Connect remotely to publicly available machine and using it connect to the privately available VM
- From both VMs resolve privately exposed fileshare (using nslookup or any other prefferable way) and validate that in both cases IP is private
- Choose the right integration and automation services in Azure
- Configure Azure Container Instances
- Publish Azure Functions by using Azure Functions Core Tools
- Create a Python function in Azure from the command line
- Monitor GitHub events by using a webhook with Azure Functions
- Create a function on Linux using a custom container
- Deploy function for showing your public IP and check how it works
- Configure the same function but as a custom Docker container, deploy that image to Azure Container Instance with public IP address and exposed HTTP port and validate the result
- Introduction to Azure DevOps
- Implement CI/CD with Azure DevOps
- Host your own build agent in Azure Pipelines
- Create a new organization and project in Azure DevOps.
- Deploy and configure self-hosted build agent on Azure Container Instance.
- Use self-hosted agent for deploying a Python web app.
- Ansible Introduction
- Ansible Review
- Run web server using Ansible
- Ansible User Guide
- Configure Ansible on an Azure VM
- Install Ansible with Azure modules
- Choose some ARM template from Azure Quickstart Templates and deploy it using azure_rm_deployment
What is Infrastructure as Code (IaC)?
Configure and deploy your own IaC