DevOps Roadmap

Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

@Sandip Das

Infrastructure as
code

Configuration
Management

Cloud

RoadMap CICD

Virtualisation &
Containerisation
Programming

Shell Scripting

Linux
Linux
Basic Linux
What you must learn ?
Basic Commands ls, cd, pwd, mkdir, rm, cp, mv, find, grep, awk, sed, etc.

File System Understanding of the Linux file system hierarchy, permissions (chmod, chown), and special files (like
/dev, /proc, /sys).

Text Editors Proficiency with at least one command-line text editor like vim, nano, or emacs.

Processes Managing processes using ps, top, htop, kill, etc.

Networking Commands like netstat, ifconfig, ss, ping, traceroute, and understanding of network configuration files.

Package Management Knowledge of package managers like apt, yum, or dnf depending on the distribution.

@Sandip Das
Advance Linux
What you must learn ?
System Monitoring Tools like vmstat, iostat, lsof, and sar.

Disk Management Understanding of disk partitions, fdisk, mkfs, mounting/unmounting, and fstab.

System Logs Reading and interpreting system logs in /var/log.

Cron Jobs Scheduling tasks using cron and at.

SSH Securely accessing remote systems using SSH, and understanding of SSH keys.

Security Basic security practices like setting up firewalls (iptables, ufw), SELinux, and understanding of public
and private keys.

@Sandip Das
Shell
Scripting
Shell Scripting
@Sandip Das

What you must learn ?

Basic Scripting Writing and executing basic shell scripts.

Variables Declaring and using variables.

Control Structures if statements, loops (for, while).

Functions Creating and using functions.

Input/Output Reading input from the user or a file, and displaying output.

Command-line Arguments Parsing and using command-line arguments in scripts.

String Manipulation Operations like substring, length, and pattern matching.

Automation Writing scripts to automate repetitive tasks.


Programming
Programming
@Sandip Das

What you must learn?


To become a DevOps engineer, having programming knowledge is beneficial because it aids in automation,
understanding the software development lifecycle, and collaborating effectively with developers.
Having knowledge in any back-end programming knowledge is fine but the most preferred for DevOps roles
are Python , Go and/or JavaScript an focus on below point considering the most preferred one is Python

Data Types Strings, integers, lists, dictionaries, sets, and tuples.

Control Structures if, elif, else, loops (for, while), and comprehensions.

Functions Defining functions, arguments, return values, and lambda functions.

Modules and Packages How to import and use them, and the Python standard library, Pip, Python package manager to install
and manage libraries.
Virtual Environments venv and virtualenv Isolate Python environments for different projects.

File Operations Reading from and writing to files. Handling different file formats, especially JSON and YAML, which
are common in configuration and infrastructure code
Networking and API requests: Make HTTP requests to interact with RESTful APIs. socket: Low-level networking for tasks
Interactions like checking port availability.

Automation and Scripting os and sys modules: Interact with the operating system, execute commands, and handle command-
line arguments. subprocess: Run shell commands and scripts from Python.
Programming
@Sandip Das

What you must learn?


To become a DevOps engineer, having programming knowledge is beneficial because it aids in automation,
understanding the software development lifecycle, and collaborating effectively with developers.
Having knowledge in any back-end programming knowledge is fine but the most preferred for DevOps roles
are Python , Go and/or JavaScript an focus on below point considering the most preferred one is Python

Databases sqlite3: Built-in library for SQLite databases. SQLAlchemy or PyMySQL: For interactions with larger
databases like MySQL or PostgreSQL.

Cloud Provider SDKs boto3: AWS SDK for Python. Useful for automating tasks in AWS.
SDKs for other cloud providers like google-cloud-python for GCP or azure-sdk-for-python for Azure.

Web Frameworks Flask or Django: Useful if you're building internal web tools or dashboards.

Testing unittest or pytest: Write tests for your scripts to ensure they work as expected.

Logging logging: Built-in module for generating logs. Essential for debugging and monitoring.

Performance and Monitoring time and profile: Measure and optimize the performance of your scripts.

Error Handling Properly handle exceptions using try, except, finally, and raise meaningful errors when necessary.
Virtualisation &
Containerisation
Virtualisation
What you must learn?
Virtualization and containerization are foundational technologies in the DevOps landscape. They enable
consistent environments, scalability, and efficient resource utilization. Here's a breakdown of the essential
knowledge in these areas for a DevOps engineer:

Conceptual Understanding Difference between full virtualization, paravirtualization, and hardware-assisted virtualization.
Understand hypervisors and the difference between Type 1 (bare metal) and Type 2 (hosted)
hypervisors.

Tools & Platforms VMware vSphere/ESXi: Widely used in enterprise settings for creating and managing virtual
machines.
Microsoft Hyper-V: Microsoft's virtualization solution.
Oracle VirtualBox: Popular for desktop virtualization.
KVM (Kernel-based Virtual Machine): Linux-based virtualization solution.

Networking & Storage Understand virtual switches, NICs, and other virtual networking components.
Familiarity with storage solutions like SAN, NAS, and how they integrate with virtual
environments.
@Sandip Das
Containerisation
What you must learn?
Grasp the difference between virtual machines and containers.
Conceptual Understanding
Understand the benefits of containers: lightweight, fast, consistent, and scalable.

Docker:
Docker images, containers, Dockerfiles, and docker-compose.
Core Tools
Building, running, and managing containers.
Docker Hub and creating custom Docker images.
Containerd & runc:
Lower-level container runtimes that Docker is built upon.

Container Orchestration Kubernetes:


Concepts like pods, services, deployments, replica sets, and config maps.
Kubernetes architecture: master nodes, worker nodes, etcd, kubelet, etc.
Tools like kubectl for managing a Kubernetes cluster.
Docker Swarm: Docker's native clustering and orchestration solution.
OpenShift: Red Hat's enterprise Kubernetes platform.

Networking & Storage Networking & Storage:


Understand container networking solutions like Calico, Flannel, and Weave.
Familiarity with persistent storage solutions for containers, like Persistent Volumes (PV) and
@Sandip Das Persistent Volume Claims (PVC) in Kubernetes.
Containerisation
What you must learn?
Container security best practices.
Security
Tools like Aqua or Twistlock for container security scanning.

Registry Understand container registries like Docker Hub, Quay.io, and how to set up private registries.

Monitoring & Logging Tools like Prometheus for monitoring and Grafana for visualization.
Logging solutions like ELK Stack (Elasticsearch, Logstash, Kibana) or EFK Stack (with Fluentd).

@Sandip Das
Continuous Integration (CI)
&
Continuous Deployment/Delivery (CD)
CICD
What you must learn?
Continuous Integration (CI) and Continuous Deployment/Delivery (CD) are fundamental practices in the DevOps methodology. They ensure
that code changes are automatically tested, integrated, and deployed to production, leading to faster and more reliable releases. Here's a
breakdown of the essential CI/CD knowledge for a DevOps engineer:

Core Concepts Continuous Integration (CI): The practice of frequently integrating code changes into a shared
repository, where they are automatically tested.
Continuous Deployment vs. Continuous Delivery:
Continuous Deployment: Automated deployment of code changes to production without
manual intervention.
Continuous Delivery: Code changes are automatically built, tested, and prepared for a
manual release to production.
Build Automation: Compiling source code into executable artifacts.
Automated Testing: Running unit, integration, and system tests automatically.
Deployment Strategies: Understanding of different deployment methods like blue-green
deployments, canary releases, and rolling updates.

@Sandip Das
CICD
What you must learn?

Container Integration Understanding how to integrate container tools like Docker and orchestration platforms like
Kubernetes into CI/CD pipelines.

Infrastructure as Code (IaC) Integrating IaC tools like Terraform or CloudFormation into CI/CD processes for infrastructure
Integration provisioning.

Artifact Managemen Knowledge of artifact repositories like Nexus, Artifactory, or Azure Artifact to store and manage build
artifacts

Security Implementing security best practices in CI/CD, such as secret management, code scanning, and
dependency checking.
Familiarity with tools like SonarQube for static code analysis or Snyk for vulnerability scanning.

Version Control Integration Deep integration with version control systems like Git, understanding hooks, triggers, and pull request
workflows.
@Sandip Das
CICD
What you must learn?
Parallel Builds
Optimizing CI/CD pipelines by running jobs in parallel, caching dependencies, and reusing previous
& Caching
build steps.

Environment Management Managing different environments like development, staging, and production within CI/CD
pipelines.

Monitoring
& Integrating monitoring and logging tools into CI/CD pipelines to provide feedback on
Feedback deployments.
Understanding feedback loops to ensure that any issues in the CI/CD process are quickly
identified and addressed.

@Sandip Das
Major CICD Tools!
Jenkins GitLab CI/CD GitHub Actions Travis CI CircleCI
Familiarity with Jenkins Understanding .gitlab- Configuring workflows Configuring builds using Understanding CircleCI
pipelines, both declarative ci.yml configuration. using the YAML syntax. .travis.yml. configuration with
and scripted. Familiarity with GitLab Utilizing the marketplace Integration with GitHub .circleci/config.yml.
Knowledge of Jenkins runners, stages, and actions and creating repositories. Working with CircleCI
plugins, nodes, and jobs. custom actions. orbs and workflows.
executors.
Integrating Jenkins with
version control systems
like Git.
Multi-branch pipeline

@Sandip Das
Cloud
Cloud
What you must learn?
Cloud platforms play a pivotal role in the modern DevOps landscape. They provide scalable infrastructure, a plethora of services, and tools that
facilitate automation, monitoring, and deployment. Here's a breakdown of the essential cloud knowledge for a DevOps engineer:

Core Cloud Concepts Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service
(SaaS).
Understanding of elasticity, scalability, and high availability.
Cloud pricing models and cost optimization strategies.
Cloud compute basics: Virtual Machine/instance type / sizes and their use cases and performance/
cost
Cloud storage basics: Elastic/scaled Storage, Object Storage etc
Cloud networking: Virtual Private Cloud (VPC) , Firewalls / security groups
Cloud security basics: Identity and Access Management (IAM), encryption, etc.

@Sandip Das
Major Cloud Providers
@Sandip Das

Follow the leaders!

Amazon Web Services (AWS) Google Cloud Microsoft Azure


Compute: EC2, Lambda, Elastic Beanstalk, Compute: Compute Engine, App Engine, Compute: Virtual Machines, Azure
Autoscaling Cloud Functions. Functions, App Services.
Storage: S3, EBS, EFS. Storage: Cloud Storage, Persistent Disk. Storage: Blob Storage, Disk Storage, File
Databases: RDS, DynamoDB. Databases: Cloud SQL, Firestore, Storage.
Networking: VPC, Route 53, API Gateway. Bigtable. Databases: Azure SQL Database, Cosmos
Management & Monitoring: CloudWatch, Networking: Virtual Private Cloud, Cloud DB.
CloudFormation, AWS Config. DNS, Cloud Load Balancing. Networking: Virtual Network, Azure DNS,
Developer Tools: CodeCommit, CodeBuild, Management & Monitoring: Stackdriver, Content Delivery Network.
CodeDeploy, CodePipeline. Cloud Deployment Manager. Management & Monitoring: Azure
Developer Tools: Cloud Source Monitor, Azure Resource Manager.
Repositories, Cloud Build. Developer Tools: Azure DevOps, Azure
Repos, Azure Pipelines.

Serverless Architectures:
Familiarity with serverless concepts and platforms like AWS Lambda, Azure Functions, and Google Cloud Functions.
and Understanding of serverless application deployment and monitoring will help cost reduction
Configuration Management
Configuration management
What you must learn?
Configuration management (CM) is a critical component in the DevOps landscape. It ensures that systems are consistently maintained in a
desired state, allowing for scalable and automated infrastructure management. Here's a breakdown of the essential configuration
management knowledge for a DevOps engineer:

Core Concepts Idempotence: The ability to run the same configuration multiple times without changing the result
after the first run.
Convergence: The process of moving the current system state towards the desired state.
Immutable Infrastructure: The idea of never modifying systems in place, but replacing them with
new instances when changes are needed.

Version Control for Understand the importance of storing configuration code in version control systems like Git.
Configuration Grasp best practices like code reviews for configuration changes, branching strategies, and
continuous integration for configuration code.

Familiarity with tools and practices to securely manage secrets (like API keys, passwords, and
Secrets Management certificates) in configuration management. Tools include:
HashiCorp Vault
AWS Secrets Manager
@Sandip Das Azure Key Vault
Major Configuration Management Tools

Ansible Chef Puppet


Understand the agentless architecture of Grasp the domain-specific language of Understand the declarative language of
Ansible. Chef: recipes, cookbooks, and roles. Puppet manifests.
Familiarity with playbooks, roles, and Understand the difference between Knowledge of Puppet's master-agent
tasks written in YAML. Chef Server, Chef Solo, and Chef Zero. architecture.
Knowledge of Ansible Galaxy, the Knowledge of Chef Supermarket, the Familiarity with Puppet Forge, where
community repository. community repository. pre-built modules are available.

Understand the importance of testing in configuration


Testing Configuration Code management.
Familiarity with testing tools/frameworks like ServerSpec, Test
Kitchen, or Molecule.

@Sandip Das
Infrastructure as Code
Infrastructure as code (IAC)
What you must learn?
Infrastructure as Code (IaC) is a key principle in the DevOps paradigm, allowing infrastructure provisioning and management using code and
automation. Here's a breakdown of the essential IaC knowledge for a DevOps engineer:

Core Concepts Immutable Infrastructure: The idea of provisioning new infrastructure for any change rather than
altering existing resources.
Declarative vs. Imperative Approaches: Understanding the difference between defining the
desired end state (declarative) and specifying the steps to reach that state (imperative).
Version Control: Storing IaC scripts in version control systems like Git, ensuring traceability,
collaboration, and history tracking.

Configuration Understand how IaC integrates with configuration management tools like Ansible, Puppet, Chef, or
Management Integration SaltStack. For instance, you might use Terraform to provision a VM and then Ansible to configure the
software on that VM.

State Management Understand the importance of state in IaC tools, especially in Terraform. Know how to manage, back
up, and lock the state to prevent conflicts.
@Sandip Das
@Sandip Das

Major Infrastructure as Code Tools!


Azure Resource Google Cloud
AWS
Terraform Manager (ARM) Deployment Pulumi
CloudFormation
Templates Manager
Understand the HCL Understand Grasp the structure of Familiarity with the Knowledge of defining
(HashiCorp Configuration CloudFormation ARM templates. structure of infrastructure using
Language). templates written in Understand Azure- configuration files. general-purpose
Knowledge of Terraform's JSON or YAML. specific resources and Understand GCP- languages like
lifecycle commands (init, Familiarity with AWS- configurations. specific resources and TypeScript, Python, Go,
plan, apply, destroy). specific resources and configurations. or C#.
Familiarity with Terraform properties. Understand the Pulumi
state management and Stacks, StackSets, and lifecycle and state
backends. the CloudFormation management.
Modules and how to lifecycle.
structure Terraform code
for reusability.

Familiarity with tools and practices for testing IaC scripts:


Testing IaC
Terratest: A Go library for testing Terraform code.
kitchen-terraform: Integration testing for Terraform.

Modular and Reusable Grasp the importance of writing modular IaC scripts for reusability. For example, using
Code Terraform modules or CloudFormation nested stacks.
@Sandip Das

Major Infrastructure as Code Tools!


Azure Resource Google Cloud
AWS
Terraform Manager (ARM) Deployment Pulumi
CloudFormation
Templates Manager
Understand the HCL Understand Grasp the structure of Familiarity with the Knowledge of defining
(HashiCorp Configuration CloudFormation ARM templates. structure of infrastructure using
Language). templates written in Understand Azure- configuration files. general-purpose
Knowledge of Terraform's JSON or YAML. specific resources and Understand GCP- languages like
lifecycle commands (init, Familiarity with AWS- configurations. specific resources and TypeScript, Python, Go,
plan, apply, destroy). specific resources and configurations. or C#.
Familiarity with Terraform properties. Understand the Pulumi
state management and Stacks, StackSets, and lifecycle and state
backends. the CloudFormation management.
Modules and how to lifecycle.
structure Terraform code
for reusability.

Familiarity with tools and practices for testing IaC scripts:


Testing IaC
Terratest: A Go library for testing Terraform code.
kitchen-terraform: Integration testing for Terraform.

Modular and Reusable Grasp the importance of writing modular IaC scripts for reusability. For example, using
Code Terraform modules or CloudFormation nested stacks.
Thank you for reading

Follow on: Sandip Das

Subscribe: @LearnTechWithSandip

You might also like