From 9ee7622fe17a4cc3ccd8061ef4867b7226c40851 Mon Sep 17 00:00:00 2001 From: medusa Date: Sun, 5 May 2024 17:28:20 +0000 Subject: [PATCH] Add tech_docs/automation/ci_cd.md --- tech_docs/automation/ci_cd.md | 226 ++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 tech_docs/automation/ci_cd.md diff --git a/tech_docs/automation/ci_cd.md b/tech_docs/automation/ci_cd.md new file mode 100644 index 0000000..e1705c4 --- /dev/null +++ b/tech_docs/automation/ci_cd.md @@ -0,0 +1,226 @@ +# Interview Preparation Syllabus + +This syllabus covers the key topics for interview preparation in the field of DevOps. It includes various tools and technologies commonly used in the industry. The syllabus provides a brief overview of each topic and hands-on exercises to reinforce learning. + +## Linux +- Basic Linux commands +- Introduction to shell scripting +- Basics of networking commands +- Hands-on exercises + +## Maven +- Understanding Maven lifecycle +- Packaging and building Java applications +- Hands-on exercises + +## Git +- Basics of pull, push, commit, and merge +- Understanding rebase, stash, pop, cherry-pick +- Resolving merge conflicts +- Hands-on exercises + +## Jenkins +- Setting up Jenkins +- Working with pipelines +- Troubleshooting examples +- Stages in pipelines +- Integration of tools with Jenkins +- Hands-on exercises + +## Docker +- Docker commands and usage +- Dockerfile creation +- Docker Compose +- Docker networking +- Building and pushing Docker images +- Working with containers +- Hands-on exercises + +## Kubernetes +- Understanding Kubernetes architecture +- Writing YAML manifest files +- Deployment of multi-tier applications +- Integration with CI/CD tools +- Hands-on exercises + +## Infrastructure as Code (IaC) with Terraform +- Understanding Terraform lifecycle +- Using modules +- Writing scripts to create resources +- Hands-on exercises + +## Infrastructure as Code (IaC) with Ansible +- Playbook creation +- Installing applications on servers +- Deploying applications on servers +- Hands-on exercises + +## SonarQube +- Implementations of SonarQube +- Integrating SonarQube with pipelines +- Code quality check vs code coverage +- Hands-on exercises + +## OWASP Dependency Check +- Usage and solving dependency-related problems +- Hands-on exercises + +## Trivy +- Integrating Trivy with CI/CD tools +- Scanning filesystems, packages, Docker images, and Kubernetes clusters +- Hands-on exercises + +## Azure DevOps +- CI/CD pipelines in Azure DevOps +- Deployment of applications to AKS and App Service +- Connecting to Azure Container Registry (ACR) +- Working with Azure Functions +- Hands-on exercises + +# Questions Asked in Interview from above topics + +## Linux: +1. What is the difference between absolute and relative paths in Linux? +2. How do you check the available disk space in Linux? +3. Explain the process of creating a symbolic link in Linux. +4. How would you find all files modified within the last 24 hours in a directory? +5. Describe the usage and syntax of the "grep" command in Linux. +6. Write a shell script to display the current date and time. +7. What is the purpose of the "ifconfig" command in Linux? +8. How can you change the ownership of a file in Linux using the "chown" command? +9. Explain the difference between TCP and UDP protocols. +10. How do you add a user to a group in Linux using the "usermod" command? + +## Maven: +1. What is Maven, and what is its primary purpose in software development? +2. Describe the Maven lifecycle and the different phases involved. +3. How can you package a Java application into a JAR file using Maven? +4. What is the purpose of the "pom.xml" file in Maven projects? +5. How do you specify dependencies in a Maven project? +6. Explain the difference between the "clean" and "install" goals in Maven. +7. How can you skip unit tests during a Maven build? +8. Describe the process of creating a multi-module Maven project. +9. What is the purpose of the "dependencyManagement" section in Maven? +10. How can you override a dependency version in a Maven project? + +## Git: +1. What is Git, and how is it different from other version control systems? +2. Explain the basic Git workflow for creating and committing changes. +3. How do you create a new branch in Git, and what is its purpose? +4. Describe the difference between "git pull" and "git fetch" commands. +5. What is a merge conflict in Git, and how can you resolve it? +6. Explain the difference between "git merge" and "git rebase" commands. +7. How do you revert a commit in Git using the "git revert" command? +8. What is the purpose of the "git stash" command, and how does it work? +9. Describe the process of cherry-picking a commit in Git. +10. How can you view the Git commit history using the "git log" command? + +## Jenkins: +1. What is Jenkins, and what is its role in the CI/CD process? +2. Explain the process of setting up a Jenkins server. +3. How can you create a Jenkins pipeline using the Jenkinsfile? +4. Describe the difference between scripted and declarative pipelines in Jenkins. +5. Provide an example of a troubleshooting scenario in Jenkins and how you would resolve it. +6. What are stages in Jenkins pipelines, and why are they useful? +7. How can you integrate external tools like SonarQube or JUnit with Jenkins? +8. Explain the concept of Jenkins agents and how they are used in distributed builds. +9. What is Jenkins Blue Ocean, and how does it enhance the Jenkins user interface? +10. How can you parameterize Jenkins builds to allow user input during execution? + +## Docker: +1. What is Docker, and what are its advantages in application deployment? +2. Explain the difference between an image and a container in Docker. +3. How do you build a Docker image using a Dockerfile? +4. Describe the purpose and usage of the "docker run" command. +5. What is Docker Compose, and how is it used to define multi-container applications? +6. How do you create a Docker network for communication between containers? +7. Explain the process of building and pushing a Docker image to a registry. +8. How can you mount a host directory as a volume inside a Docker container? +9. Describe the difference between a Dockerfile CMD and ENTRYPOINT directive. +10. How can you view the logs of a running Docker container? + +## Kubernetes: +1. What is Kubernetes, and what problem does it solve in container orchestration? +2. Explain the architecture of a Kubernetes cluster, including master and worker nodes. +3. How do you define a Kubernetes deployment using YAML manifests? +4. What is a pod in Kubernetes, and how is it different from a container? +5. Describe the process of scaling a deployment in Kubernetes. +6. How can you perform rolling updates and rollbacks in Kubernetes? +7. Explain the concept of Kubernetes namespaces and their usage. +8. How do you expose a Kubernetes service to external traffic? +9. What is a PVC (PersistentVolumeClaim) in Kubernetes, and how is it used? +10. How can you integrate Kubernetes deployments with CI/CD tools like Jenkins? + +## Infrastructure as Code (IaC) with Terraform: +1. What is Infrastructure as Code (IaC), and why is it important in modern infrastructure management? +2. Explain the lifecycle of a Terraform resource and the purpose of each phase. +3. How do you use Terraform modules to organize and reuse infrastructure configurations? +4. Describe the process of writing a Terraform script to create AWS resources. +5. How can you pass variables to Terraform scripts during execution? +6. What is the Terraform state file, and how does it help with managing infrastructure changes? +7. Explain the difference between Terraform "apply" and "plan" commands. +8. How do you use remote backends in Terraform for state management? +9. Describe the process of destroying infrastructure resources using Terraform. +10. How can you provision infrastructure resources in different cloud providers using Terraform? + +## Infrastructure as Code (IaC) with Ansible: +1. What is Ansible, and how does it differ from other configuration management tools? +2. Explain the concept of Ansible playbooks and their structure. +3. How do you install applications on remote servers using Ansible? +4. Describe the process of deploying applications on remote servers using Ansible. +5. How can you use Ansible roles to organize and reuse configuration tasks? +6. What are Ansible facts, and how are they useful in playbooks? +7. How do you use Ansible Vault for securely storing sensitive data? +8. Explain the difference between Ansible "gather_facts" and "no_log" directives. +9. How can you use Ansible to perform rolling updates on a group of servers? +10. Describe the process of integrating Ansible with Jenkins for continuous deployment. + +## SonarQube: +1. What is SonarQube, and why is it important in software development? +2. Describe the process of installing and configuring SonarQube. +3. How can you integrate SonarQube with different build tools and CI/CD pipelines? +4. Explain the difference between code quality checks and code coverage in SonarQube. +5. How do you analyze and interpret SonarQube code analysis reports? +6. What are SonarQube rules, and how can you customize them for a project? +7. How does + + SonarQube handle security vulnerabilities and code smells? +8. Describe the process of excluding specific files or directories from SonarQube analysis. +9. How can you track code quality trends over time using SonarQube? +10. What are SonarQube Quality Gates, and how do they help in enforcing code quality standards? + +## OWASP Dependency Check: +1. What is OWASP Dependency Check, and why is it important in application security? +2. How does OWASP Dependency Check identify and manage vulnerabilities in project dependencies? +3. Describe the process of integrating OWASP Dependency Check with different build tools. +4. How do you configure OWASP Dependency Check to generate vulnerability reports? +5. Explain the difference between OWASP Dependency Check and SonarQube in terms of vulnerability analysis. +6. How can you customize the OWASP Dependency Check configuration for a project? +7. What are the common vulnerabilities and exposures (CVE) databases used by OWASP Dependency Check? +8. Describe the process of excluding specific dependencies from OWASP Dependency Check analysis. +9. How can you automate the OWASP Dependency Check scanning process in CI/CD pipelines? +10. What are the best practices for using OWASP Dependency Check effectively in a project? + +## Trivy: +1. What is Trivy, and how does it help in vulnerability scanning? +2. Explain the process of integrating Trivy with CI/CD tools for vulnerability scanning. +3. How does Trivy scan the filesystem for vulnerabilities in different package managers? +4. Describe the process of scanning Docker images for vulnerabilities using Trivy. +5. How can you scan Kubernetes clusters for vulnerabilities using Trivy? +6. What are the different severity levels of vulnerabilities reported by Trivy? +7. How can you customize the Trivy scanning process to exclude specific vulnerabilities? +8. Explain the difference between Trivy and other vulnerability scanning tools like Clair. +9. Describe the process of generating Trivy vulnerability reports and interpreting the results. +10. What are the best practices for incorporating Trivy into a secure CI/CD pipeline? + +## Azure DevOps: +1. What is Azure DevOps, and what are its key components? +2. Describe the process of setting up CI/CD pipelines in Azure DevOps. +3. How can you deploy applications to Azure Kubernetes Service (AKS) using Azure DevOps? +4. Explain the process of deploying applications to Azure App Service using Azure DevOps. +5. How can you connect Azure DevOps to Azure Container Registry (ACR) for container image management? +6. What are Azure Functions, and how do they fit into a DevOps workflow? +7. Describe the process of integrating code quality checks and security scans into Azure DevOps pipelines. +8. How can you use Azure Artifacts for package management in Azure DevOps? +9. Explain the concept of environments in Azure DevOps and their usage. +10. What are the best practices for implementing secure and efficient CI/CD pipelines in Azure DevOps?