Infrastructure as Code: Terraform
Course DescriptionThis Infrastructure as code means writing code to provision, manage and deploy IT infrastructure. Terraform is an open-source tool built by Hashicorpto automate the provisioning of infrastructure resources. It is used to build, manage, update and delete infrastructure resources like virtual machines, containers, networking and others using infrastructure as a coding philosophy. Terraform is a vendor agnostic tool and can manage infrastructure for multiple resource providers (for example AWS, Google Cloud, Azure, Aviatrix, Heroku, Oracle, etc.). This course will cover how to use Terraform with a focus on the AWS Environment.Learning ObjectivesUnderstand Infrastructure as codeUnderstand, use and apply terraform, including advanced terraform featuresUse terraform to provision AWS resourcesUse terraform with Packer to create custom imagesUse terraform with AWS ECS, and CodePipelinesBe able to apply DevOps techniques using terraformWho Should AttendData Center ArchitectsCloud Infrastructure ArchitectsNetwork EngineersSystem AdministratorsStorage AdministratorsAnyone interested in IACPrerequisitesBased Network BackgroundCourse ContentModule 1: Infrastructure as Code: TerraformIntroductionTerraform installationTerraform Installation (on Windows)Terraform installation using VagrantModule 2: Terraform BasicsUnderstanding terraform HCLFirst steps in terraform - AWS SetupFirst steps in terraform - Spinning up an instanceFirst steps in terraform - summaryTerraform Variable TypesModule 3: Terraform FundamentalsVariablesSoftware ProvisioningOutputting attributesRemote stateData SourcesTemplatesOther ProvidersModulesTerraform Commands OverviewModule 4: Terraform with AWSIntroduction to VPCsIntroduction to VPCs - Part IIIntroduction to VPCs - Part IIILaunching EC2 instances in the VPCUserdataStatic IPs, EIPs, and Route53RDSIAMIAM RolesAutoscalingIntroduction to Elastic Load Balancers (ELB)ELBs in terraformApplication Load Balancer (ALB)Elastic BeanstalkModule 5: Advanced Terraform UsageIntroduction to InterpolationConditionalsBuilt-in FunctionsFor and For Each LoopTerraform Project StructureTerraform lock fileManipulating stateModule 6: PackerPacker introductionTerraform with Packer and JenkinsModule 7: Docker on AWSIntroduction to DockerDocker on AWSBuilding Docker imagesModule 8: Module DevelopmentIntroduction to Module DevelopmentECS + ALB Module OverviewIntroduction to Advanced Module DevelopmentThe difference between count and for_eachModule 9: AWS CodePipelineIntroduction to AWS CodePipelineModule 10: AWS EKS (hosted Kubernetes)Introduction to AWS EKSLabsLab 1: Software Provisioning & Windows Server ProvisioningLab 2: Variables, Outputting Attributes, Remote State & Data Sources, Terraform Commands, and an External ModuleLab 3: EBS VolumesLab 4: VPCs and NAT, Launching instances in a VPC ,EBS Volumes, Userdata, and Route53Lab 5: RDS,IAM users and groups, IAM Roles, Autoscaling & ELB with autoscaling, Elastic BeanstalkLab 6: Interpolation and Conditionals, Built-in Functions, For loops, For Each Loops, Project Structure, Manipulating StateLab 7: Packer with TerraformLab 8: Build NodeJS app and push to ECR, Running a NodeJS app on ECS, Terraform with Jenkins, ECR and ECS1Lab 9: ECS + ALB ModuleLab 10: for_each with modules15:32Lab 11: Complex data types and the flatten() function 2Lab 12: CodePipelineLab 13: AWS EKS