90DaysOfDevOps - This repository is my documenting repository for learning the world of DevOps

90DaysOfDevOps

This repository is used to document my journey on getting a better foundational knowledge of DevOps. I will be starting this journey on the 1st January 2022 but the idea is that we take 90 days which just so happens to be January 1st to March 31st.

The reason for documenting these days is so that others can take something from it and also hopefully enhance the resources.

The goal is to take 90 days, 1 hour a day, to tackle over 13 areas of DevOps to a foundational knowledge.

This will not cover all things DevOps but it will cover the areas that I feel will benefit my learning and understanding overall.

Progress

What is and why do we use DevOps

Learning a Programming Language

Knowing Linux Basics

Understand Networking

  • 🌐 21 >
  • 🌐 22 >
  • 🌐 23 >
  • 🌐 24 >
  • 🌐 25 >
  • 🌐 26 >
  • 🌐 27 >

Stick to one Cloud Provider

  • ☁️ 28 >
  • ☁️ 29 >
  • ☁️ 30 >
  • ☁️ 31 >
  • ☁️ 32 >
  • ☁️ 33 >
  • ☁️ 34 >

Use Git Effectively

  • 📚 35 >
  • 📚 36 >
  • 📚 37 >
  • 📚 38 >
  • 📚 39 >
  • 📚 40 >
  • 📚 41 >

Containers

  • 🏗️ 42 >
  • 🏗️ 43 >
  • 🏗️ 44 >
  • 🏗️ 45 >
  • 🏗️ 46 >
  • 🏗️ 47 >
  • 🏗️ 48 >

Kubernetes

  • 49 >
  • 50 >
  • 51 >
  • 52 >
  • 53 >
  • 54 >
  • 55 >

Learn Infrastructure as Code

  • 🤖 56 >
  • 🤖 57 >
  • 🤖 58 >
  • 🤖 59 >
  • 🤖 60 >
  • 🤖 61 >
  • 🤖 62 >

Automate Configuration Management

  • 📜 63 >
  • 📜 64 >
  • 📜 65 >
  • 📜 66 >
  • 📜 67 >
  • 📜 68 >
  • 📜 69 >

Create CI/CD Pipelines

  • 🔄 70 >
  • 🔄 71 >
  • 🔄 72 >
  • 🔄 73 >
  • 🔄 74 >
  • 🔄 75 >
  • 🔄 76 >

Monitoring, Log Management, and Data Visualisation

  • 📈 77 >
  • 📈 78 >
  • 📈 79 >
  • 📈 80 >
  • 📈 81 >
  • 📈 82 >
  • 📈 83 >

Store & Protect Your Data

  • 🗃️ 84 >
  • 🗃️ 85 >
  • 🗃️ 86 >
  • 🗃️ 87 >
  • 🗃️ 88 >
  • 🗃️ 89 >
  • 🗃️ 90 >
Comments
  • Use Github Pages for better readability?

    Use Github Pages for better readability?

    This project could use Github Pages for the following benefits:

    • cleaner user interface (no file tree nor Github UI) and
    • better readability
    • ease of use

    I think that to start the default settings could do: Repository Settings > Pages

  • Website Creation Idea

    Website Creation Idea

    Hi, This is awesome repository. It's helps a lot people who are interested in DevOps. Thanks to all the contributor, maintainer, owner to creating this awesome GitHub repo.

    Have you any plane to create a website?

  • Add meet the crew / contributors for 2023

    Add meet the crew / contributors for 2023

    We should create a page where we have a brief bio of the SMEs covering topics for 2023.

    Will require headshots, bio and social links

    @rishabkumar7 Iassume if we do this with another markdown file it will just render with GitHub pages?

  • Youtube video for cloud resource AWS Basics for Beginners - Full Course is not available

    Youtube video for cloud resource AWS Basics for Beginners - Full Course is not available

    Link for the AWS Basics for Beginners - Full Course is private and not available for viewing. Is there another link that is recommended to be used? Really great content in here but I am using AWS at my current job so hoping to stick with what is a bit more familiar to me.

    Link: https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s

  • day73/jenkins build is getting fail

    day73/jenkins build is getting fail

    Started by user Sourav Kumar [Pipeline] Start of Pipeline [Pipeline] End of Pipeline java.lang.NoSuchMethodError: No such DSL method 'podTemplate' found among steps [archive, bat, build, catchError, checkout, deleteDir, dir, echo, emailext, emailextrecipients, envVarsForTool, error, fileExists, findBuildScans, getContext, git, input, isUnix, junit, library, libraryResource, load, mail, milestone, node, parallel, powershell, properties, publishChecks, pwd, pwsh, readFile, readTrusted, resolveScm, retry, script, sh, sleep, stage, stash, step, timeout, timestamps, tm, tool, unarchive, unstable, unstash, validateDeclarativePipeline, waitUntil, warnError, withChecks, withContext, withCredentials, withEnv, withGradle, wrap, writeFile, ws] or symbols [GitUsernamePassword, all, allBranchesSame, allOf, always, ant, antFromApache, antOutcome, antTarget, any, anyOf, apiToken, architecture, archiveArtifacts, artifactManager, authorizationMatrix, batchFile, bitbucketServer, booleanParam, branch, brokenBuildSuspects, brokenTestsSuspects, buildButton, buildDiscarder, buildDiscarders, buildRetention, buildUser, buildingTag, builtInNode, caseInsensitive, caseSensitive, certificate, changeRequest, changelog, changeset, checkoutToSubdirectory, choice, choiceParam, cleanWs, clock, command, contributor, credentials, cron, crumb, culprits, defaultFolderConfiguration, defaultView, demand, developers, disableConcurrentBuilds, disableResume, downstream, dumb, durabilityHint, email-ext, envVars, envVarsFilter, environment, equals, expression, extendedEmailPublisher, file, fileParam, filePath, fingerprint, fingerprints, frameOptions, freeStyle, freeStyleJob, fromScm, fromSource, git, gitBranchDiscovery, gitHubBranchDiscovery, gitHubBranchHeadAuthority, gitHubExcludeArchivedRepositories, gitHubExcludeForkedRepositories, gitHubExcludePrivateRepositories, gitHubExcludePublicRepositories, gitHubForkDiscovery, gitHubIgnoreDraftPullRequestFilter, gitHubPullRequestDiscovery, gitHubSshCheckout, gitHubTagDiscovery, gitHubTopicsFilter, gitHubTrustContributors, gitHubTrustEveryone, gitHubTrustNobody, gitHubTrustPermissions, gitTagDiscovery, gitUsernamePassword, github, githubProjectProperty, githubPush, gradle, headRegexFilter, headWildcardFilter, hyperlink, hyperlinkToModels, inheriting, inheritingGlobal, installSource, isRestartedRun, jdk, jdkInstaller, jgit, jgitapache, jnlp, jobBuildDiscarder, jobName, junitTestResultStorage, label, lastDuration, lastFailure, lastGrantedAuthorities, lastStable, lastSuccess, legacy, legacySCM, list, local, location, logRotator, loggedInUsersCanDoAnything, mailer, masterBuild, maven, maven3Mojos, mavenErrors, mavenGlobalConfig, mavenMojos, mavenWarnings, modernSCM, myView, namedBranchesDifferent, node, nodeProperties, nonInheriting, none, not, organizationFolder, overrideIndexTriggers, paneStatus, parallelsAlwaysFailFast, parameters, password, pattern, permanent, pipeline, pipelineTriggers, plainText, plugin, pollSCM, preserveStashes, previous, projectNamingStrategy, proxy, pruneTags, queueItemAuthenticator, quietPeriod, rateLimit, rateLimitBuilds, recipients, requestor, resourceRoot, retainOnlyVariables, run, runParam, sSHLauncher, schedule, scmRetryCount, scriptApproval, scriptApprovalLink, search, security, shell, simpleBuildDiscarder, skipDefaultCheckout, skipStagesAfterUnstable, slave, sourceRegexFilter, sourceWildcardFilter, ssh, sshPublicKey, sshUserPrivateKey, standard, status, string, stringParam, suppressAutomaticTriggering, suppressFolderAutomaticTriggering, swapSpace, tag, teamSlugFilter, text, textParam, timestamper, timestamperConfig, timezone, tmpSpace, toolLocation, triggeredBy, unsecured, untrusted, upstream, upstreamDevelopers, userSeed, usernameColonPassword, usernamePassword, viewsTabBar, weather, withAnt, zip] or globals [currentBuild, env, params, pipeline, scm] at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:219) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:124) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:41) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:163) at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:158) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:143) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:161) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:165) at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17) at WorkflowScript.run(WorkflowScript:1) at cps.transform(Native Method) at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:86) at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:113) at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:83) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46) at com.cloudbees.groovy.cps.Next.step(Next.java:83) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163) at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136) at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275) at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:187) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:420) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$400(CpsThreadGroup.java:95) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:330) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:294) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Finished: FAILURE

  • Failed to load plugin schemas

    Failed to load plugin schemas

    sovu@sourav-pc:/media/sovu/Data/Devops/terraform$ terraform init

    Initializing the backend...

    Initializing provider plugins...

    • Reusing previous version of kreuzwerker/docker from the dependency lock file
    • Using previously-installed kreuzwerker/docker v2.16.0

    Terraform has been successfully initialized!

    You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work.

    If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. sovu@sourav-pc:/media/sovu/Data/Devops/terraform$ terraform plan ╷ │ Error: Failed to load plugin schemas │ │ Error while loading schemas for plugin components: Failed to obtain provider schema: │ Could not load the schema for provider registry.terraform.io/kreuzwerker/docker: │ failed to instantiate provider "registry.terraform.io/kreuzwerker/docker" to obtain │ schema: fork/exec │ .terraform/providers/registry.terraform.io/kreuzwerker/docker/2.16.0/linux_amd64/terraform-provider-docker_v2.16.0: │ permission denied.. ╵

  • Translation of Simplified Chinese version

    Translation of Simplified Chinese version

    I am translating a Chinese version of this repo, it is now available HERE . I will update the process here. If you are interested in helping with the Chinese translation, feel free to comment below and let me know which chapter you are working on. It is also welcomed to help proofread my translation (just open an issue!).

    • [ ] README (WIP)
    • [ ] Day01 (WIP)
    • [ ] Day02
    • [ ] Day03
    • [ ] Day04
    • [ ] Day05
    • [ ] Day06
    • [ ] Day07
    • [ ] Day08
    • [ ] Day09
    • [ ] Day10
  • Story: As a follower, I would love to see AWS Hands-On Scenarios on day34.md

    Story: As a follower, I would love to see AWS Hands-On Scenarios on day34.md

    Hi,

    I wanted to ask if you could add any links to the AWS Hands-On Scenarios or some additional information about how people could follow same Microsoft Azure Hands-On in the AWS Cloud? As you mentioned at the very beginning about switching between different clouds can make us lost quite easily. It is really true and I am sure some people who are new to cloud concepts can get confused easily.

    Thanks much

  • Grammar & spell check Days 30-90 required

    Grammar & spell check Days 30-90 required

    I have ran through 1-30 and made edits but need to now do this for the remaining 60 days.

    When this is complete we need to look at how and the best way to publish this as a digital copy and hopefully a physical copy. If anyone has suggestions for this then please comment on this issue.

    The idea is to keep this whole resource free, I have done some research around pandoc and how then can be used to create a combined word document or Google doc for publishing.

    We might also then want to create a branch in time so that no new edits affect the published copy.

    Again any experience in doing this would be greatly appreciated. Deadline is to have a physical option before September 2022.

  • Day 51: minikube not found error

    Day 51: minikube not found error

    In day51, after installing minikube through arkade arkade install minikube , and when starting minikube minikube start, it's rising an error saying minikube not found.

    I believe we need to add the arkade bin path to environment variables.

  • Spanish Version

    Spanish Version

    Hi Michael; I would like to be able to do the translation into Spanish for my community, where we still have many members who are not 100% fluent in English, do you agree? Do you prefer that I do it in my own fork or do you prefer that I create a folder to do it inside your repository?

  • Day 5 : CI / CD topic interchange needed

    Day 5 : CI / CD topic interchange needed

    https://github.com/MichaelCade/90DaysOfDevOps/blob/main/Days/day05.md#continuous-delivery - needs to be https://github.com/MichaelCade/90DaysOfDevOps/blob/main/Days/day05.md#continuous-integration and vice versa

    Below correction would be required

    Continuous Integration = Plan > Code > Build > Test Continuous Delivery = Release

  • Chinese Version(or in other languages)

    Chinese Version(or in other languages)

    Hi, I'm doing some practice on DevOps as well. It's such a hard work because there's several ways of different DevOps around. Different companies have their different details. I'm dedicated to looking for a unique and suitable way of DevOps in my company. So glad to see this repo growing and I'm very willing to practice with you together. Last but not least, to make it globally, I wonder if there will be a Chinese version(or in other languages) in the future. I can also offer help for translating your DevOps way into Chinese. Thanks!

k6 is a modern load testing tool for developers and testers in the DevOps era.
k6 is a modern load testing tool for developers and testers in the DevOps era.

k6 is a modern load testing tool, building on our years of experience in the load and performance testing industry. It provides a clean, approachable scripting API, local and cloud execution, and flexible configuration.

Jan 8, 2023
This is a cloud-native application that focuses on the DevOps area.

Get started Install KubeSphere via kk (or other ways). This is an optional step, basically we need a Kubernetes Cluster and the front-end of DevOps. I

Jan 5, 2023
Power-ups for the daily DevOps life

DevOps Loop Power-Ups Requirements Connected Kubernetes cluster. Some features need support for LoadBalancer services Permission to list, create and d

Nov 3, 2022
sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC), and Everything as Code. So it is a tool for DevOps.

sail 中文文档 sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC),a

Dec 16, 2021
A Kubernetes Operator, that helps DevOps team accelerate their journey into the cloud and K8s.
A Kubernetes Operator, that helps DevOps team accelerate their journey into the cloud and K8s.

A Kubernetes Operator, that helps DevOps team accelerate their journey into the cloud and K8s. OAM operator scaffolds all of the code required to create resources across various cloud provides, which includes both K8s and Non-K8s resources

Nov 30, 2021
Zeus - A Devops Automation Tool

With this tool we are trying generalize and minimize devops reperating task while trying to encourage shared responsibility model acorss devloper teams.

May 31, 2022
The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases

The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases. It eliminates the dependency on a human operator or administrator for the majority of database operations.

Dec 14, 2022
DevOps With Kubernetes exercise

todo-project [https://github.com/pasiol/todo-project/tree/1.05] Exercise 1.06 pasiol@lab:~$ k3d cluster delete INFO[0000] Deleting cluster 'k3s-defaul

Dec 8, 2021
Kubernetes operator for the Azure DevOps pipe-line agents

adoagent-operator Kubernetes operator for the Azure DevOps pipe-line agents init.sh #!/bin/bash # docker and github repo username export USERNAME='ba

Nov 11, 2021
This is a cloud-native application that focuses on the DevOps area.

KubeSphere DevOps integrates popular CI/CD tools, provides CI/CD Pipelines based on Jenkins, offers automation toolkits including Binary-to-Image (B2I

Jan 5, 2023
Kubernetes operator for the Azure DevOps self-hosted pipe-line agent.

Kubernetes operator for the Azure DevOps self-hosted pipe-line agent. The operator adds an extra layer of configuration on top of the default images like: proxy settings, pool settings and auth keys.

Sep 1, 2022
Repositório base p/ tema12 da trilha de DevOps.

tema12--Jenkins Informações Repositório base: https://github.com/brazdore/ilegra-devops-tema12.git Requisitos Jenkins Docker Packer JDK 11 ou maior Pr

Dec 21, 2021
DevOps Roadmap 2022

Want to learn DevOps the right way in 2022 ? You have come to the right place I have created the complete DevOps roadmap that anyone can follow and be

Dec 28, 2022
Git-based DevOps PaaS: Project, Pipeline, Kubernetes, ServiceMesh, MutilCloud

gitctl 一体化 DevOps 平台 从代码到应用的一体化编排,应用全生命周期管理,多云托管。 gitctl 会有哪些功能? git 代码托管 projec

Oct 24, 2022
Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers
Fluxcdproj -  The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Feb 1, 2022
Isaac Gazimbe - DevOps Golang Tools

Isaac Gazimbe - DevOps Golang Tools git.io/go-tools DevOps Golang Tools All programs have --help to list the available options. See Also: DevOps Bash

Feb 10, 2022
Planet Scale Robotics - Offload computation-heavy robotic operations to GPU powered world's first cloud-native robotics platform.

robolaunch ?? Planet Scale Robotics - Offload computation-heavy robotic operations to GPU powered world's first cloud-native robotics platform. robola

Jan 1, 2023
Repositório destinado para acompanhar meu aprendizado na linguagem Go, desde o básico "Hello, World!" até a elaboração de um projeto ainda não definido. 🙂

go-basics Repositório destinado para acompanhar meu aprendizado na linguagem Go, desde o básico "Hello, World!" até a elaboração de um projeto ainda n

Jan 7, 2022
Sample Hello World Pulumi Program for Azure

Overview This is a standard hello world style Pulumi program for Azure straight from the Pulumi docs. This is a sample repo used to test Pulumi's Auto

Jan 13, 2022