githubuniverseworkshops/GitHub-Actions-Planet-GitHubUniverse2021

DevOps - Infrastructure continent

bryantson opened this issue · 1 comments

Welcome to DevOps - Infrastructure continent

7_DevOpsAppdev

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.

image

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.

image

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.

image

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.

image

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.

BuildCICDValuesStream

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 resources
  • action-terraform-azure.yml: Terraform script to provision Azure resources

All the credentials are stored in GitHub Secrets

⏭️ After you are done, you can close this issue to move forward to next one.

Congratulation. You are done with DevOps - Infrastructure continent

image

Let's move to the next issue