Solve the Cross-
   Cloud Conundrum
                     with jclouds
               Austin Java Users Group
                      March 26, 2013 at 7:00 pm
Everett Toews                                     You need:
Developer Advocate                                  JDK 1.6+
@everett_toews                                      Ant 1.8+ || Ivy 2+
                                                    Rackspace and/or
                                                     HP cloud accounts
Intro




        Developer


                    RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                 2
Committer on jclouds




                       RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                    3
Intro




        Advocate


                   RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                4
Intro




        RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                     5
Intro




        Operations


                 RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                              6
Co-author of The OpenStack Operation Guide




                                RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                             7
Intro


In startup we
are not allow
dev team for
talk to ops team
except by API.
                   @DevOps_Borat


                      RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                   8
Agenda




         RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                      9
The Workshop
 •Introduction
 •jclouds Overview
 •Cloud Accounts
 •Installation
 •Compute Example
 •Next Steps
 •Wrap Up
                     RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                  10
Introduction to Rackspace
      and the cloud




                     RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                  11
Rackspace




            RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                         12
The Cloud




      Infrastructure
       with an API

                  RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                               13
The Cloud


                                                  VM
                                 VM
                                                      VM
    Your    S   A
   System   D   P               Cloud
            K   I




  User
 System


                    RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                 14
The Cloud



                    Cloud               VM
                                VM
                                           VM
            A                   VM
            P
            I   S       Your
                D      System
                K
 User
System



                                     RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                                  15
Introduction to jclouds




                    RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                 16
jclouds
          • Cross-cloud toolkit
          • Open Source (Apache v2)
          • Community
          • Portable APIs
          • Ecosystem Specific APIs
          • Provider Specific APIs
          • Java


                        RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                     17
jclouds Providers
•ComputeService       •BlobStore
 • Rackspace Cloud    • Rackspace Cloud
   Servers              Files
 • HP Cloud Compute   • HP Cloud Storage
 • AWS EC2            • AWS S3
 • GCE (soon)         • GCS (soon)
 • ElasticHosts       • Azure
 • GoGrid             • CloudOne
 • All Providers      • All Providers

                             RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                          18
jclouds Community




                    RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                 19
jclouds Layers (APIs)
•ComputeService         •BlobStore
 • Rackspace             • Rackspace
 • OpenStack             • OpenStack
 • HP, AWS, GCE, etc.    • HP, AWS, GCS, etc.
•NovaApi (*Api)         •SwiftApi
 • Rackspace             • Rackspace
 • OpenStack             • OpenStack
 • HP                    • HP
                        •CloudFilesClient
                         • Rackspace
                                 RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                              20
jclouds Community

After 3 beer I
can able use
any of cloud
API.
                    @DevOps_Borat



                       RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                    21
What Can jclouds
Do For You Today?




                RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                             22
SDKs




       Plumbing


                  RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                               23
SDKs




 (RE)Authentication


              RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                           24
SDKs




       Pagination


                RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                             25
SDKs




       State Polling


                  RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                               26
SDKs




       Rate Limiting


                  RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                               27
SDKs




       Retry


               RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                            28
SDKs




        Smoothing
       Rough Edges

                RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                             29
SDKs




       Open Source


                RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                             30
SDKs


In devops
nobody is get
fire for buy
open source.
                @DevOps_Borat



                   RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                31
SDKs




       Community


               RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                            32
SDKs




       Support


                 RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                              33
SDKs




       Packaged


                  RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                               34
SDKs




       All-in-one


                    RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                 35
SDKs




       No lock-in


                    RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                 36
SDKs




       RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                    37
SDKs




       RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                    38
SDKs




 Battle Tested Code


              RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                           39
SDKs




       Sample Code


                RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                             40
SDKs




       Documentation


                 RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                              41
SDKs

Survey is show
junior devops
are still believe
in Tooth Fairy,
Santa Claus and
documentation.      @DevOps_Borat


                       RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                    42
Cloud Accounts




                 RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                              43
Rackspace                 j.mp/jcldsajug
 •BYOB?

 •rackspace.com/cloud/public/
 •mycloud.rackspace.com
 •Note: Username, Password




                                RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                             44
HP                      j.mp/jcldsajug
•hpcloud.com/sign_up
•console.hpcloud.com/compute
•Activate AZ1 and AZ2
•Top right > View API Keys
•Note: Tenant Name, Username, Password




                            RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                         45
Terminology




              RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                           46
Terminology              j.mp/jcldsajug
 jclouds         Rackspace/OpenStack
 Compute         Cloud Servers/Nova
 Node            Server
 Location        Region
 Hardware        Flavor
 NodeMetadata    Server details
 User Metadata   Metadata
 BlobStore       Cloud Files/Swift
 Blob            File/Object
                             RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                          47
Installation




               RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                            48
Ant                          j.mp/jcldsajug
 •mkdir jclouds-workshop
 •cd jclouds-workshop
 •Create build.xml
  • gist.github.com/everett-toews/3861545
 •ant




                                  RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                               49
Ivy                       j.mp/jcldsajug
 •mkdir jclouds-workshop
 •cd jclouds-workshop
 •mkdir lib
 •gist.github.com/everett-toews/5242573




                              RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                           50
Compute Example




                  RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                               51
JCloudsWorkshop.java              j.mp/jcldsajug
 •Logging
  • Create logback.xml
  • gist.github.com/everett-toews/3862553
  • Full logback.xml example

 •Imports and Class definition
  • Create JCloudsWorkshop.java
  • gist.github.com/everett-toews/3861596
  • javac -cp ".:lib/*" JCloudsWorkshop.java
  • Note: Guice, Guava
                                      RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                                   52
JCloudsWorkshop.java              j.mp/jcldsajug
 •main() and skeleton
  • gist.github.com/everett-toews/3862453
  • javac -cp ".:lib/*" JCloudsWorkshop.java

 •init()
  • gist.github.com/everett-toews/3862575
  • javac -cp ".:lib/*" JCloudsWorkshop.java
  • Note: Authentication



                                      RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                                   53
JCloudsWorkshop.java              j.mp/jcldsajug
 •createNodes()
  • gist.github.com/everett-toews/3862480
  • javac -cp ".:lib/*" JCloudsWorkshop.java

 •configureAndStartWebservers()
  • gist.github.com/everett-toews/3862485
  • javac -cp ".:lib/*" JCloudsWorkshop.java
  • Note: Patterns



                                      RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                                   54
JCloudsWorkshop.java   j.mp/jcldsajug

Number of cloud
instance launch by
ops team is direct
proportional with
LOC write by dev
team.
                        @DevOps_Borat



                           RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                        55
JCloudsWorkshop.java              j.mp/jcldsajug
 •waitForSsh()
  • gist.github.com/everett-toews/3862516
  • javac -cp ".:lib/*" JCloudsWorkshop.java

 •detectExtensions()
  • gist.github.com/everett-toews/3867123
  • javac -cp ".:lib/*" JCloudsWorkshop.java




                                      RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                                   56
JCloudsWorkshop.java              j.mp/jcldsajug
 •printResults()
  • gist.github.com/everett-toews/3862499
  • javac -cp ".:lib/*" JCloudsWorkshop.java

 •close()
  • gist.github.com/everett-toews/3862504
  • javac -cp ".:lib/*" JCloudsWorkshop.java




                                      RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                                   57
JCloudsWorkshop.java              j.mp/jcldsajug
 •Run!
  • java -cp ".:lib/*" JCloudsWorkshop




                                         RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                                      58
JCloudsWorkshop.java   j.mp/jcldsajug

Hello World in
cloud is involve
1 load balancer,
3 web server and
2 database server.
                        @DevOps_Borat



                          RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                       59
Other Topics             j.mp/jcldsajug
 •ServerApi/ServerAsyncApi
 •Concurrency
 •CLI
 •Jenkins
 •jclouds-chef
 •Pallet
 •Whirr


                             RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                          60
Next Steps




             RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                          61
Next Steps                j.mp/jcldsajug
 •Load Balancing
 •More examples (BlobStore too)
 •Modify the examples
 •jclouds doc and Javadoc
 •Other installation methods
 •Join jclouds or jclouds-dev
 •jclouds and OpenStack
 •Contributing OpenStack Support to
  jclouds
                             RACKSPACE® HOSTING   |   WWW.RACKSPACE.COM
                                                                          62
Thank You
  And don’t forget to terminate your VMs

  developer.rackspace.com
sdk-support@rackspace.com

                            Everett Toews
                            Developer Advocate
                            @everett_toews

Solve the Cross-Cloud Conundrum with jclouds

  • 1.
    Solve the Cross- Cloud Conundrum with jclouds Austin Java Users Group March 26, 2013 at 7:00 pm Everett Toews You need: Developer Advocate JDK 1.6+ @everett_toews Ant 1.8+ || Ivy 2+ Rackspace and/or HP cloud accounts
  • 2.
    Intro Developer RACKSPACE® HOSTING | WWW.RACKSPACE.COM 2
  • 3.
    Committer on jclouds RACKSPACE® HOSTING | WWW.RACKSPACE.COM 3
  • 4.
    Intro Advocate RACKSPACE® HOSTING | WWW.RACKSPACE.COM 4
  • 5.
    Intro RACKSPACE® HOSTING | WWW.RACKSPACE.COM 5
  • 6.
    Intro Operations RACKSPACE® HOSTING | WWW.RACKSPACE.COM 6
  • 7.
    Co-author of TheOpenStack Operation Guide RACKSPACE® HOSTING | WWW.RACKSPACE.COM 7
  • 8.
    Intro In startup we arenot allow dev team for talk to ops team except by API. @DevOps_Borat RACKSPACE® HOSTING | WWW.RACKSPACE.COM 8
  • 9.
    Agenda RACKSPACE® HOSTING | WWW.RACKSPACE.COM 9
  • 10.
    The Workshop •Introduction •jclouds Overview •Cloud Accounts •Installation •Compute Example •Next Steps •Wrap Up RACKSPACE® HOSTING | WWW.RACKSPACE.COM 10
  • 11.
    Introduction to Rackspace and the cloud RACKSPACE® HOSTING | WWW.RACKSPACE.COM 11
  • 12.
    Rackspace RACKSPACE® HOSTING | WWW.RACKSPACE.COM 12
  • 13.
    The Cloud Infrastructure with an API RACKSPACE® HOSTING | WWW.RACKSPACE.COM 13
  • 14.
    The Cloud VM VM VM Your S A System D P Cloud K I User System RACKSPACE® HOSTING | WWW.RACKSPACE.COM 14
  • 15.
    The Cloud Cloud VM VM VM A VM P I S Your D System K User System RACKSPACE® HOSTING | WWW.RACKSPACE.COM 15
  • 16.
    Introduction to jclouds RACKSPACE® HOSTING | WWW.RACKSPACE.COM 16
  • 17.
    jclouds • Cross-cloud toolkit • Open Source (Apache v2) • Community • Portable APIs • Ecosystem Specific APIs • Provider Specific APIs • Java RACKSPACE® HOSTING | WWW.RACKSPACE.COM 17
  • 18.
    jclouds Providers •ComputeService •BlobStore • Rackspace Cloud • Rackspace Cloud Servers Files • HP Cloud Compute • HP Cloud Storage • AWS EC2 • AWS S3 • GCE (soon) • GCS (soon) • ElasticHosts • Azure • GoGrid • CloudOne • All Providers • All Providers RACKSPACE® HOSTING | WWW.RACKSPACE.COM 18
  • 19.
    jclouds Community RACKSPACE® HOSTING | WWW.RACKSPACE.COM 19
  • 20.
    jclouds Layers (APIs) •ComputeService •BlobStore • Rackspace • Rackspace • OpenStack • OpenStack • HP, AWS, GCE, etc. • HP, AWS, GCS, etc. •NovaApi (*Api) •SwiftApi • Rackspace • Rackspace • OpenStack • OpenStack • HP • HP •CloudFilesClient • Rackspace RACKSPACE® HOSTING | WWW.RACKSPACE.COM 20
  • 21.
    jclouds Community After 3beer I can able use any of cloud API. @DevOps_Borat RACKSPACE® HOSTING | WWW.RACKSPACE.COM 21
  • 22.
    What Can jclouds DoFor You Today? RACKSPACE® HOSTING | WWW.RACKSPACE.COM 22
  • 23.
    SDKs Plumbing RACKSPACE® HOSTING | WWW.RACKSPACE.COM 23
  • 24.
    SDKs (RE)Authentication RACKSPACE® HOSTING | WWW.RACKSPACE.COM 24
  • 25.
    SDKs Pagination RACKSPACE® HOSTING | WWW.RACKSPACE.COM 25
  • 26.
    SDKs State Polling RACKSPACE® HOSTING | WWW.RACKSPACE.COM 26
  • 27.
    SDKs Rate Limiting RACKSPACE® HOSTING | WWW.RACKSPACE.COM 27
  • 28.
    SDKs Retry RACKSPACE® HOSTING | WWW.RACKSPACE.COM 28
  • 29.
    SDKs Smoothing Rough Edges RACKSPACE® HOSTING | WWW.RACKSPACE.COM 29
  • 30.
    SDKs Open Source RACKSPACE® HOSTING | WWW.RACKSPACE.COM 30
  • 31.
    SDKs In devops nobody isget fire for buy open source. @DevOps_Borat RACKSPACE® HOSTING | WWW.RACKSPACE.COM 31
  • 32.
    SDKs Community RACKSPACE® HOSTING | WWW.RACKSPACE.COM 32
  • 33.
    SDKs Support RACKSPACE® HOSTING | WWW.RACKSPACE.COM 33
  • 34.
    SDKs Packaged RACKSPACE® HOSTING | WWW.RACKSPACE.COM 34
  • 35.
    SDKs All-in-one RACKSPACE® HOSTING | WWW.RACKSPACE.COM 35
  • 36.
    SDKs No lock-in RACKSPACE® HOSTING | WWW.RACKSPACE.COM 36
  • 37.
    SDKs RACKSPACE® HOSTING | WWW.RACKSPACE.COM 37
  • 38.
    SDKs RACKSPACE® HOSTING | WWW.RACKSPACE.COM 38
  • 39.
    SDKs Battle TestedCode RACKSPACE® HOSTING | WWW.RACKSPACE.COM 39
  • 40.
    SDKs Sample Code RACKSPACE® HOSTING | WWW.RACKSPACE.COM 40
  • 41.
    SDKs Documentation RACKSPACE® HOSTING | WWW.RACKSPACE.COM 41
  • 42.
    SDKs Survey is show juniordevops are still believe in Tooth Fairy, Santa Claus and documentation. @DevOps_Borat RACKSPACE® HOSTING | WWW.RACKSPACE.COM 42
  • 43.
    Cloud Accounts RACKSPACE® HOSTING | WWW.RACKSPACE.COM 43
  • 44.
    Rackspace j.mp/jcldsajug •BYOB? •rackspace.com/cloud/public/ •mycloud.rackspace.com •Note: Username, Password RACKSPACE® HOSTING | WWW.RACKSPACE.COM 44
  • 45.
    HP j.mp/jcldsajug •hpcloud.com/sign_up •console.hpcloud.com/compute •Activate AZ1 and AZ2 •Top right > View API Keys •Note: Tenant Name, Username, Password RACKSPACE® HOSTING | WWW.RACKSPACE.COM 45
  • 46.
    Terminology RACKSPACE® HOSTING | WWW.RACKSPACE.COM 46
  • 47.
    Terminology j.mp/jcldsajug jclouds Rackspace/OpenStack Compute Cloud Servers/Nova Node Server Location Region Hardware Flavor NodeMetadata Server details User Metadata Metadata BlobStore Cloud Files/Swift Blob File/Object RACKSPACE® HOSTING | WWW.RACKSPACE.COM 47
  • 48.
    Installation RACKSPACE® HOSTING | WWW.RACKSPACE.COM 48
  • 49.
    Ant j.mp/jcldsajug •mkdir jclouds-workshop •cd jclouds-workshop •Create build.xml • gist.github.com/everett-toews/3861545 •ant RACKSPACE® HOSTING | WWW.RACKSPACE.COM 49
  • 50.
    Ivy j.mp/jcldsajug •mkdir jclouds-workshop •cd jclouds-workshop •mkdir lib •gist.github.com/everett-toews/5242573 RACKSPACE® HOSTING | WWW.RACKSPACE.COM 50
  • 51.
    Compute Example RACKSPACE® HOSTING | WWW.RACKSPACE.COM 51
  • 52.
    JCloudsWorkshop.java j.mp/jcldsajug •Logging • Create logback.xml • gist.github.com/everett-toews/3862553 • Full logback.xml example •Imports and Class definition • Create JCloudsWorkshop.java • gist.github.com/everett-toews/3861596 • javac -cp ".:lib/*" JCloudsWorkshop.java • Note: Guice, Guava RACKSPACE® HOSTING | WWW.RACKSPACE.COM 52
  • 53.
    JCloudsWorkshop.java j.mp/jcldsajug •main() and skeleton • gist.github.com/everett-toews/3862453 • javac -cp ".:lib/*" JCloudsWorkshop.java •init() • gist.github.com/everett-toews/3862575 • javac -cp ".:lib/*" JCloudsWorkshop.java • Note: Authentication RACKSPACE® HOSTING | WWW.RACKSPACE.COM 53
  • 54.
    JCloudsWorkshop.java j.mp/jcldsajug •createNodes() • gist.github.com/everett-toews/3862480 • javac -cp ".:lib/*" JCloudsWorkshop.java •configureAndStartWebservers() • gist.github.com/everett-toews/3862485 • javac -cp ".:lib/*" JCloudsWorkshop.java • Note: Patterns RACKSPACE® HOSTING | WWW.RACKSPACE.COM 54
  • 55.
    JCloudsWorkshop.java j.mp/jcldsajug Number of cloud instance launch by ops team is direct proportional with LOC write by dev team. @DevOps_Borat RACKSPACE® HOSTING | WWW.RACKSPACE.COM 55
  • 56.
    JCloudsWorkshop.java j.mp/jcldsajug •waitForSsh() • gist.github.com/everett-toews/3862516 • javac -cp ".:lib/*" JCloudsWorkshop.java •detectExtensions() • gist.github.com/everett-toews/3867123 • javac -cp ".:lib/*" JCloudsWorkshop.java RACKSPACE® HOSTING | WWW.RACKSPACE.COM 56
  • 57.
    JCloudsWorkshop.java j.mp/jcldsajug •printResults() • gist.github.com/everett-toews/3862499 • javac -cp ".:lib/*" JCloudsWorkshop.java •close() • gist.github.com/everett-toews/3862504 • javac -cp ".:lib/*" JCloudsWorkshop.java RACKSPACE® HOSTING | WWW.RACKSPACE.COM 57
  • 58.
    JCloudsWorkshop.java j.mp/jcldsajug •Run! • java -cp ".:lib/*" JCloudsWorkshop RACKSPACE® HOSTING | WWW.RACKSPACE.COM 58
  • 59.
    JCloudsWorkshop.java j.mp/jcldsajug Hello World in cloud is involve 1 load balancer, 3 web server and 2 database server. @DevOps_Borat RACKSPACE® HOSTING | WWW.RACKSPACE.COM 59
  • 60.
    Other Topics j.mp/jcldsajug •ServerApi/ServerAsyncApi •Concurrency •CLI •Jenkins •jclouds-chef •Pallet •Whirr RACKSPACE® HOSTING | WWW.RACKSPACE.COM 60
  • 61.
    Next Steps RACKSPACE® HOSTING | WWW.RACKSPACE.COM 61
  • 62.
    Next Steps j.mp/jcldsajug •Load Balancing •More examples (BlobStore too) •Modify the examples •jclouds doc and Javadoc •Other installation methods •Join jclouds or jclouds-dev •jclouds and OpenStack •Contributing OpenStack Support to jclouds RACKSPACE® HOSTING | WWW.RACKSPACE.COM 62
  • 63.
    Thank You And don’t forget to terminate your VMs developer.rackspace.com sdk-support@rackspace.com Everett Toews Developer Advocate @everett_toews

Editor's Notes

  • #13 Why did Rackspace utilize cross-cloud toolkits?Lock-on, not lock-in
  • #50 Recommend split screen
  • #51 Recommend split screen
  • #55 What haven't I specified explicitly?
  • #56 What haven't I specified explicitly?