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! https://github.com/hugoduncan/pallet-examples Monday, November 29, 2010 Whatʼs next? • Location API • Mounted volume support • Existing node/local vm management • Cloning/Backups Monday, November 29, 2010 adrian@jclouds.org @jclouds http://www.meetup.com/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 . 2010 adrian@jclouds.org @jclouds http://www.meetup.com/jclouds Questions? github jclouds/jclouds github jclouds/jclouds apache whirr jboss arquillian codehaus cargo github hugoduncan/pallet java. net. latitude 30 .45 longitude 55.2 } custom("qos") { "datacenter.tier" 3 } group("billing") { peer "amazon.us.s3" } // provisioner-specific info (jclouds. // provisioner-specific info (jclouds compute amazon) } "amazon.us.s3" { // provisioner-specific info (jclouds blobstore) } Monday, November 29, 2010 Location API: Query Draft locations