Course Taxonomy: Technology Platforms

Chef Foundations – Official Chef Training

Part 1: Using Chef resources – the building blocks

Part 2 : Building Chef recipes and cookbooks

Part 3: Introduction to testing cookbooks with Test Kitchen

Part 4: Collecting details about the system via Ohai

Part 5: Attributes – writing dynamic code

Part 6: Managing data with templates

Part 7: Advanced templating – passing in variables

Part 8: Storing your code in a repo – an introduction to Git

Part 9: Workstation setup

Part 10: Centralizing management with Chef Server

Part 11: Using Community Cookbooks

Part 12: Automating chef-client runs

Part 13: Managing a multi-node infrastructure

Part 14: Simplification and scalability through Roles

Part 15: Power automation – invoking Chef Search

Part 16: Staging versus Production – Environments

Part 17: Using Databags to create user accounts on servers

Ansible Configuration Management Boot Camp

Part 1: Introduction

  1. Why configuration management is a critical part of any DevOps team
  2. Strengths and weaknesses of Ansible
  3. Web-scale
    1. How Ansible is different from other CM tools like Chef and Puppet
    2. Getting started with Ansible terminology
    3. Ansible and YML for describing your environments

Part 2: Getting set up

  1. Some prerequisites
  2. Getting set up on a Mac
  3. Getting set up on Linux
  4. Getting set up on Windows
  5. Testing with Vagrant
  6. Using SSH keys to connect to your target nodes
  7. Hands-on Practice Lab: Install Ansible and test connectivity to your test nodes.

Part 3: Inventory

  1. Basic inventory example
  2. Hosts and groups
  3. Hands-on Practice Lab: Create an inventory file that defines four hosts, two web servers and two database servers, and assign these hosts to groups that describe their function.

Part 4: Ansible Playbooks

  1. A useful directory structure to keep your Ansible code organized
  2. Using git to manage your Ansible code
  3. A first look at a playbook to install and configure NTP time synchronization
  4. Hands-on Practice Lab: Create a playbook to install and configure OpenSSH-server on all nodes and make sure it is running.

Part 5: Provisioners

  1. Connecting Ansible to your preferred cloud provider (we'll use DigitalOcean)
  2. Creating a new server instance
  3. Dynamic inventory
  4. Dynamic inventory on Amazon AWS
  5. Mixing static and dynamic inventory
  6. Hands-on Practice Lab: Refactor your inventory so that your staging environment is local using Vagrant, and your production environment is built on DigitalOcean.

Part 6: Highly available infrastructure with Ansible

  1. Spec up our inventory and host groups
  2. Using roles
  3. Configure our database backend
  4. Configure our web server front-end
  5. Configure a replicated filesystem
  6. Configure centralized logging
  7. Hands-on Practice Lab: Build the sample infrastructure on your local Vagrant environment.

Part 7: Application deployments with Ansible

  1. Deploying our app from SCM to our local Vagrant environment
  2. How we would deploy that code to production once tested by QA
  3. Updating our application
  4. How Ansible compares to alternatives such as Capistrano
  5. Hands-on Practice Lab: Proceed with deploying our application on your local Vagrant environment.

Part 8: Docker containers with Ansible

  1. A brief intro to Docker
  2. The synergy of containerization and automation
  3. Using Ansible to build Docker containers
  4. MySQL containers
  5. Web application containers
  6. Data storage containers
  7. Hands-on Practice Lab: Adapt your infrastructure to deploy our sample app using Docker.

Part 9: Testing and continuous integration

  1. Unit, integration, and functional testing
  2. Automating your testing using GitHub and Travis CI
  3. Hands-on Practice Lab: Create some tests for our SSH playbook to make sure there are no syntax errors and that Ansible is configuring nodes as expected.

Part 10: Preparing for Ansible back at work

  1. Real-world use case: Using Ansible to automate CM and application pipelines through continuous integration, release, deployment, and operations
  2. We'll review your own environments and processes and evaluate how to best integrate Ansible's configuration management for your own needs
  3. Exercise: Your to-do list

Git & GitHub Boot Camp

Part 1: Git – Basic and Advanced Commands

1. Getting started with Git & GitHub

  • Why Git?
  • Installing Git on Windows
  • Installing Git on Mac
  • Installing Git on Linux
  • Signing up to GitHub
  • HTTPS
  • SSH
  • Understanding Git

2. Basic Git Commands

  • Configuration
  • Initializing a repository
  • Adding commits
  • Adding a remote
  • Pushing to the remote
  • Fetching from the remote
  • Pulling from the remote
  • Creating a branch
  • Merging
  • Cloning
  • Reset
  • Revert

3. Advanced Git Commands

  • Amending commits
  • Rebasing
  • Interactive rebasing
  • Cherry-picking
  • Bisect
  • Aliases
  • Hooks
    • Git hooks allow you to run scripts before or after certain Git actions (e.g., modify the commit message prior to committing).

Part 2: GitHub – Team and Enterprise Applications

1. Getting started with GitHub

  • Two-factor authentication
  • Searching GitHub
  • Starring repositories
  • Following people
  • Watching repositories
  • Commit email addresses
  • Notifications

2. Options for teams

  • Organization accounts
    • Organization accounts allow you to combine multiple GitHub users into an organization. A single GitHub user can be a member of several organizations. A repository can also be owned by an organization instead of a single user.
  • Teams
    • Organization accounts allow you to combine multiple GitHub users into an organization. A single GitHub user can be a member of several organizations. A repository can also be owned by an organization instead of a single user.
  • Paid plans
    • GitHub offers a lot of functionality for free. But companies often need more. The paid plans allow things like private repositories, fine-grained access control, extra support, etc.

3. Working in teams

  • GitHub Flow
    • GitHub Flow is an easy branching strategy. It starts from a master branch and creates only feature branches from there. The feature branches only get merged into the master branch when approved and ready for release. This allows a team to have a rapid cadence of releases, but it also creates some requirements that need to be addressed. For example, you will need a good CI/CD pipeline, a business that accepts rapid releases, possibly a good feature toggle system, etc.
  • Git Flow
    • GitFlow is a more complex branching strategy but allows for a more secure development and deployment pace. It's often more fit for larger enterprises. Luckily, there are CLI plugins and GUI tools that support GitFlow and make it easy to work with. This way, developers don't have to remember the specific commands and branching flows.
  • Documentation
  • Issues
  • Projects
    • GitHub projects give teams a Kanban board to organize and visualize their work. It's a step up from GitHub Issues.
  • Releases
    • Git allows developers to create tags in their repositories. In GitHub, you can easily link these tags to "Releases." A release can contain release notes, providing a nice overview of what changed over time.

Introduction to Kubernetes

Part 1: Prerequisites – Kubernetes Foundations

  1. Containers
  2. Linux Kernel Features
  3. Container User Experience
  4. New Container Capabilities
  5. Gaps using Containers in Production
  6. Microservices
  7. DevOps

Part 2: Core Concepts of Kubernetes

  1. Cluster Orchestration
  2. Looking at K8S Origination at Google
  3. Open Source
  4. Benefits
  5. Design Principles

Part 3: Navigating Kubernetes Architecture

  1. Master/Node
  2. Kubectl
  3. Replication Controller
  4. Kubelet
  5. Kube-Proxy
  6. Persistent Volumes
  7. Etcd
  8. High Availability

Part 4: Using Kubernetes Features

  1. Pods
  2. Labels
  3. Services
  4. Namespaces
  5. Resource Quota

Part 5: Security and Kubernetes

  1. Goals
  2. Roles
  3. Attribute-Based Access Control
  4. Policies
  5. Service Accounts
  6. Secrets

Part 6: Networking and Kubernetes

  1. Docker Networking
  2. Kubernetes Networking
  3. Pod to Pod
  4. Exposing Services
  5. IP Per Pod
  6. Inter Pod Communication
  7. Intra Pod Communication

Part 7: Cluster Add-ons

  1. Cluster DNS
  2. Logging with Elasticsearch and Fluentd
  3. Container Level Monitoring
  4. cAdvisor
  5. InfluxDB
  6. Prometheus

Part 8: Practical Kubernetes Examples

  1. Hello World
  2. WordPress         
  3. Guestbook
  4. 3 Tier App
  5. Http/Https Load Balancing

Part 9: Continuous Integration with Kubernetes

  1. Canary Release
  2. Blue Green Deployment
  3. A/B Testing
  4. Rolling Update
  5. Jenkins Plugin

Part 10: Roadmap/Beta

  1. Ingress
  2. Deployments
  3. Autoscaling
  4. Jobs
  5. DaemonSets
  6. Network Plugins
  7. DNS

Part 11: Class conclusion – Implementation, Q and A, Next Steps

  1. Discussion: What can you apply?
  2. How can Kubernetes help your situation
  3. Expert Q and A

Microservices Engineering Boot Camp

Part 1: Intro to Microservices

  1. Optimize for speed, not efficiency
  2. Case Study: General Electric
    1. Throughput
    2. Waste
  3. Amazon Web Services Case Study (SOA/Microservices)
    1. Problem: Scaling the Organization and the ‘Big ball of mud’
    2. Conway’s Law
    3. Service Oriented Architecture
    4. Forced Self Service Mandate
    5. Result: Amazon dominance of cloud
    6. Result: High velocity at scale
  4. Intro to Containers (encapsulation)
    1. What is Docker
    2. Exercise: Install Docker
    3. Exercise: Docker Hello World
    4. Docker ecosystem
    5. Docker concepts
    6. Container encapsulation/ideal use cases
      1. Encapsulation
      2. Speed
      3. Increased utilization of computing resources
    7. Benefits
      1. Configure once, run everywhere
    8. VM’s vs Container use cases
      1. Databases & stateless workloads
    9. Docker Architecture
    10. Exercise: Docker 101 – Web App
    11. Docker File System
    12. Docker Images
    13. Exercise: Stateless Web App
    14. Local Registry
    15. Data Volumes
    16. Exercise: Docker 201 – Compose Multi-tier app
    17. Continuous integration patterns
    18. Docker Security
    19. Continuous Integration
      1. Canary Release
      2. Blue Green Deployment
      3. A/B Testing
      4. Rolling Update
      5. Jenkins Plugin
  5. Microservice challenge: Continuous Integration Service
    1. On-Premise
      1. Jenkins
    2. SaaS Service
      1. Shippable
      2. Jenkins
      3. TravisCI
    3. Exercise: Trigger build/tests from change

Part 2: Microservices in Development

  1. Uber Case Study
    1. 2000 services, 1000 engineers
    2. Tradeoffs
      1. Plus – overall development speed
      2. Cons – technical challenges
  2. Box Case Study
    1. Traditional service deployment with bare metal
    2. 10x faster workflow with DevOps practices
  3. Microservice challenge: Image repository
    1. Docker repository development instance
    2. On-Premise Service
      1. Quay by CoreOS
    3. SaaS solution
      1. Docker Hub
      2. JFrog
    4. Exercise: Submit image to service
    5. Exercise: Pull image from service
  4. Intro to Kubernetes (Containers at Google)
    1. Prerequisites
    2. Containers
    3. Linux Kernel Features
    4. Container User Experience
    5. New Container Capabilities
    6. Gaps using Containers in Production
  5. Exercise: Kubernetes 100: Hello World
  6. Core Concepts
    1. Cluster Orchestration
    2. Originated at Google
    3. Open Source
    4. Benefits
    5. Design Principles
  7. Architecture
    1. Master/Node
    2. Kubectl
    3. Replication Controller
    4. Kubelet
    5. Kube-Proxy
    6. Persistent Volumes
    7. Etcd
    8. High Availability
    9. Exercise: Kubernetes 101: Stateless web app
  8. Kubernetes Features
    1. Pods
    2. Labels
    3. Services
    4. Namespaces
    5. Resource Quota
  9. Exercise: Kubernetes 201: Guestbook app

Part 3: Microservices in Production

  1. Spotify Case Study
    1. 810 Services, 477 engineers
  2. Microservice challenge: Service discovery
    1. Skydns
    2. Consul
  3. Exercise: Resolve service with DNS
  4. Security
    1. Goals
    2. Roles
    3. Attribute Based Access Control
    4. Policies
    5. Service Accounts
    6. Secrets
  5. Forth Microservice challenge: Secrets
    1. Vault
    2. Kubernetes Secrets API
  6. Exercise: Kubernetes – Store database credentials in cluster
  7. Cluster Add-ons
    1. Cluster DNS
    2. Logging with Elasticsearch and Fluentd
    3. Container Level Monitoring
    4. cAdvisor
    5. InfluxDB
    6. Prometheus
  8. Exercise: WordPress on Kubernetes
  9. Managing state with disposable architectures
    1. Tradeoffs, standalone vs containerized databases
    2. CAP Theorem
    3. SQL Databases
    4. NOSQL Databases
  10. Exercise: Cassandra on Kubernetes
  11. Practicing Failure
    1. Optimize MTTR
  12. Netflix Case Study
    1. Simian Army
    2. Graceful handling of failure

Part 4: Putting it all together

  1. Why Microservices?
    1. Scale an organization
    2. Tradeoffs
    3. Fault Tolerance
    4. Throughput
    5. Waste
  2. Kubernetes Alpha Features
    1. Multi-Datacenter Control Plane
    2. RBAC/Multi-tenancy
  3. Openshift/Mesos/Other PaaS platforms
  4. Exercise: Customize Microservice App
  5. Exercise: Scale app for simulated demand
  6. Review of Microservice Challenges
    1. Secure Images
    2. Highly available application
    3. Secrets
    4. Continuous Integration
    5. DNS Name resolution
  7. Summary

BigPicture for Teams

Part 1: BigPicture Basics

  • The building blocks of BigPicture
  • Best practices for navigating the BigPicture UI
  • Real-time synchronization between BigPicture and Jira
  • Getting comfortable with Boxes

Part 2: Fundamentals of BigPicture Gantt

  • Navigation
  • Scope
  • Column
  • Views
  • Populating the chart
  • Task Templates
  • Planning and Execution
  • Dependencies and Scheduling Modes
  • Milestones
  • Critical Path and Baseline
  • Aggregation on column views
  • Filtering and Sharing
  • Grouping

Part 3: Advanced Features of BigPicture Gantt

  • Importing and cloning data
  • Basic tasks
  • Resources
  • Infobar
  • Scenarios
  • Hierarchy builders

Part 4: Working with Teams

Part 5: Exploring the features of Teams and Resources

  • Working with BigPicture's Teams
  • Clear overview of a Resources workload
  • Allocation constraints in Resources
  • Optimizing and managing Resources
  • Skill-based planning
  • Workload and Holiday plans
  • Five ways of changing capacity

Part 6: Portfolio overview and Objectives

  • BigPicture Roadmap Fundamentals
  • Objective-driven planning

Part 7: Risk Management, Calendar Planning, and Backlog Grooming

  • Defining and managing risks
  • Using the calendar mode
  • Using the Scope module for backlog grooming

Part 8: Using Board 2.0 to scale Agile

  • Agile approach with multi-team capabilities
    • Planning
    • Execution
    • Team Capacities
    • Board Reports
    • Dependencies

Part 9: Reports and Administration

  • Security
  • Budgeting
  • Reports in BigPicture
  • Gadgets
  • Administration Features

 

Using Jira Align to Implement SAFe

Section 1: Introduction to Jira Align for SAFe Organizations

The opening section will set the groundwork for SAFe and Jira Aligns support of the framework. 

Section 2: Portfolio Management

In this section we will review LPM concepts and practices from the perspective of Agile Portfolio Operations and Lean Governance as described by SAFe. Starting with a demonstration of Strategy & Investment Funding, we will look at how strategic goals and their alignment to Strategic Themes help the APMO/LACe and train leaders make decisions.

The participants will then complete the following guided exercises to understand Lean Portfolio Management concepts and how Jira Align supports each.

  • Create Portfolio Epics and associate them to (pre-created) Themes
    • Allocate portioned theme budgets to Portfolio Epics.
  • Manage Intake using the Portfolio Kanban Board
    • Students will move their Epic through the Portfolio Kanban, ensuring exit criteria Is met
  • Use the backlog to prioritize and rank Portfolio Epics – pulling rank from Themes and modifying the ranking of the Epics In the UI
  • 'Create' Roadmaps
    • Calendar View -aka 'planning view'
      • View Planned & Unplanned work, modify the views
      • Students will adjust epics and sync to the backlog
    • PI View – aka "health & reporting view' Students will
      • Update Health
      • Add Milestones
      • View by Product
      • Briefings views by customer

Section 3: Program/ART Management

In this section, we will cover the 'heart' of SAFe. Connecting strategy to execution begins with prioritized set of portfolio epics, from there our architects and product managers create the execution plans. Participants will:

  • Decompose Portfolio Epics Into Features
  • Use backlog to rank Features (Jira Epics) Pulling rank from Epics –
    • Align features to Jira Projects for the train.
    • Watch as the feature syncs to Jira
  • Backlog Management
    • Ranking – Pull rank from the Epics, Prioritize the backlog and push the new rank to Jira
    • Orphan objects – using the orphan functionality to ensure all work is estimated and aligned to a parent
    • Estimation
    • Kanban column view – pull top features – to get to "close velocity"

Section 4: PI Simulations

  • Prepare for & conduct MOCK PI Planning
    • Select top 10 most Important features (pre-defined list)
    • Program Board – Pre PI Load by PM/RTE role
  • Integration to /from Jira
    • The proper set up of Jira for SAFe
      • Class participants will be able to see stories from Jira Align, write to Jira
      • Class participants creating Feature (Jira Epics) or Stories in Jira
      • Dependencies – 2 per team
      • Risks – 1 per team
      • Objectives
        • Associate 1 to OKR (pre-existing)
        • Program Board View
        • Program Room
      • Monitor PI Progress using the Program Board
        • Show program board In flight – how to resolve problems

Section 5: Report on progress throughout the PI and across the portfolio

  • Work Tree
  • WIP
  • PIP
  • Scope Change
  • Risk report
  • Objective Report/tree
  • PI Progress Report
  • PI Clean up Report
  • Roadmaps
  • INv V Actuals
  • Investment Theme
  • OKR
  • Work Tree Strategy View