SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Copyright © 2010 Opscode, Inc - All Rights Reserved
Speaker:
‣ joshua@opscode.com
‣ @jtimberman
‣ www.opscode.com
Joshua Timberman Sr. Solutions Engineer
1
Data Driven App Deploys
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved 2http://www.flickr.com/photos/anotherphotograph/2100904507/sizes/o/
System administrator
Many environments
Opscode: Training, Services
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
http://www.flickr.com/photos/timyates/2854357446/sizes/l/
3
Rails Developers?
Java Developers?
Python Developers?
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved 4
Application Deployment
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Application Deployment
5
tar -x -C /app -f app.tar
rsync ~/dev/app www:/app
cap deploy
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Server Configuration
6
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Server Configuration
Web Servers
Load Balancers
Database Servers
7
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Server Configuration
8
% vi /etc/mysql/my.cnf
#!/bin/bash
Capfile
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved 9http://www.brooklynstreetart.com/theBlog/wp-content/uploads/2008/12/swedish_chef_bork-sleeper-cell.jpg
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Chef Client runs on your
systems
10
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Clients talk to a Chef
Server
11
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved http://www.flickr.com/photos/peterrosbjerg/3913766224/ 12
We call each system you
configure a Node
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Nodes have Attributes
13
{
"kernel": {
"machine": "x86_64",
"name": "Darwin",
"os": "Darwin",
"version": "Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010;
root:xnu-1504.7.4~1/RELEASE_I386",
"release": "10.4.0"
},
"platform_version": "10.6.4",
"platform": "mac_os_x",
"platform_build": "10F569",
"domain": "local",
"os": "darwin",
"current_user": "jtimberman",
"ohai_time": 1278602661.60043,
"os_version": "10.4.0",
"uptime": "18 days 17 hours 49 minutes 18 seconds",
"ipaddress": "10.13.37.116",
"hostname": "cider",
"fqdn": "cider.local",
"uptime_seconds": 1619358
}
Kernel info!
Platform info!
Hostname and IP!
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Nodes have a Run List
14
What Roles or Recipes to apply
in Order
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved 15http://www.flickr.com/photos/laenulfean/374398044/
Nodes have Roles
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reservedhttp://www.flickr.com/photos/roadsidepictures/2478953342/sizes/o/ 16
Recipes are lists of
Resources
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Chef manages
Resources on Nodes
17
cookbook_file
template
service
package
deploy
git
http_request
link
ruby_block
log
bash
execute
remote_file
user
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Data bags store
arbitrary data
18
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Nodes, Roles, Data
Bags are Searchable
19
% knife search node “role:webserver”
search(:users, “group:sysadmins”)
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Application Deployment
20
Application Repository
‣ Source
‣ CI / Build
Chef Repository
cider:~/dev/rails-quick-start (ruby-1.9.2-p0)
master ✔ % ls -l
total 16
-rw-r--r-- 1 jtimberman staff 3521 Nov 5 13:09 README.md
-rw-r--r-- 1 jtimberman staff 2171 Nov 5 13:09 Rakefile
drwxr-xr-x 3 jtimberman staff 102 Nov 5 13:09 certificates/
drwxr-xr-x 3 jtimberman staff 102 Nov 5 13:09 config/
drwxr-xr-x 26 jtimberman staff 884 Nov 12 08:16 cookbooks/
drwxr-xr-x 4 jtimberman staff 136 Nov 5 13:25 data_bags/
drwxr-xr-x 9 jtimberman staff 306 Nov 12 08:16 roles/
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Chef Repository
Roles
Cookbooks
Application Information
‣ Data Bag!
21
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Application Information
Data Bag
JSON
22
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Walkthrough
23
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved 24
{
"id": "radiant",
"server_roles": [
"radiant"
],
"type": {
"radiant": [
"rails",
"unicorn"
]
},
"database_master_role": [
"radiant_database_master"
],
"repository": "git://github.com/radiant/radiant.git",
"revision": {
"production": "0.9.1"
},
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved 25
base.rb
production.rb
radiant.rb
radiant_database_master.rb
radiant_load_balancer.rb
radiant_run_migrations.rb
Server Roles
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Base Role
26
name "base"
description "Base role applied to all nodes."
run_list(
"recipe[apt]",
"recipe[git]",
"recipe[build-essential]",
"recipe[ruby]"
)
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Production Role
27
name "production"
description "Nodes in the production
environment."
default_attributes(
"app_environment" => "production"
)
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Radiant Role
28
name "radiant"
description "radiant front end application
server."
run_list(
"recipe[mysql::client]",
"recipe[application]"
)
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Application Recipe
29
search(:apps) do |app|
(app["server_roles"] & node.run_list.roles).each do |app_role|
app["type"][app_role].each do |thing|
node.run_state[:current_app] = app
include_recipe "application::#{thing}"
end
end
end
node.run_state.delete(:current_app)
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Application Rails Recipe
30
deploy_revision app['id'] do
revision app['revision'][node.app_environment]
repository app['repository']
user app['owner']
group app['group']
deploy_to app['deploy_to']
environment 'RAILS_ENV' => node.app_environment
action app['force'][node.app_environment] ? :force_deploy : :deploy
...
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Radiant Database Master Role
31
name "radiant_database_master"
description "Database master for the radiant
application."
run_list(
"recipe[database::master]"
)
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Database Master Recipe
32
search(:apps) do |app|
(app['database_master_role'] & node.run_list.roles).each do |
dbm_role|
app['databases'].each do |env,db|
if env =~ /#{node[:app_environment]}/
root_pw = node["mysql"]["server_root_password"]
mysql_database "create #{db['database']}" do
host "localhost"
username "root"
password root_pw
database db['database']
action [:create_db]
end
end
end
end
end
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Radiant Load Balancer Role
33
name "radiant_load_balancer"
description "radiant load balancer"
run_list(
"recipe[haproxy::app_lb]"
)
override_attributes(
"haproxy" => {
"app_server_role" => "radiant"
}
)
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Haproxy App Load Balancer Recipe
34
pool_members = search("node", "role:#{node['haproxy']
['app_server_role']} AND app_environment:#{node['app_environment']}")
|| []
template "/etc/haproxy/haproxy.cfg" do
source "haproxy-app_lb.cfg.erb"
owner "root"
group "root"
mode 0644
variables :pool_members => pool_members
notifies :restart, resources(:service => "haproxy")
end
Thursday, November 18, 2010
Copyright © 2010 Opscode, Inc - All Rights Reserved
Resources/Questions
35
www.opscode.com/chef
IRC and Mailing lists
‣ irc.freenode.net #chef
‣ lists.opscode.com
Twitter:
‣ @opscode, #opschef
‣ @jtimberman
Questions?
Thursday, November 18, 2010

Weitere ähnliche Inhalte

Ähnlich wie Data driven app deploys with chef frontdev

Document-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb PrimerDocument-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb Primer
jsiarto
 
Fosdem chef-101-app-deploy
Fosdem chef-101-app-deployFosdem chef-101-app-deploy
Fosdem chef-101-app-deploy
jtimberman
 
5 分でキメル! (慣れれば、あなたもやれる!) たったの 5 分でできるサーバと通信できる iPhone アプリの作成
5 分でキメル!  (慣れれば、あなたもやれる!)  たったの 5 分でできるサーバと通信できる iPhone アプリの作成5 分でキメル!  (慣れれば、あなたもやれる!)  たったの 5 分でできるサーバと通信できる iPhone アプリの作成
5 分でキメル! (慣れれば、あなたもやれる!) たったの 5 分でできるサーバと通信できる iPhone アプリの作成
Takafumi Kawano
 
An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018
ICS
 

Ähnlich wie Data driven app deploys with chef frontdev (20)

Automated infrastructure is on the menu
Automated infrastructure is on the menuAutomated infrastructure is on the menu
Automated infrastructure is on the menu
 
SRT Prometheus Exporter Introduction.pdf
SRT Prometheus Exporter Introduction.pdfSRT Prometheus Exporter Introduction.pdf
SRT Prometheus Exporter Introduction.pdf
 
Document-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb PrimerDocument-Oriented Databases: Couchdb Primer
Document-Oriented Databases: Couchdb Primer
 
PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)
 
Do zero ao deploy
Do zero ao deployDo zero ao deploy
Do zero ao deploy
 
Python ppt
Python pptPython ppt
Python ppt
 
Fosdem chef-101-app-deploy
Fosdem chef-101-app-deployFosdem chef-101-app-deploy
Fosdem chef-101-app-deploy
 
IPTC News Exchange Formats Working Party Autumn 2012
IPTC News Exchange Formats Working Party Autumn 2012IPTC News Exchange Formats Working Party Autumn 2012
IPTC News Exchange Formats Working Party Autumn 2012
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
ROS-TSC-ros-k8s.20230309.pdf
ROS-TSC-ros-k8s.20230309.pdfROS-TSC-ros-k8s.20230309.pdf
ROS-TSC-ros-k8s.20230309.pdf
 
5 分でキメル! (慣れれば、あなたもやれる!) たったの 5 分でできるサーバと通信できる iPhone アプリの作成
5 分でキメル!  (慣れれば、あなたもやれる!)  たったの 5 分でできるサーバと通信できる iPhone アプリの作成5 分でキメル!  (慣れれば、あなたもやれる!)  たったの 5 分でできるサーバと通信できる iPhone アプリの作成
5 分でキメル! (慣れれば、あなたもやれる!) たったの 5 分でできるサーバと通信できる iPhone アプリの作成
 
Html5 Development
Html5 DevelopmentHtml5 Development
Html5 Development
 
Better Documentation Through Automation: Creating docutils & Sphinx Extensions
Better Documentation Through Automation: Creating docutils & Sphinx ExtensionsBetter Documentation Through Automation: Creating docutils & Sphinx Extensions
Better Documentation Through Automation: Creating docutils & Sphinx Extensions
 
Updates on webSpoon and other innovations from Hitachi R&D
Updates on webSpoon and other innovations from Hitachi R&DUpdates on webSpoon and other innovations from Hitachi R&D
Updates on webSpoon and other innovations from Hitachi R&D
 
Kuberenetes Robotics Distributed System
Kuberenetes Robotics Distributed SystemKuberenetes Robotics Distributed System
Kuberenetes Robotics Distributed System
 
Next Generation Application Development
Next Generation Application DevelopmentNext Generation Application Development
Next Generation Application Development
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018
 
Accelerating BIM - CIB W78 Cairo 2010
Accelerating BIM - CIB W78 Cairo 2010Accelerating BIM - CIB W78 Cairo 2010
Accelerating BIM - CIB W78 Cairo 2010
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
 

Mehr von jtimberman (7)

Socal piggies-app-deploy
Socal piggies-app-deploySocal piggies-app-deploy
Socal piggies-app-deploy
 
Oscon2011 tutorial
Oscon2011 tutorialOscon2011 tutorial
Oscon2011 tutorial
 
Agile services-dev opsdays
Agile services-dev opsdaysAgile services-dev opsdays
Agile services-dev opsdays
 
Velocity2011 chef-workshop
Velocity2011 chef-workshopVelocity2011 chef-workshop
Velocity2011 chef-workshop
 
Mwrc2011 cookbook design patterns
Mwrc2011 cookbook design patternsMwrc2011 cookbook design patterns
Mwrc2011 cookbook design patterns
 
tmux lightning talk mwrc
tmux lightning talk mwrctmux lightning talk mwrc
tmux lightning talk mwrc
 
Understanding lwrp development
Understanding lwrp developmentUnderstanding lwrp development
Understanding lwrp development
 

Data driven app deploys with chef frontdev

  • 1. Copyright © 2010 Opscode, Inc - All Rights Reserved Speaker: ‣ joshua@opscode.com ‣ @jtimberman ‣ www.opscode.com Joshua Timberman Sr. Solutions Engineer 1 Data Driven App Deploys Thursday, November 18, 2010
  • 2. Copyright © 2010 Opscode, Inc - All Rights Reserved 2http://www.flickr.com/photos/anotherphotograph/2100904507/sizes/o/ System administrator Many environments Opscode: Training, Services Thursday, November 18, 2010
  • 3. Copyright © 2010 Opscode, Inc - All Rights Reserved http://www.flickr.com/photos/timyates/2854357446/sizes/l/ 3 Rails Developers? Java Developers? Python Developers? Thursday, November 18, 2010
  • 4. Copyright © 2010 Opscode, Inc - All Rights Reserved 4 Application Deployment Thursday, November 18, 2010
  • 5. Copyright © 2010 Opscode, Inc - All Rights Reserved Application Deployment 5 tar -x -C /app -f app.tar rsync ~/dev/app www:/app cap deploy Thursday, November 18, 2010
  • 6. Copyright © 2010 Opscode, Inc - All Rights Reserved Server Configuration 6 Thursday, November 18, 2010
  • 7. Copyright © 2010 Opscode, Inc - All Rights Reserved Server Configuration Web Servers Load Balancers Database Servers 7 Thursday, November 18, 2010
  • 8. Copyright © 2010 Opscode, Inc - All Rights Reserved Server Configuration 8 % vi /etc/mysql/my.cnf #!/bin/bash Capfile Thursday, November 18, 2010
  • 9. Copyright © 2010 Opscode, Inc - All Rights Reserved 9http://www.brooklynstreetart.com/theBlog/wp-content/uploads/2008/12/swedish_chef_bork-sleeper-cell.jpg Thursday, November 18, 2010
  • 10. Copyright © 2010 Opscode, Inc - All Rights Reserved Chef Client runs on your systems 10 Thursday, November 18, 2010
  • 11. Copyright © 2010 Opscode, Inc - All Rights Reserved Clients talk to a Chef Server 11 Thursday, November 18, 2010
  • 12. Copyright © 2010 Opscode, Inc - All Rights Reserved http://www.flickr.com/photos/peterrosbjerg/3913766224/ 12 We call each system you configure a Node Thursday, November 18, 2010
  • 13. Copyright © 2010 Opscode, Inc - All Rights Reserved Nodes have Attributes 13 { "kernel": { "machine": "x86_64", "name": "Darwin", "os": "Darwin", "version": "Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386", "release": "10.4.0" }, "platform_version": "10.6.4", "platform": "mac_os_x", "platform_build": "10F569", "domain": "local", "os": "darwin", "current_user": "jtimberman", "ohai_time": 1278602661.60043, "os_version": "10.4.0", "uptime": "18 days 17 hours 49 minutes 18 seconds", "ipaddress": "10.13.37.116", "hostname": "cider", "fqdn": "cider.local", "uptime_seconds": 1619358 } Kernel info! Platform info! Hostname and IP! Thursday, November 18, 2010
  • 14. Copyright © 2010 Opscode, Inc - All Rights Reserved Nodes have a Run List 14 What Roles or Recipes to apply in Order Thursday, November 18, 2010
  • 15. Copyright © 2010 Opscode, Inc - All Rights Reserved 15http://www.flickr.com/photos/laenulfean/374398044/ Nodes have Roles Thursday, November 18, 2010
  • 16. Copyright © 2010 Opscode, Inc - All Rights Reservedhttp://www.flickr.com/photos/roadsidepictures/2478953342/sizes/o/ 16 Recipes are lists of Resources Thursday, November 18, 2010
  • 17. Copyright © 2010 Opscode, Inc - All Rights Reserved Chef manages Resources on Nodes 17 cookbook_file template service package deploy git http_request link ruby_block log bash execute remote_file user Thursday, November 18, 2010
  • 18. Copyright © 2010 Opscode, Inc - All Rights Reserved Data bags store arbitrary data 18 Thursday, November 18, 2010
  • 19. Copyright © 2010 Opscode, Inc - All Rights Reserved Nodes, Roles, Data Bags are Searchable 19 % knife search node “role:webserver” search(:users, “group:sysadmins”) Thursday, November 18, 2010
  • 20. Copyright © 2010 Opscode, Inc - All Rights Reserved Application Deployment 20 Application Repository ‣ Source ‣ CI / Build Chef Repository cider:~/dev/rails-quick-start (ruby-1.9.2-p0) master ✔ % ls -l total 16 -rw-r--r-- 1 jtimberman staff 3521 Nov 5 13:09 README.md -rw-r--r-- 1 jtimberman staff 2171 Nov 5 13:09 Rakefile drwxr-xr-x 3 jtimberman staff 102 Nov 5 13:09 certificates/ drwxr-xr-x 3 jtimberman staff 102 Nov 5 13:09 config/ drwxr-xr-x 26 jtimberman staff 884 Nov 12 08:16 cookbooks/ drwxr-xr-x 4 jtimberman staff 136 Nov 5 13:25 data_bags/ drwxr-xr-x 9 jtimberman staff 306 Nov 12 08:16 roles/ Thursday, November 18, 2010
  • 21. Copyright © 2010 Opscode, Inc - All Rights Reserved Chef Repository Roles Cookbooks Application Information ‣ Data Bag! 21 Thursday, November 18, 2010
  • 22. Copyright © 2010 Opscode, Inc - All Rights Reserved Application Information Data Bag JSON 22 Thursday, November 18, 2010
  • 23. Copyright © 2010 Opscode, Inc - All Rights Reserved Walkthrough 23 Thursday, November 18, 2010
  • 24. Copyright © 2010 Opscode, Inc - All Rights Reserved 24 { "id": "radiant", "server_roles": [ "radiant" ], "type": { "radiant": [ "rails", "unicorn" ] }, "database_master_role": [ "radiant_database_master" ], "repository": "git://github.com/radiant/radiant.git", "revision": { "production": "0.9.1" }, Thursday, November 18, 2010
  • 25. Copyright © 2010 Opscode, Inc - All Rights Reserved 25 base.rb production.rb radiant.rb radiant_database_master.rb radiant_load_balancer.rb radiant_run_migrations.rb Server Roles Thursday, November 18, 2010
  • 26. Copyright © 2010 Opscode, Inc - All Rights Reserved Base Role 26 name "base" description "Base role applied to all nodes." run_list( "recipe[apt]", "recipe[git]", "recipe[build-essential]", "recipe[ruby]" ) Thursday, November 18, 2010
  • 27. Copyright © 2010 Opscode, Inc - All Rights Reserved Production Role 27 name "production" description "Nodes in the production environment." default_attributes( "app_environment" => "production" ) Thursday, November 18, 2010
  • 28. Copyright © 2010 Opscode, Inc - All Rights Reserved Radiant Role 28 name "radiant" description "radiant front end application server." run_list( "recipe[mysql::client]", "recipe[application]" ) Thursday, November 18, 2010
  • 29. Copyright © 2010 Opscode, Inc - All Rights Reserved Application Recipe 29 search(:apps) do |app| (app["server_roles"] & node.run_list.roles).each do |app_role| app["type"][app_role].each do |thing| node.run_state[:current_app] = app include_recipe "application::#{thing}" end end end node.run_state.delete(:current_app) Thursday, November 18, 2010
  • 30. Copyright © 2010 Opscode, Inc - All Rights Reserved Application Rails Recipe 30 deploy_revision app['id'] do revision app['revision'][node.app_environment] repository app['repository'] user app['owner'] group app['group'] deploy_to app['deploy_to'] environment 'RAILS_ENV' => node.app_environment action app['force'][node.app_environment] ? :force_deploy : :deploy ... Thursday, November 18, 2010
  • 31. Copyright © 2010 Opscode, Inc - All Rights Reserved Radiant Database Master Role 31 name "radiant_database_master" description "Database master for the radiant application." run_list( "recipe[database::master]" ) Thursday, November 18, 2010
  • 32. Copyright © 2010 Opscode, Inc - All Rights Reserved Database Master Recipe 32 search(:apps) do |app| (app['database_master_role'] & node.run_list.roles).each do | dbm_role| app['databases'].each do |env,db| if env =~ /#{node[:app_environment]}/ root_pw = node["mysql"]["server_root_password"] mysql_database "create #{db['database']}" do host "localhost" username "root" password root_pw database db['database'] action [:create_db] end end end end end Thursday, November 18, 2010
  • 33. Copyright © 2010 Opscode, Inc - All Rights Reserved Radiant Load Balancer Role 33 name "radiant_load_balancer" description "radiant load balancer" run_list( "recipe[haproxy::app_lb]" ) override_attributes( "haproxy" => { "app_server_role" => "radiant" } ) Thursday, November 18, 2010
  • 34. Copyright © 2010 Opscode, Inc - All Rights Reserved Haproxy App Load Balancer Recipe 34 pool_members = search("node", "role:#{node['haproxy'] ['app_server_role']} AND app_environment:#{node['app_environment']}") || [] template "/etc/haproxy/haproxy.cfg" do source "haproxy-app_lb.cfg.erb" owner "root" group "root" mode 0644 variables :pool_members => pool_members notifies :restart, resources(:service => "haproxy") end Thursday, November 18, 2010
  • 35. Copyright © 2010 Opscode, Inc - All Rights Reserved Resources/Questions 35 www.opscode.com/chef IRC and Mailing lists ‣ irc.freenode.net #chef ‣ lists.opscode.com Twitter: ‣ @opscode, #opschef ‣ @jtimberman Questions? Thursday, November 18, 2010