Building, testing, and deploying code can be complex and time-consuming. This three-day, instructor-led, hands-on, technical class provides the solution of how to create an automated CI/CD pipeline that builds, tests, and deploys code every time a developer pushes a code change, ensuring only high-quality and approved code gets deployed.
Developers don’t use isolated software tools, so why learn tools in isolation? This course combines the most widely used enterprise technologies into single, integrated, end-to-end pipelines. We’ll teach you git from the ground up so you can securely push code to a remote repository such as Github or Bitbucket. Then we’ll teach you how to configure servers using Ansible from code stored in git. Next, we’ll integrate git and Ansible with Jenkins CI/CD to build, test, and deploy your code into Staging and Production environments, creating an automated end-to-end DevOps pipeline.
Skills Gained
- Maintain code using Git and GitHub
- Create, test, and deploy Ansible playbooks through a Jenkins CI/CD pipeline
- Complete integration tests
- Write CI/CD as code using Jenkins
- Compile, test, package, and permanently store Java applications
- Store artifacts
Who Can Benefit
- DevOps Engineers
- System Operations
- Code Developers
- Software Developers
- Quality Assurance Professionals
- Software Testers
- Product Owners
- Infrastructure Engineers
- Development Team Members
- Operations Team Members
- Project Managers
- Technical Product Managers
Prerequisites
- Understand the purpose of infrastructure servers
- Familiar with scripting of any kind
- Experience working at the command line of Unix, Linux, or PowerShell
- Experience with a text editor of any kind
Course Outline
Part 1: Technology Overview
- Git – Source Control Management
- Chef – Configuration Management
- Jenkins – Continuous Integration/Continuous Deployment
Part 2: Git – Source Control Management
- Purpose overview and use cases
- Git workflow
- Configuring git on your local machine
- Getting help with Git
- Local vs. Global vs. System configurations
- Basic Git Commands
- Creating local git repositories
- Branching and merging
- Using remote repositories
- Pushing code to Github using public and private SSH keys
Part 3: Ansible – Configuration Management
- Ansible purpose and use cases
- Architecture and call flow
- Ansible installation, configuration, and validation
- Control nodes and managed nodes
- Ansible managed hosts
- Host inventory; hosts and groups
- Repeatable code: Playbooks
- Introduction to YAML
- Modularizing code: Roles
- Ansible variables
- Dynamic configuration with facts
- Finding errors: Ansible unit testing
- Ensuring code quality: Ansible integration testing
Part 4: Jenkins – Continuous Integration / Continuous Deployment
- CI/CD overview, use cases and history
- Plugin architecture
- Initializing a Jenkins server
- Projects and jobs
- Freestyle jobs
- CI/CD as Code: Pipeline projects
- Declarative vs. scripted pipelines
- Jenkins Environment variables and parameters
- Distributed architecture: Master and agent nodes
- Views and Folders
- Managing credentials and secrets
- Integrating with git Source Control Management
- Triggers: Webhooks and Polling
- Notifications: Instant messaging and SMTP Email
- Approval inputs
- Testing Ansible playbooks in Jenkins
- Multibranch Pipelines: Reading entire repositories
- Conditional Logic
- Deploying Chef cookbooks with Jenkins: An automated end-to-end deployment pipeline