2. • Agile, DevOps, CI/CD and IaC
• Introduction to Infrastructure as Code
• Tools
• Framework
• Details on the tools
• Q&A
Agenda
3. • Agile
• Creating software that is always ready to release
• Continuous Delivery
• A software engineering approach in which teams produce
software in short cycles, ensuring that the software can be
reliably released at any time
• DevOps
• Natural extension for Agile and Continuous delivery
• Combines development and operations
• You build it. You run it
Development
IT
Operations
Quality
Assurance
DevOps
Agile, Continuous Delivery and
DevOps
4. • Faster feedback
• Should be Reliable
• Tests
• Infrastructure
• Third part applications
Continuous Delivery
5. Mutable
• Same servers used again and
again
• Multiple patches on same server
• Manual process, can lead to
differences
Immutable
• Done through code
Mutable Vs Immutable
infrastructure
6. • Process of managing and provisioning of infrastructure with software
• Automate the creation and maintenance of servers
• No manual intervention
• Advantages
• Immutable infrastructure
• Speed
• Efficiency
• Accountability
Martin Fowler:
A server should be like a phoenix, regularly rising from the ashes.[1]
The primary advantage of using phoenix servers is to avoid configuration drift: ad
hoc changes to a systems configuration that go unrecorded.
Infrastructure as Code
9. • Automate the creation of identical machine images
• Fast infrastructure deployment
• Multi-provider support
• Create and use Docker and Vagrant images for development
• Use AWS images for production
• Uses “Templates” which are JSON files
Introduction to Packer
Create
machine
Provision
machine
Stop
machine
Generate
image
Upload
generated
image
Packer Lifecycle
15. • IT automation tool to configure systems
• Provides stable infrastructure for provisioning the target environments
• Agentless
• Uses SSH
• Idempotent
Introduction to Ansible
16. • Modules
• Stand alone scripts
• Hundreds of modules available
• Users can write their own
modules
• Playbooks
• Written in YAML
• Set of instructions
• Contains one or more plays
Ansible – Modules & Playbooks
---
- hosts: webservers
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum:
name: httpd
state: latest
- name: write the apache config file
template:
src: /srv/httpd.j2
dest: /etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running
service:
name: httpd
state: started
Playbook