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 the original)
- What is Python?
- LearnPython.org interactive Python tutorial
- Perform mathematical operations on numeric data in Python
- [Optional][Advanced] 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
- [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
- 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 Overview
- Ansible Introduction
- 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
Congratulations! You have successfully completed this course! Now you can explore Azure by yourself. If you still wondering where to start, check following resources: