create and control services
like hadoop
cloud is a cluster
whirr
Monday, November 29, 2010
whirr apache incubator
service = new ServiceFactory().create(“hadoop”);
spec = new ClusterSpec();
spec.setClusterName(“myhadoopcluster”);
spec.setInstanceTemplates(ImmutableList.of(
new InstanceTemplate(1,”nn”,”jt”),
new InstanceTemplate(4,”dn”,”tt”)));
cluster = service.launchCluster(spec);
proxy = new HadoopProxy(spec, cluster);
proxy.start();
or if you like bash
$ whirr launch-cluster service-name=hadoop \
cluster-name=myhadoopcluster \
instance-templates='1 nn+jt 4 dn+tt'
Monday, November 29, 2010
build your environment
manage at runtime
cloud is clojure
pallet
Monday, November 29, 2010
pallet github hugoduncan/pallet
(defnode webserver
"Basic web app, served by tomcat"
!{:os‐family :ubuntu
! :os-version‐matches "10.04"
:inbound-ports [8080 22]}
! :bootstrap (phase (public-dns-if-no-nameserver)
(automated-admin-user))
:configure (phase (tomcat)))
:deploy(phase (tomcat‐deploy "webapp.war")))
(converge {webserver 1} :compute service)
Monday, November 29, 2010
demo time!
/>Monday, November 29, 2010
Whatʼs next?
•
Location API
•
Mounted volume support
•
Existing node/local vm management
•
Cloning/Backups
Monday, November 29, 2010
@jclouds
/>Questions?
github jclouds/jclouds
github jclouds/jclouds
apache whirr
jboss arquillian
codehaus cargo
github hugoduncan/pallet
java.net hudson
Monday, November 29, 2010
Location API: Objectives
compatible metadata for service providers
jurisdiction and coordinates
collocation/billing relationships
latency and network topology
Monday, November 29, 2010
Location API: Data Draft
"amazon.us.east" {
name "Amazon US-EAST"
jurisdiction "us.va"
coordinates {
latitude 30.45
longitude 55.2
}
custom("qos") {
"datacenter.tier" 3
}
group("billing") {
peer "amazon.us.s3"
}
// provisioner-specific info (jclouds compute amazon)
}
"amazon.us.s3" {
// provisioner-specific info (jclouds blobstore)
}
Monday, November 29, 2010
Location API: Query Draft
locations = ResourceLocations.parse("/path/to/SampleLocations.conf");
matches = LocationUtils.filter(locations,
LocationFilter.Builder.newInstance()
.inJurisdiction("us")
.withCustomProperty("qos.datacenter.tier", 3)
.toFilter());
assertEquals(["amazon.us.east"], matches.values().each{it.id})
Monday, November 29, 2010