Chapter 1. What is DevOps
- Dev and Ops Views
- Leading By Example …
- What is DevOps?
- More DevOps Definitions
- DevOps and Software Delivery Life Cycle
- Main DevOps’ Objectives
- The Term “DevOps” is Evolving!
- Infrastructure as Code
- Agile IT in the Cloud
- DevOps on the Cloud
- Prerequisites for DevOps Success
- Alignment with the Business Needs
- Collaborative Development
- Continuous Testing and Integration
- Continuous Release and Deployment
- Continuous Application Monitoring
- Benefits of DevOps
- What is Involved in DevOps
Chapter 2. Configuration Management
- What is Chef?
- Benefits of Infrastructure-as-Code
- Chef – Sample Usages
- Deployment / License
- Who uses Chef
- Chef Architecture
- Chef Components
- Workstation
- Recipe
- Cookbook
- Ruby
- Knife
- Node
- Chef-client
- Chef Server
- Chef Analytics
- Chef Supermarket
- Salient Features of Chef
- Supported Platforms
- Chef Components
- Chef Server prerequisites
- Install Configuration Scenarios
- Standalone Installation
- Installing Optional Chef Server Components
- Workstation
- Chef DK
- Chef DK Prerequisites
- Chef Repository
- Installing Chef DK
- Ohai
- Ohai Attributes
- Cookbooks
- Components of a Cookbook
- Metadata
- Recipes
- Resources
- Directory Resource
- Package Resource
- Service Resource
- File Resource
- Script Resource
- User Resource
- Additional Chef Advanced Features
Chapter 3. Version Control
- What is Version Control
- History of Version Control
- “Undo” Capability
- Collaboration
- Communication and Sharing
- Auditing and Tracking
- Release Engineering, Maintenance, SDLC
- Diagnostics
- Distributed Version Control
- Integrating Version Control into Jenkins
- What is Git
- Git’s Design Goals
- Branching and Merging
- Centralized Version Control
- Distributed Version Control
- Git Basics
- Getting Git
- Git on the Server
- Git Repository Managers
- Git on Somebody Else’s Server
- Using Git
- Repository
- Definitions
- Commit
- How to Think About Commits
- Viewing History
- Configuring Git
- Configuration Scope
- User Identification
- GPG Signing
- Gnu Privacy Guard
- GPG Basics
- GPG and Git
- .gitignore
- Other Useful Configurations
Chapter 4. Version Control
- SVN
- SVN vs CVS
- SVN Installation
- SVN Life Cycle
- Perforce
- Important Perforce Terms
- Perforce Clients
- Mercurial
- Installation
- Some Useful Commands
- Team Foundation Version Control
- TFVC Workspaces
- TFVC Capablities
- Atomic Check-In
- Check-In Policies
- Shelving
- Team Visibility
- Locks
- Labeling
- Branching
- Branch Visualization and Tracking
- Cross-Platform Support
- Disconnected Work
Chapter 5. Continuous Integration
- What is Continuous Integration
- Integration Tools
- Typical Setup for Continuous Integration
- Jenkins Continuous Integration
- Jenkins Features
- Running Jenkins
- Jenkins Integration with various Version Control Solutions
- Jenkins Job
- Apache Maven
- Goals of Maven
- What is Apache Maven?
- Why Use Apache Maven?
- The Maven EcoSystem
- Consistent Easy-to-Understand Project Layout
- Convention Over Configuration
- Maven is Different
- Maven Projects have a Standardized Build
- Effect of Convention Over Configuration
- Importance of Plugins
- A Key Point on Maven!
Chapter 6. Continuous Code Quality
- Continuous Code Quality
- What is SonarQube
- SonarQube – Benefits
- SonarQube (Multilingual)
- Seven Axes of Quality
- Potential Bugs
- Tests
- Comments and Duplication
- Architecture and Design
- Complexity
- SonarQube Installation
- SonarQube Components
- Code Quality (LOC, Code Smells)
- Code Quality (Project Files)
- Code Quality (Code)
Chapter 7. Automation – Scripting
- Why Automate
- When to Automate
- Goals for Scripting
- Error Handling
- Logging
- Automating Versioned Builds
- Automating Deployment
- Automating Continuous Integration Tests
- Automated Cleanup
- Introduction to Shell Scripts
- Basic Shell Script
- Return Status
- Variables
- Special Variables
- Arrays
- Operators
- Conditional Statements
- Loops
- Loops – while
- Loops – for
- Loops – until
- Loops – select
Chapter 8. Continuous Monitoring
- What is Continuous Monitoring
- Monitoring Tools
- Dynatrace Application Monitoring
- Splunk
- Splunk Functionalities
- Splunk Searching
- Splunk Functions
- Nagios
- Nagios – Installation
- Nagios – Hosts
- Nagios – Web User Interface (Hosts)
- Nagios – Monitoring Services
- Monitoring HTTP
- Monitoring FTP
- Monitoring SSH
- Monitoring SMTP
- Monitoring POP3
- Monitoring IMAP
Chapter 9. Containerization
- Containerization (Virtualization)
- Hypervisors
- Hypervisor Types
- Type 1 hypervisors
- Type 2 hypervisors
- Type 1 vs Type 2 Processing
- Paravirtualization
- Virtualization Qualities (1/2)
- Virtualization Qualities (2/2)
- Disadvantages of Virtualization
- Containerization
- Virtualization vs Containerization
- Where to Use Virtualization and Containerization
- Popular Containerization Systems
- What are Linux Containers
- Docker
- OpenVZ
- Solaris Zones (Containers)
- What is Docker
- Where Can I Ran Docker?
- Docker and Containerization on Linux
- Linux Kernel Features: cgroups and namespaces
- The Docker-Linux Kernel Interfaces
- Docker Containers vs Traditional Virtualization
- Docker as Platform-as-a-Service
- Docker Integration
- Docker Services
- Docker Application Container Public Repository
- Competing Systems
- Docker Command-line
- Starting, Inspecting, and Stopping Docker Containers
- Docker Benefits
Chapter 10. Collaboration
- What is JIRA?
- License
- JIRA Technical Specifications
- Issues
- Who uses JIRA
- JIRA Products
- JIRA Core
- JIRA Software
- JIRA Service Desk
- What a typical project involves?
- JIRA Integration
- Integrating JIRA into Jenkins
Chapter 11. The Journey
- Agile Development
- What is Continuous Integration
- Typical Setup for Continuous Integration
- DevOps in the Enterprise
- Scaling DevOps
- Scaling DevOps (Organization Structure)
- Scaling DevOps (Locality)
- Scaling DevOps (Team Flexiblity)
- Scaling DevOps (Teams: Hiring as Scaling)
- Scaling DevOps (Teams: Employee Retention)
- DevOps Myths
- DevOps Anti-Patterns (Blame Culture)
- DevOps Anti-Patterns (Silos)
- DevOps Anti-Patterns (Root Cause Analysis)
- DevOps Anti-Patterns (Human Error)
- DevOps Patterns For Success
- DevOps Patterns For Success (Cloud)
- DevOps Patterns For Success (Automation)
- DevOps Patterns For Success (Culture)
Chapter 12. Automation – Scripting
- Why Automate
- When to Automate
- Goals for Scripting
- Error Handling
- Logging
- Automating Versioned Builds
- Automating Deployment
- Automating Continuous Integration Tests
- Automated Cleanup
- Introduction to Python
- Basic Python Script
- Python Comments
- Assignment Not Allowed in Expressions
- Variable Naming
- Variable Assignment
- Numbers
- Strings
- Lists
- Tuples
- Dictionary
- Some Useful Data Type Conversion Functions
- Operators
- Decision Making
- Block Scope
- While Loop
- For Loop
- Break and Continue
- Functions
- Exceptions
- Classes
- Using Classes
- Inheritance
- Modules
Lab Exercises:
Lab 1 – Configuration Management
In this lab you will explore Chef basics. You will create recipes that utilize various Chef resources.
Lab 2 – Version Control – Git
In this lab you will install, configure, and use Git.
Lab 3 – Version Control – SVN
In this chapter you will install, configure, and use SVN.
Lab 4 – Continuous Integration
In this chapter you will install and configure Java, Jenkins, Maven, and various SCM plugins for Jenkins.
Lab 5 – Install Prerequisites
In this lab you will install the Apache web server, MySQL, and PHP. They are required by Continuous Code Quality (SonarQube) and Continuous Application Monitoring (Nagios) tools.
Lab 6 – Continuous Code Quality – SonarQube
In this lab you will install, configure, and use SonarQube server, SonarQube Scanner, and Maven to check code quality.
Lab 7 – Automation (Shell Scripting)
In this chapter you will explore basics of Bash shell scripting.
Lab 8 – Tomcat Application Deployment using Chef
In this lab you will install Tomcat and use Chef to deploy a sample Tomcat application.
Lab 9 – Continuous Monitoring – Nagios
In this lab you will install, configure, and use Nagios to monitor servers and services.
Lab 10 – Containerization – Docker
In this chapter you will install and configure Docker.
Lab 11 – Scripting 101 – Python (OPTIONAL)
In this chapter you will explore basics of Python scripting.