Antons Kranga   Building Agile Infrastructures
Upcoming SlideShare
Loading in...5
×
 

Antons Kranga Building Agile Infrastructures

on

  • 809 views

Antons Kranga speaking at DevConfu Conference, Riga November 2013.

Antons Kranga speaking at DevConfu Conference, Riga November 2013.

Statistics

Views

Total Views
809
Views on SlideShare
759
Embed Views
50

Actions

Likes
3
Downloads
13
Comments
0

4 Embeds 50

http://devconfu.eu 39
http://www.linkedin.com 7
https://www.linkedin.com 2
http://www.devconfu.eu 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Antons Kranga   Building Agile Infrastructures Antons Kranga Building Agile Infrastructures Presentation Transcript

    • 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: