Introduction to GitOps
GitOps is a way of implementing continuous deployment for cloud native applications.
It focuses on a developer-centric experience when operating infrastructure,
by using tools developers are already familiar with, including Git and Continuous Deployment tools.
- What is GitOps?
- Why should you use GitOps?
- How does GitOps work?
- GitOps Services and Tooling: Git(Hub), Azure DevOps, Kubernetes, Terraform, Flux, ...
Azure Resource Manager Templates
To implement infrastructure as code for your Azure resources, ARM templates can be used.
The template is a JSON file that defines the infrastructure and configuration for your project
using a declarative syntax.
- Infrastructure as Code
- Authoring ARM Templates
- Parameters, Variables, Resources, Output
- Nested Templates
- Validating ARM Templates: Test Toolkit, Pester
- LAB: Deploy Azure Resource Resources with ARM Templates
Terraform is an open-source infrastructure as code tool that allows you to manage many different
cloud services. It uses a simplified syntax which allows for concise descriptions of your resources.
- Terraform Features
- Configuration and Providers
- Variables, Resources, Secrets
- Terraform State
- LAB: Deploy Azure Resources with Terraform
Desired State Configuration (DSC)
Automate the configuration of your VMs.
- Benefits of Desired State Configuration
- DSC Components: Configuration, Resources, Compilation
- Enact Your Configuration: Push or Pull mode
- Using Azure Automation for DSC
The Bicep Language
Bicep is a transparent abstraction over ARM template JSON that significantly reduces the
complexity of your templates. During deployment, the Bicep CLI converts a Bicep file into
an ARM template
- Benefits of Bicep Versus Other Tools
- Install Bicep Tools
- Author Resources
- Parameters, Variables, Outputs
- Validate Files with Bicep Linter
- Migrate from ARM Templates to Bicep
- LAB: Deploy Azure Resources with Bicep
Using Git with GitHub
Sources are probably the most important part in any software project and we need a way to keep track of all sources and all changes.
Here you will learn to use Git(Hub) to store the assets, such as templates (ARM, Terraform, ...), needed to deploy your infrastructure.
- Version Control concepts
- Distributed Source Control with Git and GitHub
- Creating a local repository
- Cloning a remote repository
- Staging files
- Committing files
- Adding branches to your workflow
- Branching Strategies
- Using Forks
- Merge vs. Rebase
- Synchronizing with a remote repository
- Pull Requests
- LAB: Working with Git and GitHub
Continuous Integration with GitHub Actions
To build quality software, and to limit nasty integration problems at the end of the project, doing a daily build is long
regarded as a best practice. GitHub Actions makes building daily very easy through workflows.
You'll learn how to manage the build, do desktop and web builds, and how you can setup a continuous integration environment.
You'll then learn how to customize the build process to perform all your build steps including running unit tests,
creating custom build actions, generating setup programs and deploying to staging servers.
- What is GitHub Actions?
- Doing Continuous integration
- What are jobs and steps?
- Using variables
- Defining and using secrets
- Integrating with Azure using Publish Profiles or Service Principals
- LAB: Setting up a build definition to build and test your deployment target
- LAB: Deploying a SQL Server database using GitHub Actions and ARM templates
GitHub Workflow Runners
With GitHub actions someone needs to do the work of building and deploying code and infrastructure.
Theses are known as runners. Here we will look at runners and how to setup your own runner.
- Understanding Runners
- Using GitHub hosted runners
- Setting up a Windows hosted runner
- Setting up a Linux hosted runner
Continuous Deployment with GitHub Actions
With continuous deployment you can automatically setup a machine in a consistent state, whenever you want.
Not only can you deploy your application, but you can also setup your infrastructure.
- Release management and continuous deployment
- Deploying Artifacts
- Caching Dependencies
- Using environments during deployment
- Triggering workflows
- LAB: Deploying a web site to an Azure WebApp using Github Actions
- LAB: Deploying a virtual machine using GitHub Actions and Terraform
- LAB: GitHub Actions CI/CD using Bicep
In the past, managing an IT infrastructure was a hard job. System administrators had to manually manage
and configure all of the hardware and software that was needed for the applications to run.
However, in recent years, trends like “Infrastructure as Code” improved the way organizations design, develop, and maintain their IT infrastructure dramatically.
The core idea of “Infrastructure as Code” is having a declarative description of the desired infrastructure and an automated process to make the production environment
match the described state. In this course, you will learn about the tools like Terraform, Git & Azure DevOps that will help you to setup this kind of deployment
for your infrastructure.
IT Pros who are interested in learning how to deploy their cloud infrastructure in an easy, fully automated way.