Curso DevOps with Jenkins, Terraform and Hashicorp Stack
24 horasVisão Geral
Curso DevOps with Jenkins, Terraform and Hashicorp Stack, DevOps abrange a pilha Hashicorp. Ele é carregado com informações práticas do mundo real. Da principal empresa de treinamento de desenvolvimento ágil, vem um curso para mover o dial na jornada de DevOps de suas organizações com este workshop de CI/CD, nuvem e virtualização. Você sairá deste curso carregado de conhecimento sobre o uso desta pilha para DevOps com Amazon Web Services para Virtual Private Cloud habilitada, Elastic Load Balancing e Application Virtualization. Esta aula combina exercícios de laboratório conduzidos por instrutor e práticos.
TÓPICOS
- Jenkins
- Especialista
- git
- Gerenciamento de compilação e lançamento
- Nuvem e Virtualização
- Controle de versão
- Provisionamento
- AWS
Objetivo
Após realizar este Curso DevOps with Jenkins, Terraform and Hashicorp Stack, o aluno deverá ser capaz de:
- Use com confiança a pilha descrita no curso.
- Entenda os vários componentes-chave.
- Entenda o Git e os conceitos e operações básicas
- Ramifique, mescle e execute operações em repositórios Git
- Aplicar o conhecimento para melhorar a confiabilidade dos processos de compilação e lançamento
- Entenda as várias partes do Jenkins para CI/CD
- Configurar Maven e Jenkins para implantar os artefatos gerados no Artifactory
- Use Terraform com AWS
- Utilizar Atlas com Terraform
- Implemente a segurança secreta com o Vault
- Configurar Packer para Virtualização
- Implemente o Vagrant com Terraform e AWS
Publico Alvo
- Engenheiros de Confiabilidade de Software
- Desenvolvedores
- engenheiros
- arquitetos
- Administradores do sistema
Pre-Requisitos
- Um desejo de aprender como esta cadeia de ferramentas DevOps pode melhorar a eficácia de sua organização, criar e liberar processos e continuidade de negócios
Materiais
Inglês + Exercícios + Lab PraticoConteúdo Programatico
Introduction to Continuous Integration, Continuous Delivery and Jenkins-CI
- Foundation of Agile AppDev
- XP Flow
- Extreme Programming
- Agile Development
- What is Continuous Integration
- What is Continuous Integration (cont'd)
- Typical Setup for Continuous Integration
- Setup Notes for Continuous Integration
- CI with Artifact Management
- What is Continuous Delivery?
- Why Continuous Delivery?
- DevOps and Continuous Delivery
- Continuous Delivery Challenges
- Continuous Delivery vs Continuous Deployment
- Jenkins Continuous Integration
- Jenkins Features
- Running Jenkins
Getting Started With Maven
- Terminology and Basic Concepts
- Artifacts
- Lifecycle
- Default Lifecycle
- Plugins
- Running Maven - the Story So Far
- Running Maven from an IDE
- Common Goals
- pom.xml
- Example
- Example (cont'd)
- Artifact Coordinates
- Standard Layout for Sources
A Web Application in Maven
- A More Complex Project
- Putting it Together With Maven
- Packaging the Target Artifact
- The Source Tree
- Dependencies
- Transitive Dependencies
- Dependency Scope
- Working With Servers
- Declaring and Configuring Plugins
- Running the Plugin
- Binding a Plugin Goal to the Lifecycle
- Archetypes
Job Types in Jenkins
- Introduction
- Different types of Jenkins Items
- Different types of Jenkins Items (cont'd)
- Configuring Source Code Management(SCM)
- Working with Subversion
- Working with Subversion (cont'd)
- Working with Git
- Storing Credentials
- Service Accounts
- Storing Credentials (cont'd)
- Build Triggers
- Schedule Build Jobs
- Polling the SCM
- Polling vs Triggers
- Maven Build Steps
Continuous Delivery and the Jenkins Pipeline
- Continuous Delivery
- Continuous Delivery (cont'd)
- DevOps and Continuous Delivery
- Continuous Delivery Challenges
- Continuous Delivery with Jenkins
- The Pipeline Plugin
- The Pipeline Plugin (cont'd)
- Defining a Pipeline
- A Pipeline Example
- Pipeline Example (cont'd)
- Parallel Execution
- Creating a Pipeline
- Invoking the Pipeline
- Interacting with the Pipeline
- Pipeline vs Traditional Jobs
- Conclusion
Jenkins Plugins
- Introduction
- Jenkins Plugins - SCM
- Jenkins Plugins – Build and Test
- Jenkins Plugins – Analyzers
- Jenkins for Teams
- Installing Jenkins Plugins
Best Practices for Jenkins
- Best Practices - Secure Jenkins
- Best Practices - Users
- Best Practices - Backups
- Best Practices - Reproducible Builds
- Best Practices - Testing and Reports
- Best Practices - Large Systems
- Best Practices - Distributed Jenkins
- Best Practices - Summary
Overview of the Amazon Web Services (AWS)
- Amazon Web Services
- The History of AWS
- The Initial Iteration of Moving amazon.com to AWS
- The AWS (Simplified) Service Stack
- Accessing AWS
- Direct Connect
- Shared Responsibility Model
- Trusted Advisor
- The AWS Distributed Architecture
- AWS Services
- Managed vs Unmanaged Amazon Services
- Compute and Networking Services
- Elastic Compute Cloud (EC2)
- AWS Lambda
- Auto Scaling
- Elastic Load Balancing (ELB)
- Virtual Private Cloud (VPC)
- Route53 Domain Name System
- Elastic Beanstalk
- Security and Identity Services
- Identity and Access Management (IAM)
- AWS Directory Service
- AWS Certificate Manager
- AWS Key Management Service (KMS)
- Storage And Content Delivery
- Elastic Block Storage (EBS)
- Simple Storage Service (S3)
- Glacier
- CloudFront Content Delivery Service
- Database Services
- Relational Database Service (RDS)
- DynamoDB
- Amazon ElastiCache
- Redshift
- Messaging Services
- Simple Queue Service (SQS)
- Simple Notifications Service (SNS)
- Simple Email Service (SES)
- AWS Monitoring with CloudWatch
- Other Services Example
Introduction to Git
- What is Git
- Git's Design Goals
- Git's Design Goals (cont'd)
- Branching and Merging
- Branching and Merging (cont'd)
- Centralized Version Control
- Distributed Version Control
- Git Basics
- Git Basics (Cont'd)
- Git Basics (cont'd)
- Getting Git
- Git on the Server
- Git Repository Managers
- Git on Somebody Else's Server
Basic Git Operations
- Using Git
- Definitions
- Definitions (cont'd)
- Repository (cont'd)
- Definitions (cont'd)
- Commit
- Commit (continued)
- How to Think About Commits
- Viewing History
- Configuring Git
- Configuration Scope
- User Identification
- User Identification (cont'd)
- GPG Signing
- Gnu Privacy Guard
- GPG Basics
- GPG and Git
- .gitignore
- Other Useful Configurations
Branching, Merging and Remotes
- Branching
- Branches in Git
- Branches in Git (cont'd)
- Merge
- Merge (cont'd)
- Fast Forward Merge
- --no-ff
- More Than One Repository
- Working with Remotes
- Fetch and Pull
- Push
- Pull Requests
- Tagging a Commit
- Lightweight Tags
- Annotated Tags
- Sharing Tags
- Checking Out a Tag
Git Work Flows
- Work Flows
- Local Work Flow
- Feature Branches
- Centralized Workflow
- Integration Manager Work Flow
- Integration Manager Work Flow (cont'd)
- Other Work Flows Are Possible
Introduction to GitFlow
- What is GitFlow
- Benefits
- How GitFlow works?
- How GitFlow works? (Contd.)
- What is GitFlow? (Contd.)
- How GitFlow works? (Contd.)
- GitFlow Extension
- Initializing GitFlow
- Features
- Release
- Hotfixes
Examining History
- Looking at History
- Log
- Blame
- Bisect
Introduction to Terraform
- What is Terraform
- Why Infrastructure as Code
- Who is Hashicorp
- Other Infrastructure Automation Tools
- Terraform
- How Does Terraform Work?
- Sample Configuration File
- Terraform vs Configuration Management
- Drawbacks of Configuration Management
- Benefits of Declarative Infrastructure
- Drawbacks of Declarative Infrastructure
- Terraform processing
- Master mode
- Drawbacks of Master mode
- Masterless mode
- Agents
- Drawbacks of Agents
- Agentless
Terraform Basics
- The Terraform Command
- Running Terraform
- The Current State
- Directory Structure
- Load Order
- Configuration Format
- HCL
- String Interpolation
- Configuration Files
- Variables
- Outputs
- Data Sources
- Resources
- Data Sources and Resources
- Providers
- Built-in Providers
- Configuring Providers
- Modules
- Defining a Module
- Configuring the AWS Provider
- Configuring the AWS Provider (cont'd)
- Basic Usage - Define an EC2 Instance
- Manipulating DNS Entries
VPC ELB and ALB with Terraform
- Amazon Virtual Private Cloud
- VPC Advantages
- Regions and Availability Zones
- VPC Concepts
- Security Groups
- Network Address Translation (NAT)
- Public IP Addresses
- Load Balancing
- VPC with Terraform
- 'aws_vpc' Data Source
- 'aws_vpc' Resource
- 'aws_subnet' Data Source
- 'aws_subnet' Resource
- 'aws_elb' Resource
- 'aws_elb' Listeners
- 'aws_elb' Logging and Health Checks
- 'aws_alb' Resource
- 'aws_alb' Resource (cont'd)
- 'aws_alb_listener' Resource
- 'aws_alb_listener_rule' Resource
- 'aws_alb_target_group' Resource
- 'aws_alb_target_group' Resource (cont'd)
- 'aws_alb_target_group_attachment' Resource
- Some Notes on Load Balancers
Using ECS and ECR with Terraform
- What is Docker
- Where Can I Run Docker?
- Docker and Containerization on Linux
- Linux Kernel Features: cgroups and namespaces
- The Docker-Linux Kernel Interfaces
- Docker Containers vs Traditional Virtualization
- Docker as Platform-as-a-Service
- Docker Integration
- Docker Services
- Docker Application Container Public Repository
- Docker Command-line
- Starting, Inspecting, and Stopping Docker Containers
- Docker Benefits
- Docker on AWS - ECR and ECS
- Using Amazon ECR
- Authenticating to ECR
- Building a Docker Image
- Push to ECR
- Elastic Container Service
- ECS Cluster
- ECS Container Instances
- Container Instance with Terraform
- Task Definition
- Task Definition with Terraform
- Service Definition
Introduction to Vagrant
- What is Vagrant?
- Why Use Vagrant?
- The Vagrantfile
- Sample Vagrantfile
- Vagrant Box
- Running Vagrant
- Networking
- Multi-Machine Usage
- Conclusion
Introduction to Packer
- What is Packer?
- Why Use Packer?
- Use Cases
- Supported Platforms
Utilizing Packer
- Installing Packer
- Building an Image
- The Build Process
- Templates
- Template Example
- Builders
- Amazon EC2 Builder
- VirtualBox Builder
- Provisioners
- Configuration Management Provisioners
- Post-Processors
- Parallel Builds
- Remote Builds
- Conclusion
Lab Exercises
- Lab 1. Configure Tools in Jenkins
- Lab 2. Install Maven
- Lab 3. Create a Maven Project
- Lab 4. Create a Jenkins Job
- Lab 5. Create a Pipeline
- Lab 6. Version Control - Git
- Lab 7. Branching, Merging and Working with Remotes
- Lab 8. Experimenting with Workflows
- Lab 9. Using the GitFlow Workflow
- Lab 10. Terraform installation and instance provisioning
- Lab 11. Package a Virtual Image with Packer
- Lab 12. Create AMI template with packer and utilize it with Terraform
- Lab 13. Exploring the Vault Service
- Lab 14. Setting Up a Load-Balanced Infrastructure