About Course
  • Know your Instructor - Who is Gourav Shah ?
Infrastructure as a Code
  • Introduction
  • Four Approaches to Manage Infrastructures
  • Scripts vs IaaC - Procedural vs Declarative Approaches
  • My Story - How I got started with Puppet
  • Pull Model Centralized Configuration Management
  • Convergence and Idempotence
  • Code vs Data - Creating Dynamic Configurations
  • Iterative Approach, Who is Puppet for, What it is not
  • Is IaaC only about Puppet/Chef ? Going beyond the configuration management
Path to Automation with Puppet
  • Introduction
  • Path to Automation with Puppet
  • Training Approach
Environment Setup
  • Environment Setup - Section Intro
  • Codespaces Introduction
  • Using Codespaces
  • Puppet Master Agent Setup
  • Regenerating Certs
  • Project Intro
Manifests
  • Introduction
  • Resource DSL
  • Writing our first Manifest
  • Applying Puppet Manifest Locally
  • Idempotence and Convergence
  • Solution to Exercise
  • Execute Resource and Idempotence
  • Lab: Creating and applying a Puppet Manifest
  • Slides: Puppet - Manifests
Modules
  • Introduction
  • Anatomoy of a Module and Modulepath Configurations
  • Generating Modules
  • Classes, Naming Convention and Strategies
  • Creating java::install class, Classifying Node with Node Definitions
  • Using Default Block, Adding Checkpoints with Notify Resource, Classification
  • Ordering, Notifications and Meta Parameters
  • Exercise - Creating Tomcat Classes
  • Solution to Tomcat Exercise
  • Using init.pp , Defining Dependencies
  • Managing Configurations
  • Lab: Modules
  • Slides: Creating Modular Code
Parameters
  • Introduction
  • Code vs Data, Defining Sane Defaults
  • Params.pp design pattern, Defining Variables
  • Inheritance to consume properties defined in params
  • Parameterize Tomcat Configs
  • Supporting Platform Specific Configs with Params.pp and Switches
  • Using Facts inside Classes to create flexible configs
  • Lab: Data Driven Modules - Params and Facts
  • Slides: Puppet Parameters, Facts and Templates
Templates
  • Introduction
  • Why Templates? ERB Syntax
  • Templatizing Tomcat Configs
  • Lab: Converting tomcat.conf into a template
Parameterized Classes
  • Introduction
  • The need for Parameterised Class
  • How to write a Parameterised Class
  • Creating Parameterised Class for Tomcat
  • Lab: Coverting tomcat class into a parameterised class
Defined Types
  • Introduction
  • Defined Types vs Parameterised Classes, when to use what?
  • Puppetforge, Modules Selection Criteria, HAProxy Loadbalancers
  • Setting up a Load Balancer with Defined Types
  • Lab: Defined Types
Deploying a Application
  • Introduction
  • Setting up Sysfoo build with CircleCI and GitHub
  • Wrting a Defined type to Deploy Sysfoo
  • Selecting and writing Resources to Deploy the App
  • Making deployment code Idempotent
Environments
  • Introduction
  • Creating a dev environment and adding nodes to it
  • r10k - Automating Code Deployments to Puppet Master
  • Setting up Control Repo and Puppetfile
  • Deploying to dev environment with r10k
Using Hiera
  • Introduction
  • What is Hiera, an Introduction
  • Using Hiera to create per environment configurations
  • Using Hiera for Node Classification, Overriding Properties with Additional Data
  • Lab: Hiera Lab for Puppet
Puppet Enterprise
  • Introduction
  • Install Puppet Enterprise
  • Adding Nodes to PE
  • Dynamically Classifying Nodes with Groups
  • Orchestrating Application Stacks
Roles and Profiles Design Patterns
  • Introduction