Professional Documents
Culture Documents
Fairchild
Interactive R&D
I have a great idea!
This site,
ts lets you post messages to your friends,
and they can follow you...
write an application...
write an application...
instantiate servers...
write an application...
instantiate servers...
configure servers...
write an application...
instantiate servers...
configure servers...
scale them up...
write an application...
instantiate servers...
configure servers...
scale them up...
reconfigure...
write an application...
instantiate servers...
configure servers...
scale them up...
reconfigure..
scale down...
and pay for it ?!?
Wouldn’t it be nice if you could
just write one file
to do all that?
clouds.rb
cloud :twitterclone do
end
cloud :twitterclone do
instances 1..40
end
cloud :twitterclone do
instances 1..40
using :ec2
end
It’s just Ruby
cloud :twitterclone do
instances 1..40
using :ec2
has_file "/etc/motd" do
content "hello you"
end
end
Let’s go already!
write an application...
instantiate servers...
configure servers...
scale them up...
reconfigure..
scale down...
Ew
cloud-start
cloudstart s examples/fairchild.rb
*** Starting cloud pp1
0 running instances (1 3)
Adding default gem depdendencies
...
75.101.181.64 stderr => [Sat, 04 Apr 2009 16:46:01 +0000] INFO: Ran
execute[line_in_/etc/profile] successfully
[Sat, 04 Apr 2009 16:46:01 +0000] INFO: Chef Run complete in 29.883499
seconds
Your cloud has started. Your ip is 75.101.181.64
Your cloud has started. Your ip is 75.101.181.64
Your cloud has started. Your ip is 75.101.181.64
Your cloud has started. Your ip is 75.101.181.64
Your cloud has started. Your ip is 75.101.181.64
Your cloud has started. Your ip is 75.101.181.64
Your cloud has started. Your ip is 75.101.181.64
Your cloud has started. Your ip is 75.101.181.64
launching...
bootstrapping...
configuring...
cloud-list
$ cloudlist s examples/fairchild.rb
*** Listing cloud pp1
****** Active instances
master 75.101.181.64 i516f0f38
cloud-ssh
cloudssh s examples/fairchild.rb
master 75.101.181.64 i516f0f38
Welcome to your PoolParty instance
root@ip10251201157:~#
poolparty core
resources
crondirectoryexecfil
ehostmountpackage
remote_filesymlinku
servariable
Puppet
Chef
web_app "paparazzi" do
docroot "/var/www/paparazzi/public"
template "paparazzi.conf.erb"
server_name "www.paparazzi.com"
server_aliases [node[:hostname],
node[:fqdn],
"paparazzi.com"]
rails_env "production"
end
chef do
include_recipies "~/recipies/*"
has_git_repos :name => "/srv/paparazzi" do
source "git://github.com/auser/paparazzi.git"
at "/srv"
end
cloud :twitterclone do
instances 1..1000
using :ec2
chef do
include_recipes "~/recipies/*"
has_git_repos :name => "/var/www/paparazzi" do
source "git://github.com/auser/paparazzi.git"
at "/var/www"
end
end
cloud-configure
Pushes
configuration
changes to the
cloud
2building file list ... donedr_configure/clouds.jsondr
Idempotent
unchanged when
multiplied by itself
Run it more than
once and it won’t
change things
unless it should
cloud-configure
cloud-configure
cloud-configure
Recipes already
available?
OMG!
Oprah mentioned
twitterclone!
cloud :twitterclone do
instances 1..40
expand_when 'load > 0.8'
contract_when 'load < 0.3'
end
collective metrics
averaged across the cloud
Unequal use of resources
My database server is overloaded
but my web server isn’t
multiple clouds
pool :twitterclone do
instances 1..4000
cloud :db do
expand_when "memory > 0.9"
end
cloud :webserver do
maximum_instances 10
expand_when "load > 1.2"
end
end
cloud :twitterclone do
end
Defaults
c
Ruby
(my)(postgre)sql(lite)
PHP
Whatever
web applications
data mining
transcoding cloud
email blasting cloud
particle beam simulation cloud
(getting girls) social networks
the sky is the limit
future
more remoter
bases
using :ec2
using :vmware
using :gogrid
using :slicehost
using :vbox
using :ssh
:ssh
:ssh
Add Your Own!
launch_new_instance!
terminate_instance(id)
describe_instance(id)
describe_instances
scripted
deployment
testing
dslify
aska
parenting
butterfly
commander (soon)
commander (soon)
commander (soon)
commander (soon)
Butterfly
HTTP for internode
communication
of DNS
round-robin load
balancing
round-robin load
balancing
round-robin load
nominate actions
based
on local state
Alternatives
console
cloud-terminate
http://poolpartyrb.com
#poolpartyrb
(@freenode)
(@freenode)
(@freenode)
alerner@atti.com
(@freenode)
mfairchild@atti.com
Questions?
Thank you
Interactive R&D