DevOps - Infrastructure continent
bryantson opened this issue · 1 comments
Welcome to DevOps - Infrastructure continent
Dangerous beasts roam and lurk among two DevOps continents, but the treasures come to those who dare to venture. DevOps continents are for those who truly want to reveal the treasures what GitHub Actions can do.
Your mission
- Learn about DevOps and DevOps for Infrastructure
- Activity - Execute Terrform scripts through GitHub Actions to provision Azure and AWS resources
Learn about DevOps and DevOps for Infrastructure
When somebody is asked to define what DevOps is, you can will get different answers like this:
- "DevOps is not just about tools but culture"
- "DevOps is about automation, but it is not just about automation"
- "DevOps is just another hype"
Origin of term "DevOps**
To understand DevOps, it is good to understand where it got started. The story goes back to a legendary session Velocity conference: 10+ Deploys per Day: Dev and Ops Cooperation at Flickr -- you can find this video in Youtube.
After the conference, Patrick Debois, who is a co-author of a famous book The DevOps Handbook together with Gene Kim, Jez Humble, and John Willis, is said to coin the term by combining the term Dev for development with another term Ops for operation.
Is DevOps truly hyped?
Although it is maybe easy to claim that DevOps is hyped, it is hard to deny that some companies like Amazon deploys over 23,000 per day, Google deploys over 5,500 deploys per day through DevOps process.
While DevOps is not just about automation, the core tenet of DevOps depends on replacing the manual processes with the automated processes. Thus, it is impossible to talk about DevOps without mentioning CI/CD process.
Infrastructure DevOps process
Another question, though, is what to automate? It is recommended to think about infrastructure DevOps process differently from app dev DevOps process. As an infrastructure engineer—also called an operations engineer (Ops) or a DevOps engineer—you are responsible for building the environment necessary to host and run applications. Most of the time, this means a cloud environment, which can be either running on top of a virtual machine (VM) or in containers. Please see the architecture diagram below, which illustrates a general DevOps pipeline process applicable to an infrastructure engineer or an architect.
Here are some, though not all, of infrastructure DevOps activities.
- Provisioning a cluster
- Deleting a cluster
- Making a change in a cluster
- Building a VM image
- Installing packages and performing post-installation activities
- Making a change to a network in a cluster
- Provisioning storage in a cluster
- Backing up the state of a running environment
- Restoring a previously-working state of a running environment
Activity - Execute Terrform scripts through GitHub Actions to provision Azure and AWS resources
We will use two Terraform scripts to create resources for Azure and AWS. Each one requires different GitHub Action pipeline script and associated main.tf
file under devops/infra
.
action-terraform-aws.yml
: Terraform script to provision AWS resourcesaction-terraform-azure.yml
: Terraform script to provision Azure resources
All the credentials are stored in GitHub Secrets