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
- 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
LAB: Deploying a SQL Server database using GitHub Actions and ARM
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
IT Pros who are interested in learning how to deploy their cloud
infrastructure in an easy, fully automated way.