Curso DevOps with JenkinsTerraform and HashiCorp Stack
24 horasVisão Geral
Curso DevOps with JenkinsTerraform and HashiCorp Stack, ensina os participantes como construir fluxos de trabalho DevOps CI/CD para ambientes virtuais e de nuvem. Esta aula se aprofunda no DevOps com Jenkins, HashiCorp Stack e Terraform para implantação de recursos da AWS. Os participantes aprendem como usar os recursos da Amazon Web Services.
Objetivo
Após realizar este Curso DevOps with JenkinsTerraform and HashiCorp Stack você será capaz de:
- Use com confiança a pilha Jenkins, Terraform e HashiCorp
- Compreenda os vários componentes principais da pilha
- Entenda o Git e os conceitos e operações básicas
- Ramifique, mescle e execute operações em repositórios Git
- Melhore a confiabilidade dos processos de construção e lançamento
- Entenda as várias peças do Jenkins para CI/CD
- Configure Maven e Jenkins para implantar os artefatos gerados no Artifactory
- Use Terraform com AWS
- Use Atlas com Terraform
- Implemente segurança secreta com o Vault
- Configurar o Packer para virtualização
- Implemente o Vagrant com Terraform e AWS
Materiais
Portugues/Inglês + 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
- 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
- Different types of Jenkins Items
- Configuring Source Code Management(SCM)
- Working with Subversion
- Working with Git
- Storing Credentials
- Service Accounts
- Build Triggers
- Schedule Build Jobs
- Polling the SCM
- Polling vs. Triggers
- Maven Build Steps
Continuous Delivery and the Jenkins Pipeline
- Continuous Delivery
- DevOps and Continuous Delivery
- Continuous Delivery Challenges
- Continuous Delivery with Jenkins
- The Pipeline Plugin
- Defining a Pipeline
- A Pipeline Example
- Parallel Execution
- Creating a Pipeline
- Invoking the Pipeline
- Interacting with the Pipeline
- Pipeline vs. Traditional Jobs
Jenkins Plugins
- Jenkins Plugins
- Jenkins for Teams
- Installing Jenkins Plugins
Best Practices for Jenkins
- Secure Jenkins
- Users
- Backups
- Reproducible Builds
- Testing and Reports
- Large Systems
- Distributed Jenkins
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
- Branching and Merging
- Centralized Version Control
- Distributed Version Control
- Git Basics
- Getting Git
- Git on the Server
- Git Repository Managers
- Git on Somebody Else's Server
Basic Git Operations
- Using Git
- Definitions
- Commit
- How to Think About Commits
- Viewing History
- Configuring Git
- Configuration Scope
- User Identification
- GPG Signing
- Gnu Privacy Guard
- GPG Basics
- GPG and Git
- .gitignore
- Other Useful Configurations
Branching, Merging, and Remotes
- Branching
- Branches in Git
- Merge
- 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 Workflow
- Other Work Flows Are Possible
Introduction to GitFlow
- What is GitFlow
- Benefits
- How GitFlow works?
- 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
- 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
- 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
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