antons kranga building agile infrastructures
DESCRIPTION
Antons Kranga speaking at DevConfu Conference, Riga November 2013.TRANSCRIPT
![Page 1: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/1.jpg)
Partners:
![Page 2: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/2.jpg)
Building Agile Infrastructures
November 2013
![Page 3: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/3.jpg)
Presenter
- Technology Architect at Accenture
- 10+ years Enterprise Java Developmentg
- Areas of work: - Open Source activist - DevOps evangelist - Technical and OO Trainer - Cloud and PaaS development
[email protected] [email protected] http://www.linkedin.com/in/antonskranga
Antons Kranga
![Page 4: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/4.jpg)
This talk is not
Developers vs Operations
![Page 5: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/5.jpg)
This talk is not
demanding to fire sysadmins
![Page 6: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/6.jpg)
This talk is not
asking to rebuild your org
![Page 7: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/7.jpg)
How fast you setup new project?
![Page 8: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/8.jpg)
How fast you setup new project?
![Page 9: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/9.jpg)
What is your operational model?
![Page 10: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/10.jpg)
Agile ITILbuild & release deploy & support
Devs Ops
Goals of DevOps
![Page 11: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/11.jpg)
Agile ITILbuild & release
Release notes
deploy & support
Devs Opsincidents
Goals of DevOps
![Page 12: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/12.jpg)
Agile ITILbuild & release
Release notes
deploy & support
Devs Opsincidents
Goals of DevOps
![Page 13: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/13.jpg)
Agile Agilebuild & release
Learn
deploy & support
Devs OpsLearn
Goals of DevOps
![Page 14: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/14.jpg)
Provision Continuous Integration
Personal Development Environment
Automate Infrastructure Testing
Provision QA, Prod Environment
AT for Infrastructure
DevOps adoption scenario
![Page 15: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/15.jpg)
Opscode
![Page 16: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/16.jpg)
Infrastructure as Code
![Page 17: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/17.jpg)
- Written declaratively (just enough ruby DSL)
- Repeatable
- OS agnostic
- Source control
- Active community (tons of ready to use cookbooks)
Infrastructure as Codeinclude_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
![Page 18: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/18.jpg)
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
RecipeAttributes
OS Specific Instructions
Example
![Page 19: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/19.jpg)
Jenkins CINexus
![Page 20: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/20.jpg)
Jenkins CINexus
Push Code
![Page 21: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/21.jpg)
Jenkins CINexus
Push Code
Detect Change
Run Unit TestsRun build
![Page 22: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/22.jpg)
Jenkins CINexus
Push Code
Detect Change
Run Unit TestsRun build
Publish
Snapshot Repo
![Page 23: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/23.jpg)
Jenkins CINexus
Push Code
Detect Change
Run Unit TestsRun build
Publish
Snapshot Repo
![Page 24: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/24.jpg)
Jenkins CINexus
Push Code
Detect Change
Run Unit TestsRun build
Publish
Snapshot Repo
Run Analytics
Code quality report
![Page 25: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/25.jpg)
Jenkins CINexus
Push Code
Detect Change
Run Unit TestsRun build
Publish
Snapshot Repo
Run Analytics
Code quality report
Release Repo
![Page 26: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/26.jpg)
Dev Workstation
java code
Provision CI Server
![Page 27: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/27.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Provision CI Server
![Page 28: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/28.jpg)
Provision Continuous Integration
Personal Development Environment
Automate Infrastructure Testing
Provision QA, Prod Environment
AT for Infrastructure
DevOps adoption scenario
![Page 30: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/30.jpg)
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
![Page 31: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/31.jpg)
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
shell
$ vagrant box add precise64 ttp://files.vagrantup.com/precise64.box $ vagrant init $ vagrant up
![Page 32: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/32.jpg)
Vagrant configurationVagrant.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
![Page 33: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/33.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Personal Dev Environment
![Page 34: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/34.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Personal Dev Environment
Dev VM
deploy
verify
![Page 35: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/35.jpg)
Extending Jenkins Jobstart job
pull sources compile project run unit tests
run integr tests
publish to Nexus …
![Page 36: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/36.jpg)
Extending Jenkins Jobstart job
pull sources compile project run unit tests
run integr tests
publish to Nexus …
provision VM
![Page 37: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/37.jpg)
Extending Jenkins Jobstart job
pull sources compile project run unit tests
run integr tests
publish to Nexus …
provision VM
configure
![Page 38: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/38.jpg)
Extending Jenkins Jobstart job
pull sources compile project run unit tests
run integr tests
publish to Nexus …
provision VM
configure
run tests
![Page 39: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/39.jpg)
Extending Jenkins Jobstart job
pull sources compile project run unit tests
run integr tests provision VM
configure
run tests
destroy VMpublish to Nexus …
![Page 40: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/40.jpg)
Provision Continuous Integration
Personal Development Environment
Automate Infrastructure Testing
Provision QA, Prod Environment
AT for Infrastructure
DevOps adoption scenario
![Page 42: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/42.jpg)
Chef Cookbooks
![Page 43: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/43.jpg)
source 'https://rubygems.org' gem 'test-kitchen', '~> 1.0' group :integration do gem 'kitchen-vagrant', '~> 0.11' end
Gemfile
Chef Cookbooks
![Page 44: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/44.jpg)
source 'https://rubygems.org' gem 'test-kitchen', '~> 1.0' group :integration do gem 'kitchen-vagrant', '~> 0.11' end
Gemfile
Chef Cookbooks
--- 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
![Page 45: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/45.jpg)
source 'https://rubygems.org' gem 'test-kitchen', '~> 1.0' group :integration do gem 'kitchen-vagrant', '~> 0.11' end
Gemfile
Chef Cookbooks
--- 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: {}
@test "tmux is installed and in the path" { which tmux } @test "tmux configuration exists" { cat /etc/tmux.conf | grep "map“ }
tests
.kitchen.yml
![Page 46: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/46.jpg)
source 'https://rubygems.org' gem 'test-kitchen', '~> 1.0' group :integration do gem 'kitchen-vagrant', '~> 0.11' end
Gemfile
Chef Cookbooks
--- 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: {}
@test "tmux is installed and in the path" { which tmux } @test "tmux configuration exists" { cat /etc/tmux.conf | grep "map“ }
tests
shell
$ bundle exec kitchen test
.kitchen.yml
![Page 47: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/47.jpg)
--- 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: {}
source 'https://rubygems.org' gem 'test-kitchen', '~> 1.0' group :integration do gem 'kitchen-vagrant', '~> 0.11' end
Gemfile
@test "tmux is installed and in the path" { which tmux } @test "tmux configuration exists" { cat /etc/tmux.conf | grep "map“ }
tests
Chef Cookbooks
shell
$ bundle exec kitchen test
.kitchen.yml
![Page 48: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/48.jpg)
--- 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: {}
source 'https://rubygems.org' gem 'test-kitchen', '~> 1.0' group :integration do gem 'kitchen-vagrant', '~> 0.11' end
Gemfile
@test "tmux is installed and in the path" { which tmux } @test "tmux configuration exists" { cat /etc/tmux.conf | grep "map“ }
tests
Chef Cookbooks
shell
$ bundle exec kitchen test
Jenkins CI?
.kitchen.yml
![Page 49: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/49.jpg)
--- 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: {}
source 'https://rubygems.org' gem 'test-kitchen', '~> 1.0' group :integration do gem 'kitchen-vagrant', '~> 0.11' end
Gemfile
@test "tmux is installed and in the path" { which tmux } @test "tmux configuration exists" { cat /etc/tmux.conf | grep "map“ }
tests
Chef Cookbooks
shell
$ bundle exec kitchen test
Jenkins CI?
Don’t forget Food critic
acrmp.github.io/foodcritic
.kitchen.yml
![Page 50: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/50.jpg)
Provision Continuous Integration
Personal Development Environment
Automate Infrastructure Testing
Provision QA, Prod Environment
AT for Infrastructure
DevOps adoption scenario
![Page 51: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/51.jpg)
Automation: 1.Env Provisioning 2.Configuration
ssh
Environment at Local, On Premises or Cloud
chef-solo
![Page 52: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/52.jpg)
Automation: 1.Env Provisioning 2.Configuration
ssh
Automation: 1.Service Discovery 2.Server Integration 3.Deployment
Environment at Local, On Premises or Cloud
Server
![Page 53: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/53.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Environment Provisioning
Dev VM
deploy
verify
![Page 54: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/54.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Environment Provisioning
Dev VM
deploy
verify
Test Env VMs
Test team
![Page 55: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/55.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Environment Provisioning
Dev VM
deploy
verify
Test team
Test VMTest VM
Test VMTest Env VMs
![Page 56: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/56.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Environment Provisioning
Dev VM
deploy
verify
Test team
Test VMTest VM
Test VMTest Env VMs
![Page 57: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/57.jpg)
Dev Workstation
java code
CI Server VMpush
pull
Environment Provisioning
Dev VM
deploy
verify
Test team
Test VMTest VM
Test VMTest Env VMs
Test VMTest VM
Test VMUAT Env VMs
Clients
![Page 58: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/58.jpg)
Provision Continuous Integration
Personal Development Environment
Automate Infrastructure Testing
Provision QA, Prod Environment
AT for Infrastructure
DevOps adoption scenario
![Page 60: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/60.jpg)
Chaos Monkey (github.com/Netflix/SimianArmy)
Warning!!! There will be mess!!!
![Page 61: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/61.jpg)
Provision your infra in AWS
Deploy your System (if applicable)
Enable Maximum Logging
Configure Simian Army
Make sure that Devs are seeing the show!
![Page 62: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/62.jpg)
Check out other beasts in Simian Army (github.com/Netflix/SimianArmy)
![Page 63: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/63.jpg)
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
![Page 64: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/64.jpg)
Provision Continuous Integration
Personal Development Environment
Automate Infrastructure Testing
Provision QA, Prod Environment
AT for Infrastructure
DevOps adoption scenario
![Page 65: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/65.jpg)
What is besides Chef?
![Page 67: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/67.jpg)
- Extracted from Cloud Foundry
- Harness for your IaaS
- Automates
- Environment Provisioning
- Health Checks
- Scalability
- Logs Collection
Bosh
![Page 69: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/69.jpg)
- Handles LXC VM management
- LXC supported by Linux Kernel 2.6
- Slicing Large instances
- Lightweight environment provisioning
- Provides Application Isolation
Docker
![Page 70: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/70.jpg)
Thank You!
![Page 71: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/71.jpg)
☺ ☹!
Feedback
![Page 72: Antons Kranga Building Agile Infrastructures](https://reader034.vdocuments.us/reader034/viewer/2022052315/554a06deb4c905507a8b54f3/html5/thumbnails/72.jpg)
Partners: