Socal piggies-app-deploy
-
Upload
jtimberman -
Category
Technology
-
view
1.232 -
download
1
description
Transcript of Socal piggies-app-deploy
![Page 1: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/1.jpg)
Application Deployment is System State
Joshua Timberman@jtimberman
Wednesday, February 22, 12
![Page 2: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/2.jpg)
% whoami
Wednesday, February 22, 12
![Page 3: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/3.jpg)
Wednesday, February 22, 12
![Page 4: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/4.jpg)
Wednesday, February 22, 12
![Page 5: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/5.jpg)
Who are you?
• Developers?
• System administrators?
• DevOps?
Wednesday, February 22, 12
![Page 6: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/6.jpg)
System State
Wednesday, February 22, 12
![Page 7: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/7.jpg)
Configuration Management
Wednesday, February 22, 12
![Page 8: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/8.jpg)
System Integration
http://www.flickr.com/photos/opalsson/3773629074/
Wednesday, February 22, 12
![Page 9: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/9.jpg)
WAT?
Wednesday, February 22, 12
![Page 10: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/10.jpg)
n-Tier Infrastructure
Database Master
Load Balancer
App Server App Server
• Provision
• Configure
• Integrate
{{
Wednesday, February 22, 12
![Page 11: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/11.jpg)
Wednesday, February 22, 12
![Page 12: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/12.jpg)
We're hiring!opscode.com/careers/
Wednesday, February 22, 12
![Page 13: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/13.jpg)
Resources
Wednesday, February 22, 12
![Page 14: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/14.jpg)
Declarative interface to system resources
Wednesday, February 22, 12
![Page 15: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/15.jpg)
user "django_app" do shell "/bin/false comment "Django App User" system true action :createend
package "python" do action :installend
python_pip "gunicorn" do action :installend
Wednesday, February 22, 12
![Page 16: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/16.jpg)
Describe *what*.
Not how.
Wednesday, February 22, 12
![Page 17: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/17.jpg)
def install_package(name, version) package_name = "#{name}=#{version}" package_name = name if @is_virtual_package run_command_with_systems_locale( :command => "apt-get -q -y #{expand_options(@new_resource.options)} install #{package_name}", :environment => { "DEBIAN_FRONTEND" => "noninteractive" } )end
Wednesday, February 22, 12
![Page 18: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/18.jpg)
package “python” { yum install pythonapt-get install pythonpacman sync pythonpkg_add -r python
Wednesday, February 22, 12
![Page 19: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/19.jpg)
Recipes
Wednesday, February 22, 12
![Page 20: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/20.jpg)
Ruby Internal Ruby DSL Ruby
Wednesday, February 22, 12
![Page 21: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/21.jpg)
def method_missing(method_symbol, *args, &block) return "lol method_missing"end
Wednesday, February 22, 12
![Page 22: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/22.jpg)
user "django_app" do shell "/bin/false comment "Django App" system trueend
package "python"
python_pip "gunicorn" do action :installend
Wednesday, February 22, 12
![Page 23: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/23.jpg)
Cookbooks
Wednesday, February 22, 12
![Page 24: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/24.jpg)
opscode/cookbooks/python├── README.md├── attributes│ └── default.rb├── metadata.rb├── providers│ ├── pip.rb│ └── virtualenv.rb├── recipes│ ├── default.rb│ ├── package.rb│ ├── pip.rb│ ├── source.rb│ └── virtualenv.rb└── resources ├── pip.rb └── virtualenv.rb
Wednesday, February 22, 12
![Page 25: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/25.jpg)
Roles
Wednesday, February 22, 12
![Page 26: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/26.jpg)
Roles describe nodes.
Wednesday, February 22, 12
![Page 27: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/27.jpg)
name "django_cms"description "django app app server"run_list( "recipe[mysql::client]", "recipe[application]")
Wednesday, February 22, 12
![Page 28: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/28.jpg)
Roles contain recipes
Wednesday, February 22, 12
![Page 29: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/29.jpg)
name "base"description "All nodes have the base role"run_list( "recipe[zsh]", "recipe[sudo]", "recipe[apt]", "recipe[git]", "recipe[build-essential]")override_attributes( :authorization => { :sudo => { :users => ["ubuntu"], :passwordless => true } })
Wednesday, February 22, 12
![Page 30: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/30.jpg)
Application Deployment
Wednesday, February 22, 12
![Page 31: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/31.jpg)
Wednesday, February 22, 12
![Page 32: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/32.jpg)
Wednesday, February 22, 12
![Page 33: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/33.jpg)
Wednesday, February 22, 12
![Page 34: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/34.jpg)
Wednesday, February 22, 12
![Page 35: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/35.jpg)
Wednesday, February 22, 12
![Page 36: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/36.jpg)
Build your own
• Let's be realistic.
• You own your availability.
Wednesday, February 22, 12
![Page 37: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/37.jpg)
Application Deployment vs...
• Configuration management
• Ad-hoc system administration
• Going against policy
Wednesday, February 22, 12
![Page 38: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/38.jpg)
Wednesday, February 22, 12
![Page 39: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/39.jpg)
Wednesday, February 22, 12
![Page 40: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/40.jpg)
Package management
• Rpm
• Deb
• Pkgsrc
• Gems
• Eggs
• Not a solved problem.
Wednesday, February 22, 12
![Page 41: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/41.jpg)
git "/srv/django_app" do repository "git://github.com/me/django_app.git" reference "master" action :syncend
Wednesday, February 22, 12
![Page 42: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/42.jpg)
Fabric
Wednesday, February 22, 12
![Page 43: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/43.jpg)
Capistrano
Wednesday, February 22, 12
![Page 44: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/44.jpg)
chef-deploy
Wednesday, February 22, 12
![Page 45: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/45.jpg)
deploy_revision[/srv/django_app]
Wednesday, February 22, 12
![Page 46: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/46.jpg)
deploy_revision "/srv/django_app" do revision "2.0.17" repository "git://github.com/me/django_app.git" user "django_app" group "www-data" before_migrate do requirements_file = "#{release_path}/requirements.txt" execute "pip install -r #{requirements_file}" do cwd release_path end end action :deployend
Wednesday, February 22, 12
![Page 47: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/47.jpg)
Ad-Hoc Deployment
• knife ssh
• capistrano
• fabric (use pychef!)
Wednesday, February 22, 12
![Page 48: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/48.jpg)
require 'chef/knife'require 'chef/search/query'
Capistrano::Configuration.instance.load do Chef::Knife.new.configure_chef
def chef_role(name, query = "*:*", options = {}) attr = options.delete(:attribute) || :ipaddress nodes = Chef::Search::Query.new.search(:node, query)[0].map {|n| n[attr] } role name, *nodes, options nodes endend
https://github.com/cramerdev/capistrano-chefWednesday, February 22, 12
![Page 49: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/49.jpg)
http://pychef.readthedocs.org/en/latest/fabric.html
from fabric.api import env, run, rolesfrom chef.fabric import chef_roledefs
env.roledefs = chef_roledefs()
@roles('web_app')def mytask(): run('uptime')
Wednesday, February 22, 12
![Page 50: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/50.jpg)
Further Resources
• https://us.pycon.org/2012/schedule/presentation/286/ (Noah Kantrowitz)
• http://wiki.opscode.com/display/chef/Build+a+Django+Stack
• http://community.opscode.com/cookbooks/application
• http://pychef.readthedocs.org/en/latest/index.html
Wednesday, February 22, 12
![Page 51: Socal piggies-app-deploy](https://reader034.fdocuments.us/reader034/viewer/2022052410/5552f511b4c90587048b4d23/html5/thumbnails/51.jpg)
http://www.flickr.com/photos/oberazzi/318947873/
Questions?
Joshua [email protected]
@jtimberman (twitter, github)lists.opscode.com
irc.freenode.net/chef
Wednesday, February 22, 12