Mais conteúdo relacionado Semelhante a Socal piggies-app-deploy (20) Socal piggies-app-deploy5. Who are you?
• Developers?
• System administrators?
• DevOps?
Wednesday, February 22, 12
8. System Integration
http://www.flickr.com/photos/opalsson/3773629074/
Wednesday, February 22, 12
10. n-Tier Infrastructure
Load Balancer
App Server { { App Server
•
•
•
Provision
Configure
Integrate
Database Master
Wednesday, February 22, 12
12. We're hiring!
opscode.com/careers/
Wednesday, February 22, 12
15. user "django_app" do
shell "/bin/false
comment "Django App User"
system true
action :create
end
package "python" do
action :install
end
python_pip "gunicorn" do
action :install
end
Wednesday, February 22, 12
17. 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
18. package “python”
{ yum install python
apt-get install python
pacman sync python
pkg_add -r python
Wednesday, February 22, 12
22. user "django_app" do
shell "/bin/false
comment "Django App"
system true
end
package "python"
python_pip "gunicorn" do
action :install
end
Wednesday, February 22, 12
24. 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
27. name "django_cms"
description "django app app server"
run_list(
"recipe[mysql::client]",
"recipe[application]"
)
Wednesday, February 22, 12
29. 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
36. Build your own
• Let's be realistic.
• You own your availability.
Wednesday, February 22, 12
37. Application Deployment vs...
• Configuration management
• Ad-hoc system administration
• Going against policy
Wednesday, February 22, 12
40. Package management
• Rpm
• Deb
• Pkgsrc
• Gems
• Eggs
• Not a solved problem.
Wednesday, February 22, 12
41. git "/srv/django_app" do
repository "git://github.com/me/django_app.git"
reference "master"
action :sync
end
Wednesday, February 22, 12
46. 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 :deploy
end
Wednesday, February 22, 12
47. Ad-Hoc Deployment
• knife ssh
• capistrano
• fabric (use pychef!)
Wednesday, February 22, 12
48. 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
end
end
https://github.com/cramerdev/capistrano-chef
Wednesday, February 22, 12
49. from fabric.api import env, run, roles
from chef.fabric import chef_roledefs
env.roledefs = chef_roledefs()
@roles('web_app')
def mytask():
run('uptime')
http://pychef.readthedocs.org/en/latest/fabric.html
Wednesday, February 22, 12
50. 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
51. Questions?
Joshua Timberman
joshua@opscode.com
@jtimberman (twitter, github)
lists.opscode.com
irc.freenode.net/chef
http://www.flickr.com/photos/oberazzi/318947873/
Wednesday, February 22, 12