- Resource type syntax
- Conditional logic
- Variables and scope
- Data types
- Defined types
- Advanced function usage (e.g. functions that accept lambdas)
- Puppet-language functions
- Relationships and ordering
- Resource idempotence
- The type, title and namevar of a resource
- The types and providers abstraction layer
- Idempotent exec resources
- Passing parameters
- Passing parameters using powershell
- Returning data from tasks
- Secure coding practices
- Basic plan writing
- Error handling in plans
- Dynamic target manipulation (i.e. changing the targeted nodes using in-plan logic)
- Returning data from a plan
- Composition of plans (plans that run plans)
- Debugging & exploring ruby using pry (Use this to begin teaching people since they will be used to using a REPL and Pry is nice and UNIX-ey)
- Conditional logic
- Variables and scope
- Data types
- Object-orientated programming
- Custom facts
- Custom functions
- Rspec-puppet and testing
- Testing using Litmus
- Types and providers
- Custom report processors
- Custom hiera backends
- Puppet faces?
- Installing PE
- Macro architecture i.e. compilers, primary, secondary
- Micro architecture, what services do, how they are configured, what are their dependencies, are they stateful or stateless, can they be load-balanced, how are they made HA?
- Tuning and scaling, typical load patterns
- Proxies and their effect on PE communications
- Log location and how to configure more detailed logging
- Common debugging tools and methods
- Metrics ingestion from support script using Support’s tooling
- Postgres debugging using pgbadger
- Garbage collection analysis using gceasy.io
- Which API endpoints are available and what they do
- How APIs are used in the normal operation of Puppet
- Puppet DB queries & PQL
- Containers
- Kubernetes
- Installing CD4PE
- Installing Comply
- Style and naming conventions
- The roles and profiles pattern
- Component modules and how they are different from profiles
- Composition of profiles to reduce duplication (i.e. profile::base vs profile::base::windows)
- Data separation using hiera
- Hiera hierarchy design
- Handling of sensitive data
- PDK
- Git workflows using r10k
- Development Practices for Ops
- Workflows using CD4PE
- CD4PE Custom deployment policies to implement advanced deployments
- General system administration
- Deploying Chocolatey
- Chocolatey Custom Packaging
- DSC
- Active Directory
- WMI Providers
- Privilege escalation
- Powershell scripting
- General system administration
- Service management frameworks (e.g. systemd)
- Moving files between machines
- Configuring package managers
- Creating custom packages
- Users and permissions
- Scripting (Bash, Perl etc.)