SlideShare a Scribd company logo
Partners:
Building Agile Infrastructures

November 2013
Presenter
Antons Kranga
- Technology Architect at Accenture



- 10+ years Enterprise Java Developmentg


antons.kranga@accenture.com

- Areas of work:
- Open Source activist
- DevOps evangelist
- Technical and OO Trainer
- Cloud and PaaS development



antons.kranga@me.com



http://www.linkedin.com/in/antonskranga
This talk is not

Developers vs Operations
This talk is not

demanding to fire sysadmins
This talk is not

asking to rebuild your org
How fast you setup new project?
How fast you setup new project?
What is your operational model?
Goals of DevOps
Devs

Agile
build & release

Ops

ITIL
deploy & support
Goals of DevOps
incidents

Devs

Ops

Agile

ITIL
deploy & support

build & release

Release
notes
Goals of DevOps
incidents

Devs

Ops

Agile

ITIL
deploy & support

build & release

Release
notes
Goals of DevOps
Learn

Devs

Ops

Agile

Agile
deploy & support

build & release

Learn
DevOps adoption scenario
Provision Continuous Integration




Personal Development Environment




Automate Infrastructure Testing




Provision QA, Prod Environment




AT for Infrastructure
Opscode
Infrastructure as Code
Infrastructure as Code
include_recipe “java“



package "tomcat6“



artifact_deploy "tomcat6“ do
version "latest“
artifact_location "foo.war"
deploy_to node[:tomcat]
[:work_dir]
end



service "tomcat6" do
action [:enable, :start]
end





- Written declaratively 

(just enough ruby DSL)



- Repeatable



- OS agnostic



- Source control



- Active community 

(tons of ready to use
cookbooks)
Example
include_recipe “java“



package "tomcat6“



artifact_deploy "tomcat6“ do
version "latest“
artifact_location "foo.war"
deploy_to node[:tomcat]
[:work_dir]
end



service "tomcat6" do
action [:enable, :start]
end



OS Type: RedHat

OS Version: 6.2

Tomcat Home: /etc/tomcat

Tomcat Port: 8080
MySQL IP: 10.10.0.1
MySQL Root Password:
password

Attributes

Recipe



OS Specific Instructions
Nexus

Jenkins CI
Push Code

Nexus

Jenkins CI
Push Code

Detect Change

Nexus

Jenkins CI

Run build

Run Unit Tests
Push Code

Snapshot Repo

Detect Change

Jenkins CI

Nexus
Publish

Run build

Run Unit Tests
Push Code

Snapshot Repo

Detect Change

Jenkins CI

Nexus
Publish

Run build

Run Unit Tests
Push Code

Code quality report

Snapshot Repo

Detect Change

Jenkins CI

Nexus
Publish

Run Analytics
Run build

Run Unit Tests
Push Code

Code quality report

Snapshot Repo

Detect Change

Jenkins CI

Nexus
Publish

Run Analytics
Run build

Release Repo

Run Unit Tests
Provision CI Server

java

code

Dev Workstation
Provision CI Server

java

code

pull

push
Dev Workstation

CI Server VM
DevOps adoption scenario
Provision Continuous Integration




Personal Development Environment




Automate Infrastructure Testing




Provision QA, Prod Environment




AT for Infrastructure
Vagrant

(www.vagrantup.com)
Vagrant
- Easy to manage local VM(s)



- Easy to manage multi VM env



- Easy to deal with multi OS env



- Easy to distribute across teams VMs



- Describe VM resources



- Source Control
Vagrant
- Easy to manage local VM(s)



shell

- Easy to manage multi VM env



$ vagrant box add precise64 ttp://files.vagrantup.com/precise64.box
- Easy to deal with multi OS env
$ vagrant init
$ vagrant up


- Easy to distribute across teams VMs



- Describe VM resources



- Source Control
Vagrant configuration
Vagrant.configure("2") do |config|





config.vm.box = "precise64"
config.vm.network "forwarded_port", 
guest: 8080, host: 8080,

 
auto_correct: true

config.vm.provision "chef_solo" do |chef|
chef.add_recipe "tomcat"
chef.add_recipe "mysql"
end
end

vagrantfile
Personal Dev Environment

java

code

pull

push
Dev Workstation

CI Server VM
Personal Dev Environment

Dev VM
verify
deploy
java

code

pull

push
Dev Workstation

CI Server VM
Extending Jenkins Job
start job
pull sources
compile project
run unit tests

run integr tests

publish to Nexus
…
Extending Jenkins Job
start job
pull sources
compile project
run unit tests

run integr tests

publish to Nexus
…

provision VM
Extending Jenkins Job
start job
pull sources
compile project
run unit tests

run integr tests

provision VM
configure

publish to Nexus
…
Extending Jenkins Job
start job
pull sources
compile project
run unit tests

run integr tests

provision VM
configure
run tests

publish to Nexus
…
Extending Jenkins Job
start job
pull sources
compile project
run unit tests

run integr tests

provision VM
configure
run tests

publish to Nexus
…

destroy VM
DevOps adoption scenario
Provision Continuous Integration




Personal Development Environment




Automate Infrastructure Testing




Provision QA, Prod Environment




AT for Infrastructure
Test Kitchen

(github.com/test-kitchen/test-kitchen)
Chef Cookbooks
source 'https://rubygems.org'
gem 'test-kitchen', '~> 1.0'



group :integration do
gem 'kitchen-vagrant', '~> 0.11'
end

Gemfile

Chef Cookbooks
source 'https://rubygems.org'
gem 'test-kitchen', '~> 1.0'



group :integration do
gem 'kitchen-vagrant', '~> 0.11'
end

Gemfile
---
driver_plugin: vagrant
driver_config:
require_chef_omnibus: true



platforms:
- name: ubuntu-12.04
- name: centos-6.4



suites:
- name: default
run_list:
- recipe[my_cookbook]
attributes: {}

.kitchen.yml

Chef Cookbooks
source 'https://rubygems.org'
gem 'test-kitchen', '~> 1.0'



group :integration do
gem 'kitchen-vagrant', '~> 0.11'
end

Gemfile
---
driver_plugin: vagrant
driver_config:
require_chef_omnibus: true



platforms:
- name: ubuntu-12.04
- name: centos-6.4



suites:
- name: default
run_list:
- recipe[my_cookbook]
attributes: {}

.kitchen.yml
@test "tmux is installed and in the
path" {
which tmux
}



@test "tmux configuration exists" {
cat /etc/tmux.conf | grep "map“
}

tests

Chef Cookbooks
source 'https://rubygems.org'
gem 'test-kitchen', '~> 1.0'



group :integration do
gem 'kitchen-vagrant', '~> 0.11'
end

shell
$ bundle exec kitchen test

Gemfile
---
driver_plugin: vagrant
driver_config:
require_chef_omnibus: true



platforms:
- name: ubuntu-12.04
- name: centos-6.4



suites:
- name: default
run_list:
- recipe[my_cookbook]
attributes: {}

.kitchen.yml
@test "tmux is installed and in the
path" {
which tmux
}



@test "tmux configuration exists" {
cat /etc/tmux.conf | grep "map“
}

tests

Chef Cookbooks
source 'https://rubygems.org'
gem 'test-kitchen', '~> 1.0'



group :integration do
gem 'kitchen-vagrant', '~> 0.11'
end

shell
$ bundle exec kitchen test

Gemfile
---
driver_plugin: vagrant
driver_config:
require_chef_omnibus: true



platforms:
- name: ubuntu-12.04
- name: centos-6.4



suites:
- name: default
run_list:
- recipe[my_cookbook]
attributes: {}

.kitchen.yml
@test "tmux is installed and in the
path" {
which tmux
}



@test "tmux configuration exists" {
cat /etc/tmux.conf | grep "map“
}

tests

Chef Cookbooks
source 'https://rubygems.org'
gem 'test-kitchen', '~> 1.0'



group :integration do
gem 'kitchen-vagrant', '~> 0.11'
end

shell
$ bundle exec kitchen test

Gemfile
---
driver_plugin: vagrant
driver_config:
require_chef_omnibus: true



platforms:
- name: ubuntu-12.04
- name: centos-6.4



suites:
- name: default
run_list:
- recipe[my_cookbook]
attributes: {}

.kitchen.yml
@test "tmux is installed and in the
path" {
which tmux
}

Jenkins CI?



@test "tmux configuration exists" {
cat /etc/tmux.conf | grep "map“
}

tests

Chef Cookbooks
source 'https://rubygems.org'
gem 'test-kitchen', '~> 1.0'



group :integration do
gem 'kitchen-vagrant', '~> 0.11'
end

shell
$ bundle exec kitchen test

Gemfile
---
driver_plugin: vagrant
driver_config:
require_chef_omnibus: true



Don’t forget Food
critic

platforms:
- name: ubuntu-12.04
- name: centos-6.4



acrmp.github.io/foodcritic

suites:
- name: default
run_list:
- recipe[my_cookbook]
attributes: {}

.kitchen.yml
@test "tmux is installed and in the
path" {
which tmux
}

Jenkins CI?



@test "tmux configuration exists" {
cat /etc/tmux.conf | grep "map“
}

tests

Chef Cookbooks
DevOps adoption scenario
Provision Continuous Integration




Personal Development Environment




Automate Infrastructure Testing




Provision QA, Prod Environment




AT for Infrastructure
Environment at Local, On Premises or Cloud

chef-solo
ssh

Automation:
1.Env Provisioning
2.Configuration
Environment at Local, On Premises or Cloud

ssh

Automation:
1.Env Provisioning
2.Configuration

Automation:
1.Service Discovery
2.Server Integration
3.Deployment

Server
Environment Provisioning

Dev VM
verify
deploy
java

code

pull

push
Dev Workstation

CI Server VM
Environment Provisioning
Test team

Test Env VMs

Dev VM
verify
deploy
java

code

pull

push
Dev Workstation

CI Server VM
Environment Provisioning
Test team

Test Env VMs
Test VM
Test VM
Test VM

Dev VM
verify
deploy
java

code

pull

push
Dev Workstation

CI Server VM
Environment Provisioning
Test team

Test Env VMs
Test VM
Test VM
Test VM

Dev VM
verify
deploy
java

code

pull

push
Dev Workstation

CI Server VM
Environment Provisioning
Test team

Test Env VMs
Test VM
Test VM
Test VM

Dev VM
verify
deploy
java

code

push
Dev Workstation

Clients

pull

CI Server VM

UAT Env VMs
Test VM
Test VM
Test VM
DevOps adoption scenario
Provision Continuous Integration




Personal Development Environment




Automate Infrastructure Testing




Provision QA, Prod Environment




AT for Infrastructure
Chaos Monkey

(github.com/Netflix/SimianArmy)
Warni
ng!!!

There
will be
mess!
Chaos Monkey !!
(github.com/Netflix/SimianArmy)
Provision your infra in AWS




Deploy your System (if applicable)




Enable Maximum Logging




Configure Simian Army




Make sure that Devs are seeing the show!
Check out other beasts
in

Simian Army

(github.com/Netflix/SimianArmy)
Chaos Monkey


Chaos Gorilla
Will destroy an entire zone


Latency Monkey
Inspects and introduces latency


Howler Monkey
Looks for overused resources


Security Monkey
Ensures certs are not expiring soon, etc.


Janitor Monkey
Cleans-up unused resources
DevOps adoption scenario
Provision Continuous Integration




Personal Development Environment




Automate Infrastructure Testing




Provision QA, Prod Environment




AT for Infrastructure
What is besides Chef?
Bosh

(github.com/cloudfoundry/bosh)
Bosh
- Extracted from Cloud Foundry



- Harness for your IaaS



- Automates



- Environment Provisioning



- Health Checks



- Scalability



- Logs Collection
Docker

(docker.io)
Docker
- Handles LXC VM management



- LXC supported by Linux Kernel 2.6



- Slicing Large instances



- Lightweight environment provisioning



- Provides Application Isolation
Thank You!
Feedback

☺ ! ☹
Partners:

More Related Content

PDF
Containerizing a Web Application with Vue.js and Java
PDF
Docker and Puppet for Continuous Integration
PDF
Zero Downtime Deployment with Ansible
PDF
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
PDF
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
PPTX
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
PDF
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
PPT
Python virtualenv & pip in 90 minutes
Containerizing a Web Application with Vue.js and Java
Docker and Puppet for Continuous Integration
Zero Downtime Deployment with Ansible
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
Test Driven Infrastructure with Docker, Test Kitchen and Serverspec
Python virtualenv & pip in 90 minutes

What's hot (20)

PDF
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
PDF
Docker for (Java) Developers
PDF
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
PDF
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
PPTX
DevOps Hackathon: Session 3 - Test Driven Infrastructure
PDF
Ansible 實戰:top down 觀點
PDF
Zero Downtime Deployment with Ansible
PPTX
DevOps Hackathon - Session 1: Vagrant
PDF
Building kubectl plugins with Quarkus | DevNation Tech Talk
PPTX
Vagrant to-aws-flow
PDF
Chef for beginners module 2
PDF
Test-Driven Infrastructure with Chef
PDF
Deploying Symfony | symfony.cat
PDF
Cookbook testing with KitcenCI and Serverrspec
PDF
jbang: Unleash the power of Java for shell scripting
PDF
Chef for beginners module 5
PDF
Take control of your Jenkins jobs via job DSL.
PDF
Test Driven Development with Puppet - PuppetConf 2014
PPTX
Zero to Continuous Delivery on Google Cloud
PPTX
Configuration Management in a Containerized World
London Hashicorp Meetup #8 - Testing Programmable Infrastructure By Matt Long
Docker for (Java) Developers
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
DevOps Hackathon: Session 3 - Test Driven Infrastructure
Ansible 實戰:top down 觀點
Zero Downtime Deployment with Ansible
DevOps Hackathon - Session 1: Vagrant
Building kubectl plugins with Quarkus | DevNation Tech Talk
Vagrant to-aws-flow
Chef for beginners module 2
Test-Driven Infrastructure with Chef
Deploying Symfony | symfony.cat
Cookbook testing with KitcenCI and Serverrspec
jbang: Unleash the power of Java for shell scripting
Chef for beginners module 5
Take control of your Jenkins jobs via job DSL.
Test Driven Development with Puppet - PuppetConf 2014
Zero to Continuous Delivery on Google Cloud
Configuration Management in a Containerized World
Ad

Viewers also liked (9)

PDF
DevTernity - DevOps with smell
PDF
JavaDay Lviv: Serverless Archtiectures
PPTX
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
PPTX
Vagrant introduction for Developers
PPTX
Riga dev day: Lambda architecture at AWS
PDF
OpenSlava Infrastructure Automation Patterns
PPTX
OpenSlava 2014 - CloudFoundry inside-out
PDF
DevOps Days Tel Aviv - Serverless Architecture
PDF
Dev ops with smell v1.2
DevTernity - DevOps with smell
JavaDay Lviv: Serverless Archtiectures
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Vagrant introduction for Developers
Riga dev day: Lambda architecture at AWS
OpenSlava Infrastructure Automation Patterns
OpenSlava 2014 - CloudFoundry inside-out
DevOps Days Tel Aviv - Serverless Architecture
Dev ops with smell v1.2
Ad

Similar to Antons Kranga Building Agile Infrastructures (20)

PDF
From Dev to DevOps - Codemotion ES 2012
PDF
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
PDF
Continuous Delivery: The Next Frontier
KEY
From Dev to DevOps - FOSDEM 2012
PDF
From Dev to DevOps
PDF
Testing Distributed Micro Services. Agile Testing Days 2017
KEY
From Dev to DevOps - ApacheCON NA 2011
KEY
Puppet for Java developers - JavaZone NO 2012
PDF
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
PPTX
Learn you some Ansible for great good!
PDF
Burn down the silos! Helping dev and ops gel on high availability websites
PDF
Deploying OpenStack with Chef
KEY
From Dev to DevOps - Apache Barcamp Spain 2011
PPTX
Automating Software Development Life Cycle - A DevOps Approach
PDF
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
PPTX
Harmonious Development: Via Vagrant and Puppet
PPTX
Dev ops meetup
PDF
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
PDF
Automatisation in development and testing - within budget
PPTX
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
From Dev to DevOps - Codemotion ES 2012
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery: The Next Frontier
From Dev to DevOps - FOSDEM 2012
From Dev to DevOps
Testing Distributed Micro Services. Agile Testing Days 2017
From Dev to DevOps - ApacheCON NA 2011
Puppet for Java developers - JavaZone NO 2012
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Learn you some Ansible for great good!
Burn down the silos! Helping dev and ops gel on high availability websites
Deploying OpenStack with Chef
From Dev to DevOps - Apache Barcamp Spain 2011
Automating Software Development Life Cycle - A DevOps Approach
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Harmonious Development: Via Vagrant and Puppet
Dev ops meetup
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
Automatisation in development and testing - within budget
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher

More from Antons Kranga (6)

PPTX
Model Context Protocol - path to LLM standartization
PDF
DevOps.2D: two dimensions
of engineering
PDF
Top conf serverlezz
PDF
Riga DevDays 2017 - Efficient AWS Lambda
PPTX
OpenSlava 2015 When DevOps Hurts
PPTX
DevOps hackathon Session 2: Basics of Chef
Model Context Protocol - path to LLM standartization
DevOps.2D: two dimensions
of engineering
Top conf serverlezz
Riga DevDays 2017 - Efficient AWS Lambda
OpenSlava 2015 When DevOps Hurts
DevOps hackathon Session 2: Basics of Chef

Recently uploaded (20)

PDF
KodekX | Application Modernization Development
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Approach and Philosophy of On baking technology
PDF
Machine learning based COVID-19 study performance prediction
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPT
Teaching material agriculture food technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Electronic commerce courselecture one. Pdf
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
Review of recent advances in non-invasive hemoglobin estimation
KodekX | Application Modernization Development
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Approach and Philosophy of On baking technology
Machine learning based COVID-19 study performance prediction
Per capita expenditure prediction using model stacking based on satellite ima...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
NewMind AI Monthly Chronicles - July 2025
Diabetes mellitus diagnosis method based random forest with bat algorithm
Chapter 3 Spatial Domain Image Processing.pdf
Teaching material agriculture food technology
Understanding_Digital_Forensics_Presentation.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
MYSQL Presentation for SQL database connectivity
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Electronic commerce courselecture one. Pdf
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Review of recent advances in non-invasive hemoglobin estimation

Antons Kranga Building Agile Infrastructures