Skip to content

liatrio/devops-bootcamp

Repository files navigation

docs/1-introduction/1.1-devops-defined.md docs/1-introduction/1.2-liatrio-and-devops.md docs/1-introduction/1.2.1-dojo.md docs/1-introduction/1.3.1-unix.md docs/1-introduction/1.3.2-vim.md docs/1-introduction/1.3.3-installations.md docs/1-introduction/1.3.4-passwords-and-keys.md docs/1-introduction/1.3.5-networking.md docs/1-introduction/1.4-external-resources.md docs/2-Github/2.2-Actions.md docs/2-Github/2.3-Projects.md docs/2-Github/2.4-APIs.md docs/2-Github/2.5-Security.md docs/3-virtual-machines-containers/3.1-golden-images.md docs/3-virtual-machines-containers/3.2-local-development.md docs/3-virtual-machines-containers/3.3-managing-infrastructure.md docs/3-virtual-machines-containers/3.4-containers.md docs/3-virtual-machines-containers/3.5.1-docker-compose.md docs/3-virtual-machines-containers/3.5.2-kubernetes.md docs/4-cloud-computing/4.0-overview.md docs/4-cloud-computing/4.1.1-aws.md docs/4-cloud-computing/4.1.2-azure.md docs/4-cloud-computing/4.2.1-s3-cloudfront.md docs/4-cloud-computing/4.2.2-ec2.md docs/4-cloud-computing/4.2.3-auto-scaling.md docs/4-cloud-computing/4.2.4-aws-packer.md docs/4-cloud-computing/4.2.5-lambda.md docs/4-cloud-computing/4.2.6-ecs.md docs/4-cloud-computing/4.3.1-storage-accounts.md docs/4-cloud-computing/4.3.2-virtual-machines.md docs/4-cloud-computing/4.3.3-vmss.md docs/4-cloud-computing/4.3.4-az-packer.md docs/4-cloud-computing/4.3.5-aci.md docs/4-cloud-computing/4.3.6-aks.md docs/4-cloud-computing/4.3.7-app-service.md docs/5-software-development-practices/5.1-overview.md docs/5-software-development-practices/5.2-jira.md docs/5-software-development-practices/5.3.1-branching-merging.md docs/5-software-development-practices/5.3.2-git.md docs/5-software-development-practices/5.3.3-github.md docs/5-software-development-practices/5.4-pairprogramming.md docs/5-software-development-practices/5.5.1-unit-testing.md docs/5-software-development-practices/5.5.2-functional-testing.md docs/5-software-development-practices/5.5.3-code-styling.md docs/5-software-development-practices/5.5.4-code-coverage.md docs/5-software-development-practices/5.5.5-test-automation.md docs/5-software-development-practices/5.5.6-sonarqube.md docs/5-software-development-practices/5.5.7-code-review.md docs/5-software-development-practices/5.6-hello-devops.md docs/6-release-management/6.1-versioning.md docs/6-release-management/6.2.1-maven.md docs/6-release-management/6.2.2-maven-integration.md docs/6-release-management/6.2.3-make.md docs/6-release-management/6.2.4-npm.md docs/6-release-management/6.2.5-go-releaser.md docs/6-release-management/6.3.1-docker.md docs/6-release-management/6.3.2-helm.md docs/7-infrastructure-configuration-management/7.1.1-terraform-getting-started.md docs/7-infrastructure-configuration-management/7.1.2-terraform-backends.md docs/7-infrastructure-configuration-management/7.1.3-terraform-modules.md docs/7-infrastructure-configuration-management/7.1.4-terraform-providers.md docs/7-infrastructure-configuration-management/7.2-ansible.md docs/8-kubernetes-container-orchestration/8.1-kubectl-ref.md docs/8-kubernetes-container-orchestration/8.2-volumes.md docs/8-kubernetes-container-orchestration/8.3-probes.md docs/8-kubernetes-container-orchestration/8.4-rbac.md docs/8-kubernetes-container-orchestration/8.5-hpas.md docs/8-kubernetes-container-orchestration/8.6-webhooks.md docs/8-kubernetes-container-orchestration/8.8-hello-k8s.md docs/9-platform-engineering/9.0-overview.md docs/9-platform-engineering/9.1-backstage.md
category estReadingMinutes
Fundamentals
30
category estReadingMinutes
Fundamentals
5
category estReadingMinutes
Fundamentals
5
category estReadingMinutes
Fundamentals
30
category estReadingMinutes exercises
Fundamentals
15
name description estMinutes technologies
hello vim
create a file in Vim
5
Vim
category estReadingMinutes
Fundamentals
10
category estReadingMinutes exercises
Fundamentals
10
name description estMinutes technologies
hello ssh
create ssh keypair and ssh to a host
15
ssh
category estReadingMinutes exercises
Fundamentals
10
name description estMinutes
hello network
explore the network of your local computer
15
category estReadingMinutes
Fundamentals
50
category estReadingMinutes exercises
CI/CD
20
name description estMinutes technologies
Augment basic workflow
Take a basic workflow and update it to include a few common things you'll see inside GitHub Actions
60
GitHub Actions
name description estMinutes technologies
Going Deeper
Take the newly improved workflow and use different methods to achieve the same thing. Introduces new important concepts/actions
120
GitHub Actions
name description estMinutes technologies
Consolidate what we have and make it reusable
Now we go one step further and take one of our jobs and make it into a composite action then take our whole workflow and bundle it into a reusable version
240
GitHub Actions
category estReadingMinutes exercises
Agile Development
5
name description estMinutes technologies
Create your own Project
Play around with GitHub Projects and get used to using its many features and interfaces to organize your work.
80
GitHub Projects
category estReadingMinutes exercises
Fundamentals
30
name description estMinutes technologies
Interact with GitHub using its two available APIs
Create and retrieve resources in GitHub using the REST and GraphQL APIs. Get some experience using them and compare the two approaches.
180
APIs
Javascript
category estReadingMinutes exercises
Fundamentals
30
name description estMinutes technologies
Code-scanning
Setup code-scanning in your own repository and view its results in the Security tab
30
GitHub Security
name description estMinutes technologies
Dependabot
Setup dependabot alerts, version and security updates
20
GitHub Security
name description estMinutes technologies
Code-scanning
Setup secret-scanning in your own repository and see how it prevents you from committing secrets
20
GitHub Security
category estReadingMinutes exercises
Virtualization
15
name description estMinutes technologies
Hello VMWare Fusion
Configure a VM with VMWare Fusion. Install some software and configure it for SSH
90
VMWare Fusion
Debian
name description estMinutes technologies
hello Packer
Use Packer to create an OVF configured identically to the VM you configured in exercise 1
210
VMWare Fusion
Packer
Debian
category estReadingMinutes exercises
Virtualization
15
name description estMinutes technologies
Packer to Vagrant
Use Packer to create an image compatible with Vagrants Base Box requirements. Leverage a Packer provisioner to add ssh key, install dependencies and tools, leverage Packer post-processor to output an vmx and a vagrant box
420
Vagrant
Packer
Debian
category estReadingMinutes exercises
Virtualization
10
name description estMinutes technologies
GitHub self-hosted runner and Nexus on VMs
Create a VM from your golden image and install and configure Nexus OSS and deploy an artifact to that VM from a GitHub Action
390
Vagrant
Debian
GitHub Actions
Nexus OSS
category estReadingMinutes exercises
Containerization
20
name description estMinutes technologies
Hello Containers
Complete Docker's 'Hello World'
30
Docker
name description estMinutes technologies
Self-hosted GitHub Action to Nexus containerized
Containerize a self-hosted GitHub Action and Nexus and build a pipeline that pushes a PetClinic build artifact from one container to the other.
150
Docker
GitHub Actions
Nexus OSS
category estReadingMinutes exercises
Container Orchestration
5
name description estMinutes technologies
Docker Compose GitHub Actions and Nexus
Create a compose file that spins up your GitHub Actions and Nexus containers, exposing ports, and using volumes for persistent storage
120
Docker
Docker Compose
GitHub Actions
Nexus OSS
category estReadingMinutes exercises
Container Orchestration
15
name description estMinutes technologies
Hello Minikube
Complete the 'Hello Minikube' tutorial
60
Kubernetes
name description estMinutes technologies
Kind cluster GitHub Actions and Nexus
Create a Kind cluster running your GitHub Actions and Nexus containers
600
Kubernetes
GitHub Actions
Nexus OSS
category estReadingMinutes
Cloud Computing
30
category estReadingMinutes
Cloud Computing
60
category estReadingMinutes
Cloud Computing
30
category estReadingMinutes exercises
Cloud Computing
20
name description estMinutes technologies
Hello S3
Host a static website in s3 publicly
150
AWS S3
AWS
name description estMinutes technologies
Hello Cloudfront
Create a CloudFront distribution for your s3 website
60
AWS S3
AWS
CloudFront
category estReadingMinutes exercises
Cloud Computing
30
name description estMinutes technologies
Hello EC2
Create EC2 VMs and configure one as a Jenkins controller server and the other as a Jenkins agent registered to the server.
240
AWS
EC2
Jenkins
category estReadingMinutes exercises
Cloud Computing
20
name description estMinutes technologies
Create EC2 instance with User Data
Create an EC2 instance running Spring PetClinic.
240
AWS
EC2
name description estMinutes technologies
Setup a Network Load Balancer
Create a Load Balancer in AWS and register 2 EC2 configured to host a web application via User Data.
60
AWS
EC2
AWS ELB
name description estMinutes technologies
Launch Templates
Create a Launch Template that will create EC2 instances configured like the vm you made in exercise 1
60
AWS
EC2
AWS Launch Templates
name description estMinutes technologies
Auto Scaling Groups
Create an AutoScaling group leveraging the Launch Template you made in exercise 3
60
AWS
EC2
AWS Launch Templates
AWS Auto Scaling Groups
AWS ELB
category estReadingMinutes exercises
Cloud Computing
20
name description estMinutes technologies
Creating a custom AMI
Create an AMI with Packer that creates a provisioned machine like the one you made in exercise 1 from 4.2.3. Create a Launch Template and Auto Scaling group to leverage your new AMI via the AWS cli
180
AWS
EC2
AWS Launch Templates
AWS Auto Scaling Groups
Packer
category estReadingMinutes exercises
Cloud Computing
20
name description estMinutes technologies
Creating a Lambda function with a trigger
Create a Lambda function that sets up an s3 bucket and a DynamoDB, downloads a csv file, and then uses a python script to parse the csv and push all the data into DynamoDB.
480
AWS
AWS Lambda
AWS S3
AWS DynamoDB
category estReadingMinutes exercises
Cloud Computing
20
name description estMinutes technologies
Creating an EKS cluster
Deploy the SockShop Demo on EKS
480
AWS
AWS EKS
Kubernetes
name description estMinutes technologies
Adding an autoscaler to your cluster
Adding an autoscaler to your cluster
240
AWS
AWS EKS
Kubernetes
name description estMinutes technologies
Create a ClusterIP service
Create a ClusterIP service
60
AWS
AWS EKS
Kubernetes
name description estMinutes technologies
Create a NodePort Service
Create a NodePort Service
60
AWS
AWS EKS
Kubernetes
name description estMinutes technologies
Create a LoadBalancer Service
Create a LoadBalancer Service
30
AWS
AWS EKS
Kubernetes
name description estMinutes technologies
Add an Ingress controller and your cluster
Add an Ingress controller and your cluster
60
AWS
AWS EKS
Kubernetes
category estReadingMinutes exercises
Cloud Computing
10
name description estMinutes technologies
Static website on Azure Blob Storage
Create a basic Angular application and deploy it to an Azure Blob Storage with an Azure CDN.
240
Azure
Azure Blob Storage
Azure CDN
Angular
category estReadingMinutes exercises
Cloud Computing
10
name description estMinutes technologies
Create Azure VM with NGINX via cloud-init
Create an Azure VM and configure it as an NGINX web server via cloud-init file.
360
Azure
Azure VM
NGINX
cloud-init
category estReadingMinutes exercises
Cloud Computing
15
name description estMinutes technologies
Create VMSS and serve content from Azure Storage Account
Create a VMSS and serve content from an Azure Storage Account. Do this via the cli, deploying a simple node web app and provision the VM's with cloud-init.
330
Azure
Azure VMSS
Azure Storage Account
Node.js
cloud-init
category estReadingMinutes exercises
Cloud Computing
5
name description estMinutes technologies
Create Shared Image Gallery with custom Azure VM image
Create a Shared Image Gallery and put a custom Azure VM image in it. Then redo the exercise in 4.3.2 with the custom image.
360
Azure
Packer
Shared Image Gallery
Azure VM
category estReadingMinutes exercises
Cloud Computing
10
name description estMinutes technologies
Deploy Node app using Docker, ACR, and ACI
Create a docker image for your Node application. Push your image into ACR. Then deploy your image via ACI.
360
Azure
Azure Container Instances (ACI)
Azure Container Registry (ACR)
Docker
Node.js
category estReadingMinutes exercises
Cloud Computing
10
name description estMinutes technologies
Deploy Node app to AKS using ACR image
Create an AKS cluster and deploy the Node application via the image uploaded to ACR made in the previous section.
240
Azure
Azure Kubernetes Service (AKS)
Azure Container Registry (ACR)
Node.js
category estReadingMinutes exercises
Cloud Computing
10
name description estMinutes technologies
Deploy Simple Web Application to App Service
Create A Web App and Scale and Monitor
240
Azure
Azure App Service
Azure CLI
category estReadingMinutes
Agile Development
90
category estReadingMinutes
Agile Development
30
category estReadingMinutes
Version Control
15
category estReadingMinutes exercises
Version Control
25
name description estMinutes technologies
Git Basics
Learn the basics of Git.
30
Git
name description estMinutes technologies
Branching and Merging
Practice branching and merging with Git.
30
Git
name description estMinutes technologies
Merge Conflicts
Learn how to resolve merge conflicts in Git.
30
Git
name description estMinutes technologies
Removing Secrets
Learn how to remove secrets from Git history.
30
Git
category estReadingMinutes exercises
Version Control
25
name description estMinutes technologies
Fork and Merge
Practice forking and merging on GitHub
30
Git
GitHub
category estReadingMinutes exercises
Agile Development
20
name description estMinutes technologies
Pair Programing
Using 'Live Share' or some equivillant try pair programming a 'Hello World' app in the language of your choice
30
VSCode
category estReadingMinutes exercises
Software Quality
20
name description estMinutes technologies
Solve a problem in Go with TDD
Solve a given problem in Go using test-driven development (TDD).
120
Go
TDD
category estReadingMinutes exercises
Software Quality
20
name description estMinutes technologies
Create functional tests with Selenium in Python
Create functional tests for the bootcamp using Selenium in Python.
120
Selenium
Python
category estReadingMinutes
Software Quality
30
category estReadingMinutes exercises
Software Quality
20
name description estMinutes technologies
Achieve 100% code coverage
Install node dependencies for code coverage (mocha, chai, nyc) and get 100% code coverage for a given module and tests.
60
Node.js
Mocha
Chai
NYC
category estReadingMinutes exercises
Software Quality
5
name description estMinutes technologies
Create a GitHub Action to test a Go project
Create a GitHub Action that will run Unit Tests when a change is pushed
180
GitHub Actions
Go
category estReadingMinutes exercises
Software Quality
10
name description estMinutes technologies
Setup SonarQube and GitHub Integration
Create a SonarQube server and add GitHub action to run SonarQube in our build pipeline.
180
SonarQube
GitHub Actions
category estReadingMinutes
Software Quality
10
category estReadingMinutes exercises
Agile Development
5
name description estMinutes
Build an application
Using what you have leanred thus far create a production ready application
3000
category estReadingMinutes exercises
Version Control
5
name description estMinutes technologies
Docker Image Versioning
Build a few docker images and play with tagging them with semantic versioning.
30
Docker
category estReadingMinutes exercises
CI/CD
20
name description estMinutes technologies
Maven Web App Creation
Create a skeleton web application using Maven, add a plugin to help with local development, update the version number and create a release.
60
Maven
category estReadingMinutes exercises
CI/CD
30
name description estMinutes technologies
Maven Integration
Get an introduction into how Maven interacts with Nexus and how to use Maven in GitHub Actions. Fork several projects, use GitHub Actions to create GitHub workflow jobs that build these projects, deploy artifacts to Nexus, set up jobs to build on commit, make changes and observe the results.
240
Maven
GitHub Actions
Nexus OSS
category estReadingMinutes exercises
CI/CD
20
name description estMinutes technologies
Makefile Exploration
Explore the Makefile of a complex project (e.g., Rode) to understand its structure and functioning. No code writing is required for this exercise, but you should spend time studying and understanding the Makefile.
60
Make
category estReadingMinutes exercises
CI/CD
15
name description estMinutes technologies
npm Practice
Install and run the Dromedary app. Determine and run the appropriate command to test the app.
45
npm
Node.js
Java
category estReadingMinutes exercises
CI/CD
5
name description estMinutes technologies
Go Releaser Exercise
Fork and clone an open source Go project, update a Self-Hosted GitHub Actions Runner to deploy a release with Go Releaser.
240
Go
Go Releaser
GitHub
GitHub Actions
category estReadingMinutes exercises
Container Orchestration
10
name description estMinutes technologies
Dockerhub Exercise
Create a Dockerhub account, create repositories, clone DevOps Knowledge Share repositories, build container images, push them to Dockerhub, create a Docker Compose file, and create a GitHub Actions Workflow.
360
Docker
Dockerhub
GitHub
GitHub Actions
category estReadingMinutes exercises
Container Orchestration
15
name description estMinutes technologies
Helm Exercise 1
Install Helm and create, install, and update a basic chart with a ConfigMap Kubernetes resource.
180
Helm
Kubernetes
name description estMinutes technologies
Helm Exercise 2
Modify an existing Helm chart to deploy the DevOps Knowledge Share API.
120
Helm
Kubernetes
Docker
GitHub
name description estMinutes technologies
Helm Exercise 3
Add a Kubernetes deployment and service to our Helm chart to deploy the DKS frontend application.
180
Helm
Kubernetes
Docker
name description estMinutes technologies
Helm Exercise 4
Create another Helm chart using the Helm Create command and configure it to deploy a GitHub self-hosted runner.
120
Helm
Kubernetes
Docker
GitHub
category estReadingMinutes exercises
Infrastructure as Code
45
name description estMinutes technologies
Getting Started with Terraform
Run through Hashicorp's tutorials to get started with either AWS or Azure. Share your experiences and learnings with your team.
60
Terraform
AWS
Azure
category estReadingMinutes exercises
Infrastructure as Code
20
name description estMinutes technologies
Sharing Terraform Workspaces
Learn how to share a Terraform workspace with your teammates and understand the role of `terraform.lock.hcl`.
60
Terraform
Terraform Cloud
GitHub
name description estMinutes technologies
Cloud Native Backends
Transition from using Terraform Cloud to using cloud native storage solutions for storing Terraform state.
120
Terraform
AWS S3
Azure Resource Manager
name description estMinutes technologies
Terraform CI/CD Automation
Create a CI/CD pipeline that enforces the main branch as the source of truth for the state of the Terraform.
420
Terraform
GitHub Actions
category estReadingMinutes exercises
Infrastructure as Code
15
name description estMinutes technologies
Registry Modules
Learn how to use registry modules to create an EC2 instance and VPC in AWS, or add an EC2 instance to an existing VPC.
90
Terraform
AWS EC2
AWS VPC
name description estMinutes technologies
Custom Modules/Local Modules
Create and use a local module for an S3 bucket in AWS.
75
Terraform
AWS S3
category estReadingMinutes exercises
Infrastructure as Code
20
name description estMinutes technologies
Provider Boilerplate
Set up the boilerplate for a Terraform provider and test it locally.
120
Terraform
Go
name description estMinutes technologies
Implementing the provider client
Implement the Terraform provider client to interact with a custom API.
240
Terraform
Go
name description estMinutes technologies
Implementing Engineer resource and datasource
Implement the CRUD operations for the Engineer resource and datasource.
300
Terraform
Go
name description estMinutes technologies
Testing
Write comprehensive tests for the Engineer resource and datasource.
120
Terraform
Go
name description estMinutes technologies
Implementing Dev or Ops resource and datasource
Implement the CRUD operations for the Dev or Ops resources and datasources.
300
Terraform
Go
category estReadingMinutes exercises
Infrastructure as Code
15
name description estMinutes technologies
Vagrant and Ansible
Provision a virtual machine and install a GitHub self-hosted runner using Ansible as a provisioner in Vagrant.
300
Ansible
Vagrant
GitHub self-hosted runner
name description estMinutes technologies
Idempotency
Provision a virtual machine and install a GitHub self-hosted runner using Ansible as a provisioner in Vagrant while maintaining idempotency.
300
Ansible
Vagrant
GitHub self-hosted runner
name description estMinutes technologies
Ansible and AWS EC2
Provision an AWS EC2 instance and install a GitHub self-hosted runner using Ansible.
300
Ansible
AWS EC2
GitHub self-hosted runner
name description estMinutes technologies
Terraform and Ansible
Provision an EC2 instance using Terraform and install a GitHub self-hosted runner with Ansible.
360
Terraform
Ansible
AWS EC2
GitHub self-hosted runner
category estReadingMinutes
Container Orchestration
120
category estReadingMinutes exercises
Container Orchestration
10
name description estMinutes technologies
Creating Persistent Volumes and Persistent Volume Claims
Create a simple Persistent Volume (PV) and Persistent Volume Claim (PVC) in Kubernetes, understand the lifecycle of PVs and PVCs, and explore how to utilize them in a pod.
120
Kubernetes
name description estMinutes technologies
Dynamic Provisioning with Storage Classes
Learn about dynamic provisioning of Persistent Volumes (PVs) using Storage Classes, create a StorageClass object, provision a PVC dynamically, and deploy Jenkins in the cluster with persistent data.
360
Kubernetes
Jenkins
category estReadingMinutes exercises
Container Orchestration
10
name description estMinutes technologies
Setup
Create a service of type NodePort and a deployment for nginx in the default namespace using Docker Desktop.
25
Docker
Kubernetes
name description estMinutes technologies
Startup Probe Config
Add a startup probe to the nginx deployment and check the logs.
45
Kubernetes
name description estMinutes technologies
Readiness Probe Config
Add a readiness probe to the nginx deployment and check the logs.
45
Kubernetes
name description estMinutes technologies
Liveness Probe Config
Add a liveness probe to the nginx deployment, configure a hostPath volume and volumeMount, and check the logs.
45
Kubernetes
category estReadingMinutes exercises
Container Orchestration
15
name description estMinutes technologies
Grant New Permissions to a ServiceAccount
Create a namespace for Jenkins, install Jenkins using helm, discover new roles, create credentials using a Kubernetes secret, and setup Jenkins.
180
Docker
Kubernetes
Helm
Jenkins
name description estMinutes technologies
Verifying RBAC Permissions
Create a new namespace, service account, cluster role, and cluster role binding, and verify the permissions.
120
Docker
Kubernetes
category estReadingMinutes exercises
Container Orchestration
15
name description estMinutes technologies
Create an HPA
Install Metrics Server, apply the deployment and service for a CPU-intensive PHP image, and create an HPA that will scale the PHP deployment based on CPU usage.
120
Docker
Kubernetes
Metrics Server
name description estMinutes technologies
Increase Server Load
Increase the PHP server load and watch how the CPU load scales.
30
Docker
Kubernetes
name description estMinutes technologies
Decrease Server Load
Decrease the server load and watch how the CPU load scales down.
30
Docker
Kubernetes
name description estMinutes technologies
HPAs with Multiple Metrics
Configure the HPA to use multiple metrics, add memory as a resource in the PHP-Apache deployment, update the HPA, and verify its functionality.
180
Docker
Kubernetes
category estReadingMinutes exercises
Container Orchestration
15
name description estMinutes technologies
Setup
Set up the environment for admission webhooks by deploying a KIND cluster with Admission Controller enabled, installing cert-manager, and creating a validation namespace, root CA, and self-signed certificate.
60
Kubernetes
KIND
cert-manager
name description estMinutes technologies
Validating Webhooks
Configure a validating webhook for pod creation and test it using the given criteria.
90
Kubernetes
Python
name description estMinutes technologies
Mutating Webhooks
Configure a mutating webhook for pod creation and test it using the given criteria.
180
Kubernetes
Python
category estReadingMinutes exercises
Container Orchestration
15
name description estMinutes technologies
Kubernetes Custom Project
Create a custom Kubernetes project, utilizing webhooks, creating a custom resource, and using Kubebuilder to create a controller which reconciles changes to the custom resource.
4800
Kubernetes
Webhooks
Custom Resources
Kubebuilder
category estReadingMinutes
Platform Engineering
15
category estReadingMinutes exercises
Platform Engineering
20
name description estMinutes technologies
Create a GitHub Organization
This exercise involves creating a GitHub Organization to simulate an integrated SCM environment, similar to what you would find in a real-world development ecosystem. Each student will create their own GitHub Organization following the provided instructions.
30
GitHub
name description estMinutes technologies
Stand up local instance of Backstage
Students will set up a local instance of Backstage by following the official Getting Started guide. This exercise covers starting the local instance, familiarizing with the UI, and customizing the appearance of the Backstage instance including logo and application name changes. Extra credit is given for applying a custom theme. The customized instance should then be pushed to a repo in the newly created GitHub Organization.
60
Backstage
Docker
name description estMinutes technologies
Configure Authentication via GitHub
This exercise focuses on configuring authentication for the Backstage instance using GitHub. Students will create an OAuth app within their GitHub Organization and integrate it with Backstage for authentication purposes. This includes not storing secrets in plain text and ensuring secure authentication practices. Verification of login functionality through GitHub is the final step to confirm successful integration.
120
Backstage
GitHub

Liatrio Logomark

Liatrio's DevOps Bootcamp

Introduction

Welcome! You must be here because you're interested in DevOps. Don't worry, we'll get to that in a moment! First, let's briefly go over some details.

"1.0" can be referred to as "Chapter One," while "1.2" can be referred to as "Chapter One, Section Two."

Target Audience

This DevOps Bootcamp is used as an introduction to DevOps for Liatrio's apprentices. Therefore, there are deliverables at the end of each section and knowledge checks sprinkled throughout that help guide the apprentices' training. However, anyone can go through the DevOps Bootcamp. Feel free to ignore the deliverables, knowledge checks, etc. This bootcamp also assumes the bootcamper is using a Mac for the deliverables.

Disclaimer

This bootcamp alone will by no means make anyone an expert on DevOps; that's where real, in-the-field experience engineering and shadowing come in. However, this bootcamp is a great start for anyone entering the world of DevOps! It is recommended that anyone going through this bootcamp have a mentor to fill in the gaps of information and answer questions, as well. Also, many of the exercises proposed in this bootcamp have no solution listed. This is because it is up to the bootcamper to come up with the solution on their own. So, if you're wondering where a solution to an exercise is - there is likely none; that's up to you!

Learning Goals

  1. Introduction to DevOps
  2. GitHub
  3. Virtual Machines and Containers
  4. Cloud Computing
  5. Development Practices
  6. Release Management
  7. Infrastructure and Configuration
  8. Kubernetes

Expectations

  1. Share what you learn. Knowledge is best retained when you can teach it back yourself.
  2. If you're participating in the bootcamp with others, lift them up instead of speeding past them.
  3. Your learning should be in a demonstrable state at any given time.
  4. Slow and steady wins the race. If you don't fully understand something, speak up for help and spend more time on it.
  5. Be transparent in your progress.
  6. Have fun!

"It's better to over communicate than to under communicate."

Deliverable and Knowledge Check Format

Deliverables

If you are an apprentice (or if you just want to add to your learning), here's a little insight on the deliverables the bootcamp will provide. At the end of each section, you will typically encounter a bulleted list of deliverables. They will usually be structured to get you thinking/reflecting/researching key points that the section covered.

Knowledge Checks

As mentioned before, you'll also find small knowledge checks sprinkled throughout the bootcamp. Don't worry, they aren't graded and scores aren't tracked, so there's zero pressure when it comes to them. That being said, they are very valuable for learning, so it would be wise to take the time to not only get the correct answers on them, but to really understand why those are the correct answers.

Here's a sample knowledge check to show you how they'll behave:

Contributing

This bootcamp was adapted from an apprentice training program, and some mistakes may have slipped through the cracks. If you see any errors, outdated methods, or citation errors please submit a pull request.

Local Development

Below are a number of ways to develop locally, choose whichever you are most comfortable with.

Using Package.json Recommended

Install Docsify locally (in current directory)

  1. Run npm install
  2. Run npm start
  3. Open http://localhost:3000

Global Install

Install Docsify Globally in your system

  1. Install docsify
  2. Navigate to local library of onboarding
  3. Run docsify serve .
  4. Open http://localhost:3000

Docker

Use Docker to build and serve the content, but remember to rebuild the Docker image to review changes

Build and Run Docker Container

  1. Execute docker build . -t devops-bootcamp from the project's root directory to generate a container image
  2. Run docker run -d -p 3000:3000 --name devops-bootcamp devops-bootcamp to run a detached Docker container
  3. Open http://localhost:3000

Docker Compose

  1. Run docker compose up -d
  2. Open http://localhost:3000

More Information on Contributing

  • Images should be placed under the root img folder and referred to using HTML <img> tags
  • H3 header (###) should be the default header within a page
  • H2 header (##) will appear in the navigation as the page's table of contents

Contributors

classroom image classroom image