57
DevOps For Opensource Geospatial Applications Travis Pinney @tlpinney

DevOps for Opensource Geospatial Applications

Embed Size (px)

Citation preview

Page 1: DevOps for Opensource Geospatial Applications

DevOps For Opensource Geospatial Applications

Travis Pinney@tlpinney

Page 2: DevOps for Opensource Geospatial Applications
Page 3: DevOps for Opensource Geospatial Applications
Page 4: DevOps for Opensource Geospatial Applications

Software Sucks

Page 8: DevOps for Opensource Geospatial Applications

osmdevbox

http://github.com/tlpinney/osmdevbox

http://bit.ly/osm-hackCreated at DC OSM Hack Weekend

Page 10: DevOps for Opensource Geospatial Applications

VirtualBox

1.0https://www.virtualbox.org/

Page 11: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

Page 12: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

Page 13: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

THE INSTALL

https://www.virtualbox.org/wiki/Downloads

http://downloads.vagrantup.com

Page 14: DevOps for Opensource Geospatial Applications

mkdir fooboxcd fooboxvagrant init

Page 15: DevOps for Opensource Geospatial Applications

Vagrantfile

Page 16: DevOps for Opensource Geospatial Applications

# -*- mode: ruby -*-# vi: set ft=ruby :

Vagrant::Config.run do |config|

config.vm.box = "lucid64" config.vm.box_url = "http://files.vagrantup.com/lucid64.box"

...

Page 19: DevOps for Opensource Geospatial Applications

http://xkcd.com/303/

Page 20: DevOps for Opensource Geospatial Applications
Page 21: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

vagrant ssh

Page 22: DevOps for Opensource Geospatial Applications

$ vagrant box listCentOS-5.7-x86_64basecentoscentos57centos62centos62x11lucid32lucid32_currentlucid64maverick64my_boxpuppet-debian-lenny-64ubuntu-maverick-64

Page 23: DevOps for Opensource Geospatial Applications

$ vagrant box remove maverick64[vagrant] Deleting box 'maverick64'...

Page 24: DevOps for Opensource Geospatial Applications

Show movie

Page 25: DevOps for Opensource Geospatial Applications

http://www.12factor.net

Page 26: DevOps for Opensource Geospatial Applications

http://www.12factor.net/dev-prod-parity

Dev Prod Parity

Page 28: DevOps for Opensource Geospatial Applications
Page 29: DevOps for Opensource Geospatial Applications

vagrant destroy

Page 30: DevOps for Opensource Geospatial Applications

vagrant upvagrant provision

Page 33: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

knife[:aws_access_key_id] = "#{ENV['AWS_ACCESS_KEY_ID']}"knife[:aws_secret_access_key] = "#{ENV['AWS_SECRET_ACCESS_KEY']}"knife[:aws_ssh_key_id] = "osm"

Page 34: DevOps for Opensource Geospatial Applications

$ sudo gem install chef knife-ec2

Page 35: DevOps for Opensource Geospatial Applications

$ knife ec2 server list

Page 36: DevOps for Opensource Geospatial Applications

$ knife ec2 server delete i-XXXXXXXX

Page 37: DevOps for Opensource Geospatial Applications

$ knife ec2 server create -r 'role[webserver]' -I ami-7000f019 -f m1.small

Page 38: DevOps for Opensource Geospatial Applications

Futureroles for osm renderers, api servers for clusters

Page 39: DevOps for Opensource Geospatial Applications
Page 40: DevOps for Opensource Geospatial Applications

git checkout -b centos

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

Page 41: DevOps for Opensource Geospatial Applications

bare metal

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

veewee

https://github.com/jedi4ever/veewee

Page 42: DevOps for Opensource Geospatial Applications

bare metal

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

Page 43: DevOps for Opensource Geospatial Applications

bare metal

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

source ~/.bash_profile

rvm requirements

# install any needed requirements

rvm install 1.9.2

git clone https://github.com/jedi4ever/veeweecd veeweegem install bundler bundle install

Page 44: DevOps for Opensource Geospatial Applications

bare metal

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

$cd project/veewee/Using /Users/tlpinney/.rvm/gems/ruby-1.9.2-p290'veewee' gemset created (/Users/tlpinney/.rvm/gems/ruby-1.9.2-p290@veewee).Using /Users/tlpinney/.rvm/gems/ruby-1.9.2-p290 with gemset veewee$

Page 45: DevOps for Opensource Geospatial Applications

bare metal

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

$ veewee versionVersion : 0.3.0.alpha4 - use at your own risk

Page 46: DevOps for Opensource Geospatial Applications

$ veewee vbox ostypes

Page 47: DevOps for Opensource Geospatial Applications

$ veewee vbox ostypes- ["Windows7_64", {:fusion=>"windows7-64", :kvm=>nil, :vbox=>"Windows7_64", :parallels=>"win-7"}]- ["Windows7", {:fusion=>"windows7", :kvm=>nil, :vbox=>"Windows7", :parallels=>"win-7"}]- ["Windows8", {:fusion=>nil, :kvm=>nil, :vbox=>"Windows8", :parallels=>"win-8"}]- ["Windows8_64", {:fusion=>nil, :kvm=>nil, :vbox=>"Windows8_64", :parallels=>"win-8"}]- ["WindowsNT", {:fusion=>"winNT", :kvm=>nil, :vbox=>"WindowsNT", :parallels=>"win-net"}]- ["Windows2008", {:fusion=>"longhorn", :kvm=>nil, :vbox=>"Windows2008", :parallels=>"win-2008"}]- ["Windows2008_64", {:fusion=>"longhorn-64", :kvm=>nil, :vbox=>"Windows2008_64", :parallels=>"win-2008"}]- ["WindowsVista_64", {:fusion=>"winvista-64", :kvm=>nil, :vbox=>"WindowsVista_64", :parallels=>"win-vista"}]- ["WindowsVista", {:fusion=>"winvista", :kvm=>nil, :vbox=>"WindowsVista", :parallels=>"win-vista"}]- ["Windows2003", {:fusion=>"winnetstandard", :kvm=>nil, :vbox=>"Windows2003", :parallels=>"win-2003"}]- ["Windows2003_64", {:fusion=>"winnetstandard-64", :kvm=>nil, :vbox=>"Windows2003_64", :parallels=>"win-2003"}]- ["WindowsXP_64", {:fusion=>"winXPPro-64", :kvm=>nil, :vbox=>"WindowsXP_64", :parallels=>"win-xp"}]- ["WindowsXP", {:fusion=>"winXP", :kvm=>nil, :vbox=>"WindowsXP", :parallels=>"win-xp"}]- ["Windows2000", {:fusion=>nil, :kvm=>nil, :vbox=>"Windows200", :parallels=>"win-2000"}]- ["WindowsNT4", {:fusion=>nil, :kvm=>nil, :vbox=>"WindowsNT4", :parallels=>"win-nt"}]- ["WindowsMe", {:fusion=>nil, :kvm=>nil, :vbox=>"WindowsMe", :parallels=>"win-me"}]- ["Windows98", {:fusion=>nil, :kvm=>nil, :vbox=>"Windows98", :parallels=>"win-98"}]- ["Windows95", {:fusion=>nil, :kvm=>nil, :vbox=>"Windows95", :parallels=>"win-95"}]- ["Windows31", {:fusion=>nil, :kvm=>nil, :vbox=>"Windows31", :parallels=>"win-311"}]- ["Other", {:fusion=>"other", :kvm=>nil, :vbox=>"Other", :parallels=>"other"}]- ["Other_64", {:fusion=>"other-64", :kvm=>nil, :vbox=>"Other_64", :parallels=>"other"}]- ["FreeBSD", {:fusion=>"freeBSD", :kvm=>nil, :vbox=>"FreeBSD", :parallels=>"freebsd"}]- ["FreeBSD_64", {:fusion=>"FreeBSD_64", :kvm=>nil, :vbox=>"FreeBSD-64", :parallels=>"freebsd"}]- ["Oracle", {:fusion=>"oraclelinux", :kvm=>nil, :vbox=>"Oracle", :parallels=>"other"}]- ["Oracle_64", {:fusion=>"oraclelinux-64", :kvm=>nil, :vbox=>"Oracle_64", :parallels=>"other"}]- ["Debian", {:fusion=>"debian5", :kvm=>nil, :vbox=>"Debian", :parallels=>"debian"}]- ["Debian_64", {:fusion=>"debian5-64", :kvm=>nil, :vbox=>"Debian_64", :parallels=>"debian"}]- ["Gentoo", {:fusion=>"other26xlinux", :kvm=>nil, :vbox=>"Gentoo", :parallels=>"other"}]- ["Gentoo_64", {:fusion=>"other26xlinux-64", :kvm=>nil, :vbox=>"Gentoo_64", :parallels=>"other"}]- ["Linux22", {:fusion=>"linux", :kvm=>nil, :vbox=>"Linux22", :parallels=>"other"}]- ["Linux24", {:fusion=>"other24xlinux", :kvm=>nil, :vbox=>"Linux24", :parallels=>"linux-2.4"}]- ["Linux24_64", {:fusion=>"other24xlinux-64", :kvm=>nil, :vbox=>"Linux24_64", :parallels=>"linux-2.4"}]-

Page 48: DevOps for Opensource Geospatial Applications

["Linux26", {:fusion=>"other26xlinux", :kvm=>nil, :vbox=>"Linux26", :parallels=>"linux-2.6"}]- ["Linux26_64", {:fusion=>"other26xlinux-64", :kvm=>nil, :vbox=>"Linux26_64", :parallels=>"linux-2.6"}]- ["RedHat", {:fusion=>"RedHat", :kvm=>nil, :vbox=>"RedHat", :parallels=>"redhat"}]- ["RedHat_64", {:fusion=>"RedHat_64", :kvm=>nil, :vbox=>"RedHat_64", :parallels=>"redhat"}]- ["Centos4", {:fusion=>"centos", :kvm=>nil, :vbox=>"RedHat", :parallels=>"centos"}]- ["Centos_64", {:fusion=>"centos-64", :kvm=>nil, :vbox=>"RedHat_64", :parallels=>"centos"}]- ["ArchLinux", {:fusion=>"other26xlinux", :kvm=>nil, :vbox=>"ArchLinux", :parallels=>"linux-2.6"}]- ["ArchLinux_64", {:fusion=>"other26xlinux-64", :kvm=>nil, :vbox=>"ArchLinux_64", :parallels=>"linux-2.6"}]- ["OpenSUSE", {:fusion=>"opensuse", :kvm=>nil, :vbox=>"OpenSUSE", :parallels=>"opensuse"}]- ["OpenSUSE_64", {:fusion=>"opensuse-64", :kvm=>nil, :vbox=>"OpenSUSE_64", :parallels=>"opensuse"}]- ["SUSE", {:fusion=>"suse", :kvm=>nil, :vbox=>"OpenSUSE", :parallels=>"suse"}]- ["SUSE_64", {:fusion=>"suse-64", :kvm=>nil, :vbox=>"OpenSUSE_64", :parallels=>"suse"}]- ["Fedora", {:fusion=>"fedora", :kvm=>nil, :vbox=>"Fedora", :parallels=>"fedora-core"}]- ["Fedora_64", {:fusion=>"fedora-64", :kvm=>nil, :vbox=>"Fedora_64", :parallels=>"fedora-core"}]- ["Ubuntu", {:fusion=>"ubuntu", :kvm=>nil, :vbox=>"Ubuntu", :parallels=>"ubuntu"}]- ["Ubuntu_64", {:fusion=>"ubuntu-64", :kvm=>nil, :vbox=>"Ubuntu_64", :parallels=>"ubuntu"}]- ["Linux", {:fusion=>"linux", :kvm=>nil, :vbox=>"Linux", :parallels=>"linux"}]- ["Solaris", {:fusion=>"solaris10", :kvm=>nil, :vbox=>"Solaris", :parallels=>"solaris-10"}]- ["Solaris_64", {:fusion=>"solaris10-64", :kvm=>nil, :vbox=>"Solaris_64", :parallels=>"solaris-10"}]- ["Solaris9", {:fusion=>"solaris", :kvm=>nil, :vbox=>"Solaris", :parallels=>"solaris-9"}]- ["Solaris7", {:fusion=>"solaris7", :kvm=>nil, :vbox=>"Solaris", :parallels=>"solaris"}]- ["Solaris8", {:fusion=>"solaris8", :kvm=>nil, :vbox=>"Solaris", :parallels=>"solaris"}]- ["OpenSolaris", {:fusion=>"solaris10", :kvm=>nil, :vbox=>"OpenSolaris", :parallels=>"opensolaris"}]- ["OpenSolaris_64", {:fusion=>"solaris-64", :kvm=>nil, :vbox=>"OpenSolaris_64", :parallels=>"opensolaris"}]- ["OpenBSD", {:fusion=>"other", :kvm=>nil, :vbox=>"OpenBSD", :parallels=>"other"}]- ["OpenBSD_64", {:fusion=>"other-64", :kvm=>nil, :vbox=>"OpenBSD_64", :parallels=>"other"}]- ["NetBSD", {:fusion=>"other", :kvm=>nil, :vbox=>"NetBSD", :parallels=>"other"}]- ["NetBSD_64", {:fusion=>"other-64", :kvm=>nil, :vbox=>"NetBSD_64", :parallels=>"other"}]

Page 49: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

CentOs 5.7* Openstreetmap stack

Page 51: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

$ veewee vbox define "mycentos""CentOS-5.7-x86_64"The basebox 'mycentos' has been succesfully created from the template 'CentOS-5.7-x86_64'You can now edit the definition files stored in definitions/mycentos or build the box with:veewee vbox build 'mycentos'

Page 52: DevOps for Opensource Geospatial Applications

http://www.flickr.com/photos/virtualsugar/4471926175/ (CC 2.0)

$ veewee vbox build 'mycentos'

Page 53: DevOps for Opensource Geospatial Applications

$ veewee vbox validate mycentos

Page 54: DevOps for Opensource Geospatial Applications

# -*- mode: ruby -*-# vi: set ft=ruby :

Vagrant::Config.run do |config|

config.vm.box = "CentOS-5.7-x86_64" config.vm.box_url = "https://s3.amazonaws.com/osmdevbox/CentOS-5.7-x86_64.box"

Page 55: DevOps for Opensource Geospatial Applications

Effing Package Manager

https://github.com/jordansissel/fpm

Page 56: DevOps for Opensource Geospatial Applications

Effing Package Manager

fpm -s dir -t rpm -n openstreetmap-website \--prefix=/usr/local openstreetmap-website

Page 57: DevOps for Opensource Geospatial Applications

THE END