[Day 1 (8 Hours)]
-
Quick Overview on Terraform
-
Installing Terraform
-
Setting up AWS account
-
-
Deploying Infrastructure with Terraform
-
Creating first EC2 instance with Terraform
-
Destroying Infrastructure with Terraform
-
Destroying Specific Resource
-
Understanding Terraform State files
-
Understanding Desired & Current States
-
Challenges with the current state on computed values
-
Terraform Commands - State Files
-
Types of Terraform Providers
-
-
Read, Generate, Modify Configurations
-
Understanding Attributes and Output Values in Terraform
-
Referencing Cross-Account Resource Attributes
-
Terraform Variables
-
Approaches for Variable Assignment
-
Data Types for Variables
-
Fetching Data from Maps and List in Variable
-
Count and Count Index
-
Conditional Expressions
-
Local Values
-
-
Read, Generate, Modify Configurations
-
Terraform Functions
-
Data Sources
-
Debugging in Terraform
-
Terraform Format
-
Validating Terraform Configuration Files
-
Load Order & Semantics
-
Dynamic Blocks
-
Tainting Resources
-
Splat Expressions
-
Terraform Graph
-
Saving Terraform Plan to File
-
Terraform Output
-
Terraform Settings
-
Dealing with Large Infrastructure
-
-
Terraform Provisioners
-
Understanding Provisioners in Terraform
-
Types of Provisioners
-
Implementing remote-exec provisioners
-
Implementing local-exec provisioners
-
Creation-Time & Destroy-Time Provisioners
-
Failure Behavior for Provisioners
-
[Day 2 (8 Hours)]
-
Loops, Meta-Arguments, Splat Operator and Functions
-
Implement Variable Lists, Maps and Count
-
Implement Outputs with For Loops and Splat Operators
-
Implement AZ Datasource and for_each Meta-Argument
-
Implement Outputs with toset, tomap functions and create and
destroy
-
-
Terraform Modules & Workspaces
-
Understanding DRY principle
-
Implementing EC2 module with Terraform
-
Variables and Terraform Modules
-
Terraform Registry
-
Terraform Workspace
-
Implementing Terraform Workspace
-
-
Remote State Management
-
Integrating with GIT for team management
-
Security Challenges in Committing TFState to GIT
-
Module Sources in Terraform
-
Terraform and .gitignore
-
Remote State Management with Terraform
-
Implementing S3 Backend
-
Challenges with State File locking
-
Integrating DynamoDB with S3 for state locking
-
Terraform State Management
-
Importing Existing Resources with Terraform Import
-
Document - Remote State Management
-
-
Security Primer
-
Handling Access & Secret Keys the Right Way in Providers
-
Terraform Provider UseCase - Resources in Multiple Regions
-
Handling Multiple AWS Profiles with Terraform Providers
-
Terraform & Assume Role with AWS STS
-
Sensitive Parameter
-
-
Terraform Cloud & Enterprise Capabilities (Conceptual)
-
Overview of Terraform Cloud
-
Creating Infrastructure with Terraform Cloud
-
Document - Sentinel Resource
-
Overview of Remote Backends
-
Implementing Remote Backend Operations in Terraform Cloud
-
[Day 3 (8 Hours)]
-
Continuous Integration
a. Introduction to continuous integration
b. Introduction to Jenkins
-
Getting Started with Jenkins
a. Install Jenkins on a local machine
b. Starting Up with Jenkins
c. Creating a Jenkins Job
-
Plugins and its uses
a. Introduction to Plugins
b. Adding Plugins to Jenkins
c. Explore some commonly used plugins
d. Configuring Jenkins to work with java, Git and Maven
e. Configure Jenkins to check for source code changes periodically
f. Working with Maven Build Jobs
g. Hands-On
i. Adding the plugins to the Jenkins job ii. Creating a Jenkins job to check for source code changes iii. Creating maven build jobs
-
Setting Up Your Build Jobs and Security
a. Introduction to Build Triggers and to Build Steps
b. Pre-and Post-Build Actions: Adding properties and properties > files
c. Running Your New Build Job
d. Parameterized Builds
e. Distributed builds
f. Setting Email notification
g. Enabling Security in Jenkins
h. Different Levels of Authentication
i. Types of Access and Administration of the Access
j. Hands-On Use Case:
i. Creating Freestyle jobs ii. Setting up security and authorization in Jenkins iii. Sending email notifications iv. Running the Jenkins job
-
Implementing Automated Testing
a. Automating Your Unit and Integration Tests
b. Configuring Test Reports in Jenkins
c. Displaying Test Results
d. Ignoring Tests
[Day 4 (8 Hours)]
-
Jenkins Pipeline
a. Groovy Basics
b. Basics
i. Types of Pipeline scripts and Difference between them ii. Jenkins Job DSL iii. Automated Jenkins Pipeline iv. Hands-On: Jenkins pipeline v. Steps, Stage, Stages, Agent, vi. Stage Colors vii. Comments, Syntax viii. Batch Commands
c. Variables
i. Predefined Variables ii. User defined Variables iii. Declaration Types iv. Scope of the Variables
d. Parameters
i. What are the uses of Parameters ii. String, Text, Boolean, Choice, Password, File iii. Params keyword
e. Options Section
i. Retry ii. BuildDiscarder iii. DisableConcurrentBuilds iv. Timeout v. Timestamps
f. Trigger Builds
i. Trigger Other Jobs ii. How to Trigger second job even first job fails iii. How to change build result iv. Trigger other job with parameters
g. Parallel
i. Multiple steps sections under same stage ii. Parallel builds iii. Parallel Stages iv. FailFast
h. Post
i. POST and order of Blocks ii. always, changed, fixed iii. regression, aborted, failure iv. success, unstable, cleanup v. Post at stage level
i. Conditional and Loop Statements
i. if and else ii. Build number : Even or Odd iii. For loop
[Day 5 (8 Hours)]
-
Distributed Jenkins Configuration
a. Introduction to Distributed Jenkins Build
b. Configuring Master Jenkins node
c. Configuring the Jenkins slave
d. Managing nodes and distributing jobs over nodes
e. Binding Jobs on the master and slave setup
f. Labelling the nodes to run a specific job
g. Hands-On: Configuring slave node in your Jenkins, adding labels > to nodes, managing the nodes
-
Jenkins and Packer
a. About Packer
b. Packer Download and Installation in Windows
c. AWS IAM User and Access And Secret Key
d. Variable & Builder
e. Packer integration with Jenkins (Running Packer commands from > Jenkins)
-
Jenkins and Terraform
a. Terraform Provider & AWS Access and Secret Key
b. Terraform integration with Jenkins
-
Jenkins Troubleshooting
a. Monitoring Logs
b. Version of Jenkins and Plugins
-
Some Common issues
a. If Jenkins hangs
b. Site is down with no 404 messages
c. No jobs are displayed
-
Jenkins Tips
a. How to unlock Jenkins
b. Reset password
-
Addressing Slow Performance in Jenkins
[Day 6 (8 Hours)]
-
Understanding of Python
-
Python Environment Set-up and Installation
-
Python Basics
a. Data Types
b. Numbers
c. Strings
d. Lists
e. Dictionaries
f. Booleans
g. Tuples and Sets
-
If, elif and else Statements
-
Loops
-
Python Sequences
a. List
b. Tuple
c. Dictionary
d. Set
-
List Comprehensions in Python
-
Working with Functions
-
Building Lambda functions with Python
-
Deploy Python Lambda functions with .zip file archives
-
AWS Lambda function errors in Python
-
AWS Lambda with Boto3
a. Setting Up Project
b. Creating an IAM Lambda Access Policy
c. Creating an IAM Execution Role
d. Attaching IAM Access Policy to IAM Execution Role
e. Developing a Python Lambda Function
f. Deploying Python Lambda Function
g. AWS Console Checkpoint: Python Lambda Function
-
AWS Lambda with Boto3: Updating Function Code and Versioning
a. Invoking Functions
b. Passing Environment Variables to a Function
c. Modifying Function Code to Use Environment Variable and Invoking
d. Publishing a New Function Version
e. Creating Aliases for Function Versions
-
AWS Lambda with Boto3: Function Operations
a. Getting a Function Configuration
b. Listing All Function Configurations
c. Updating Function Configurations
d. Deleting Functions
-
Use Case: Building serverless ETL pipelines using Amazon Glue
a. Create required resources
i. Create the database ii. Create a "Crawler" iii. Perform an ETL job
b. Using Custom Classifiers
c. Clean-up
[Day 7 (4 Hours)]
-
Use Case: Provision AWS infrastructure using Terraform
a. Covers Lambda, S3, Glue, API Gateway, DynamoDB
-
Automating Terraform Projects with Jenkins
a. Install Terraform plugin
b. Configure Terraform
c. Pipeline Script
d. Scripting Remote State Setup
e. Run Jenkins pipeline
-
Use Case: Deploy AWS Lambda to VPC with Terraform
a. Write Lambda code
b. Lambda Terraform module
c. Deploy Lambda zero to AWS
d. Make sure Lambda works
e. Create VPC
f. Create public subnet
g. Create private subnet
h. Create security resources
i. Add Lambda to the VPC
j. Test
k. Clean-up