DevOps Fundamentals Flashcards
Different types of Agile Methodologies
Here are some of the most widely recognized Agile methodologies along with their definitions:
-
Scrum:
- A framework that divides projects into cycles called sprints, typically lasting two to four weeks. Scrum emphasizes collaboration, functioning software, and the flexibility to adapt to emerging business realities.
-
Kanban:
- A visual approach to project management. Tasks are represented by cards on a board, allowing teams to see the status of all tasks and manage flow from idea to completion.
-
Extreme Programming (XP):
- A software development methodology that emphasizes customer satisfaction. It advocates frequent “releases” in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.
-
Lean Software Development:
- Inspired by lean manufacturing practices and principles, this methodology focuses on reducing waste, increasing predictability through fast iterations, and emphasizing customer value.
-
Feature-Driven Development (FDD):
- A model-driven, short-iteration process. It begins with establishing an overall model shape, followed by a series of two-week “design by feature, build by feature” iterations.
-
Dynamic Systems Development Method (DSDM):
- An Agile project delivery framework that focuses on delivering strategic projects in a timely manner. It covers all aspects of the project lifecycle and encourages iterative and incremental approaches.
-
Crystal:
- A family of Agile methodologies (like Crystal Clear, Crystal Yellow, etc.) that focus on collaboration and adaptability. The methodology is tailored based on the size and criticality of the project.
-
Agile Unified Process (AUP):
- A simplified version of the Rational Unified Process (RUP). It applies Agile techniques including test-driven development (TDD), Agile modeling, Agile change management, and database refactoring to improve productivity.
Each of these methodologies has its own unique practices, roles, and terminologies. The best approach often depends on the specific requirements and constraints of the project, as well as the preferences and expertise of the team.
Utilizing Ansible and Terraform for Automation 8. Question: Can you describe an experience where you utilized Ansible and Terraform for automation and infrastructure-as-code? How did these tools streamline deployment and configuration processes? Were there any specific challenges or complexities you faced, and how did you overcome them?
- Terraform - Projects
- DataTalks Data Engineering Bootcamp
- Udemy Course
- Other Projects
- Ansible
- Homelab
- TechnoTim?
Definitions/Terminology
-
Terraform Infrastructure as Code (IaC):
- A method where infrastructure is provisioned and managed using code and software development techniques, such as version control. With Terraform, this approach allows for consistent and repeatable deployments, making infrastructure changes more predictable and manageable.
-
Ansible for Configuration Management:
- Ansible is an open-source tool that automates software provisioning, configuration management, and application deployment. It ensures that servers and other computing resources are in the desired state specified by the user, making the infrastructure consistent and reliable.
-
Ansible Playbook:
- A playbook is a YAML file that describes tasks or roles to be executed by Ansible. It serves as an automation script that Ansible runs to apply configurations to nodes. Playbooks can include variables, tasks, and handlers, and they define how a particular process should be automated by Ansible.
-
Version Control:
- Version control, also known as source control, is a system that records changes to a file or set of files over time so that you can recall specific versions later. It allows multiple people to work on a project without interfering with each other’s changes and helps in tracking and merging changes made by different contributors.
-
Git:
- Git is a distributed version control system that tracks changes in source code during software development. It allows multiple developers to work on the same codebase simultaneously, merging their changes seamlessly.
-
Bitbucket:
- Bitbucket is a web-based platform that provides Git and Mercurial code repositories. It offers both commercial plans and free accounts and integrates well with other Atlassian products like Jira and Confluence.
-
Confluence:
- Confluence is a collaboration tool used to help teams collaborate and share knowledge efficiently. It’s a place to create, share, and collaborate on projects, documentation, and more.
-
Jira:
- Jira is a popular tool for bug tracking, issue tracking, and project management. It integrates seamlessly with Bitbucket and Confluence, allowing for a unified workflow across project management, code repository, and documentation.
-
Jenkins:
- Jenkins is an open-source automation server that facilitates continuous integration and continuous delivery (CI/CD). It provides a platform to automate the building, testing, and deployment of applications, ensuring faster and reliable delivery of software.
Key Concepts to Demonstrate Competency in Jenkins:
- Continuous Integration (CI):Merging all developers’ working copies to a shared mainline several times a day.
- Continuous Delivery (CD):Ensuring that changes can be released to customers quickly in a sustainable way.
- Build Jobs:Tasks that Jenkins executes.
- Pipelines:A suite of plugins in Jenkins that supports the creation and integration of continuous delivery pipelines.
- Freestyle vs. Pipeline:Differentiating between UI-based jobs and code-defined sequences.
- Jenkinsfile:A text file containing the definition of a Jenkins Pipeline, checked into source control.
- Nodes and Executors:Jenkins operates on nodes with the main server as the master. Executors are computational resources on a node.
- Workspace:A directory where Jenkins builds projects.
- SCM (Source Code Management):Jenkins’ integration with source code solutions like Git, Subversion, and Mercurial.
- Build Triggers:How builds can be initiated in Jenkins.
- Webhooks:Notifications to Jenkins of code changes from platforms like GitHub.
- Plugins:Extensions that enhance Jenkins’ capabilities.
- Distributed Builds:Distributing build tasks across multiple machines with Jenkins.
- Security:Jenkins security concepts including user authentication and authorization.
- Backup and Recovery:Methods to back up Jenkins configurations and restore from backups.
- Integration with Tools:Jenkins’ ability to integrate with various DevOps tools like Docker and Kubernetes.
-
Freestyle:
- AFreestyleproject is the simplest way to come up with a build of a particular project in Jenkins. It’s essentially a series of build steps that Jenkins will execute sequentially. In a Freestyle project, you can define build triggers, build environment configurations, and post-build actions, among other settings. It provides a simple user interface to define the build process. While Freestyle projects are straightforward and easy to set up, they can become limited when you need more complex build workflows or when you want to use code to define your build process.
-
Pipeline:
- APipelineis a more advanced way to define a build process in Jenkins, which allows for more complex, multi-step processes. Pipelines use a domain-specific language called “Pipeline DSL” to define the build process. This allows for code to define the build, test, and deploy stages, making it possible to version control the build process itself and store it alongside your project’s source code. Pipelines can be defined directly in the Jenkins UI or by including a
Jenkinsfile
in the root of your project’s source code repository. Pipelines offer more flexibility and can handle advanced use cases, including parallel execution of tasks, input from users during the build process, and integration with other Jenkins plugins.
- APipelineis a more advanced way to define a build process in Jenkins, which allows for more complex, multi-step processes. Pipelines use a domain-specific language called “Pipeline DSL” to define the build process. This allows for code to define the build, test, and deploy stages, making it possible to version control the build process itself and store it alongside your project’s source code. Pipelines can be defined directly in the Jenkins UI or by including a
In summary, whileFreestyleis a quick and straightforward way to set up a build,Pipelineoffers more flexibility and power, especially for complex projects and workflows.
Scrum Principles
-
Transparency:
- Ensure visibility in all Scrum processes, work progress, product backlog, and team performance.
-
Inspection:
- Regularly review Scrum artifacts and progress to detect variances and ensure alignment.
-
Adaptation:
- Adjust promptly when deviations from goals or quality standards are identified.
-
Iterative Development:
- Product development is divided into time-boxed iterations called sprints.
-
Empirical Process Control:
- Decisions are grounded in observation and experimentation, not just upfront planning.
-
Collaboration:
- Daily close collaboration among developers, stakeholders, product owner, and Scrum Master.
-
Time-boxing:
- Scrum events have a set maximum duration to maintain efficiency.
-
Built-in Quality:
- Emphasis on embedding quality from the outset, covering both functional and non-functional aspects.
-
Self-organization:
- Teams autonomously decide how to transform the product backlog into shippable increments.
-
Focus:
- Concentrate on a limited set of tasks, collaboratively working towards the sprint goal.
-
Continuous Improvement:
- Always seek ways to refine the process, facilitated by events like sprint retrospectives.
-
Value-driven Development:
- Prioritize work based on its significance to stakeholders and the product.
In summary, Scrum’s principles guide teams to consistently deliver high-value products swiftly while being adaptable to evolving requirements.
Bitbucket 101
- Bitbucket:A web-based version control repository hosting service by Atlassian, supporting Mercurial and Git revision control systems.
- Central Management:Bitbucket offers a centralized location for managing git repositories, collaborating on source code, and ensuring code deployment quality.
Key Concepts:
- Repositories:Central locations where source code resides. They can be newly created, imported, set as private, or made public.
- Workspaces:Containers for projects and repositories, allowing for access control and collaboration.
- Branches:Pointers to snapshots of changes, allowing for isolated work. Useful for adding features or fixing bugs.
- Pull Requests:Mechanisms for developers to notify team members of completed features, signaling the need for code review and merging into the master branch.
- Pipelines:Integrated CI/CD service in Bitbucket for automatic code building, testing, and deployment based on repository configuration.
- Integrations:Bitbucket seamlessly integrates with other Atlassian products like Jira and Confluence and supports third-party integrations.
- Version Control Systems:Bitbucket supports both Git and Mercurial, but post-July 1, 2020, new Mercurial repositories can’t be created.
This condensed format provides a clear overview of Bitbucket’s primary features and functionalities.
Confluence 101
- Confluence Overview: - A collaboration tool by Atlassian for creating, sharing, and collaborating on projects.- Key Features: - Pages: - Fundamental units in Confluence for creating project plans, meeting notes, etc. Supports hierarchical nesting. - Spaces: - Workspaces dedicated to specific teams or projects, containing pages, blogs, and unique permissions. - Templates: - Pre-designed formats for consistent and structured content creation. - Macros: - Enhance Confluence pages with added functionality like tables of contents, Jira issue lists, and PDF displays.- Integration: - Seamless collaboration with other Atlassian products, including Jira and Bitbucket.
Jira 101
-
Jira Overview:
- Developed by Atlassian, Jira is a tool for agile teams to plan, track, and release software.
-
Key Concepts:
-
Projects:
- Work in Jira is categorized into projects, encompassing software development, marketing campaigns, helpdesk systems, etc.
-
Issues:
- Fundamental units in any Jira project, representing tasks like software bugs, project tasks, or helpdesk tickets. Each issue has a unique identifier.
-
Workflows:
- Define the lifecycle of an issue, detailing its statuses and transitions throughout its existence.
-
Boards:
- Visual displays of project work, customizable to team preferences. Includes Scrum boards (for sprint planning) and Kanban boards (for work-in-progress management).
-
Projects:
-
Integration:
- Jira seamlessly integrates with other Atlassian products like Confluence and Bitbucket and supports third-party integrations.
-
Product Variants:
- Jira offers specialized products: Jira Software (for software teams), Jira Service Management (for IT/service teams), and Jira Core (for business teams).
Jira provides a comprehensive platform for teams to efficiently manage and track their work, catering to various use cases across different domains.
Ansible 101
- Ansible:An open-source software provisioning, configuration management, and application-deployment tool.
- Simplicity:Ansible is known for its simplicity and low learning curve.
- Agentless:Nodes managed by Ansible don’t require any software installation.
- State-based Approach:Ensures the desired state of the system is maintained.
Key Concepts:
- Playbooks:Customizable scripts written in YAML that define the state of target hosts.
- Modules:Units of code Ansible executes, each with a specific use.
- Roles:Sets of Ansible artifacts allowing for the automatic loading of various Ansible components.
- Collections:A distribution format for Ansible content, including playbooks, roles, modules, and plugins.
- Inventory:A list of managed nodes or hosts. It can specify node details and organize them into groups.
Ansible in DevOps:
- DevOps Integration:Ansible is used for cloud provisioning, configuration management, application deployment, and more.
- Server Management:Ansible can manage servers both on-premise and in the cloud.
- CI/CD Support:Ansible supports continuous integration and continuous delivery integrations.
- Idempotency:Ensures consistent configuration of target hosts.
- Infrastructure as Code (IaC):Ansible supports a model-driven approach to manage IT infrastructure.
- Ansible Automation Platform:Offers modules for various IT integrations, a user interface, RBAC, a workflow visualizer, and CI/CD integrations.
- Efficiency in DevOps:Ansible eliminates repetitive tasks, freeing up DevOps teams for strategic work.
- Red Hat Support:Ansible is backed by Red Hat, providing credibility and support.
Conclusion:Understanding Ansible’s role in IT automation is vital for a DevOps job interview, emphasizing its application in automating various DevOps tasks.
Terraform 101
- Terraform:An open-source Infrastructure as Code (IaC) tool by HashiCorp for building, changing, and versioning infrastructure.
- HashiCorp Configuration Language (HCL):Terraform’s declarative language that describes the desired infrastructure end-state.
Key Concepts:
- Providers:Plugins that allow Terraform to interact with cloud and SaaS providers. They define resource types and data sources.
- Resources:Represent pieces of infrastructure in a Terraform script, such as VMs, databases, or email services.
- Data Sources:Read-only operations dependent on provider configuration. The external data source exposes arbitrary data for use in Terraform configuration.
- State:A file maintained by Terraform detailing the resources within a project. It maps resources, tracks metadata, and aids in performance.
- Modules:Containers for multiple resources used together in Terraform, aiding in reusability and organization.
Terraform Workflow:
- Init:Initializes code and downloads specified requirements.
- Plan:Creates an execution plan, validates configurations, and determines required actions.
- Apply:Scans the directory for configuration and enacts the necessary changes.
- Destroy:Cleans up the Terraform environment to prevent unnecessary costs.
Terraform in DevOps:
- Automation:Terraform automates infrastructure provisioning and management, essential for DevOps engineers.
- Multi-Platform Support:Supports various cloud platforms, ensuring consistent infrastructure management.
- State-Based Approach:Ensures the desired infrastructure state is consistently achieved and maintained.
- Infrastructure as Code (IaC):Manages IT infrastructure in a model-driven manner, offering speed, error avoidance, and synchronization.
Conclusion:For a DevOps job, understanding Terraform’s role in IT automation is vital. It’s essential to grasp not only Terraform’s basics but also its application in automating DevOps tasks.
Terraform Infrastructure as Code (IaC):
A method where infrastructure is provisioned and managed using code and software development techniques, such as version control. With Terraform, this approach allows for consistent and repeatable deployments, making infrastructure changes more predictable and manageable.