Cloud Portability

with Multi-Cloud Toolkits

Dana Bauer @geography76
Ken Perkins @kenperkins
Kyle Rames @krames
Everett Toews @everett_toews

Goal

Deploy an Application

with a Multi-Cloud Toolkit

Logistics

  • Helpers: Anne, Egle & Jim
  • Language preferences
  • Experience

Links & Notes

  1. Cloud 101
  2. Multi-Cloud 101
  3. Multi-Cloud Toolkits
  4. Getting Started
  5. Break
  6. Configuration
  7. Architecture
  8. Application Code
  9. Application Demo
  10. What's Next?
  11. Conclusion

Cloud 101

National Institute of

Standards and Technology

(NIST)

Essential

Characteristics

On-Demand

Self-Service

Broad

Network Access

Resource Pooling

Rapid Elasticity

Measured Service

Service

Models

Software

as a Service

(SaaS)

Platform

as a Service

(PaaS)

Infrastructure

as a Service

(IaaS)

Private

Comparison

IaaS

Infrastructure

with an Interface

Multi-Cloud 101

High Availability

Privacy

Cost

Performance

Support

Hybrid

One Size Does

Not Fit All

Avoid Lock-in

Multi-Cloud Toolkits

Java

Apache jclouds

Node.js

pkgcloud

Ruby

Fog

Python

Apache libcloud

Getting Started

  1. Get your cloud credentials
  2. Install the toolkits
  3. Update your configuration

Cloud

Credentials

Rackspace

Log in to the control panel

https://mycloud.rackspace.com/

From the menu, choose Account Settings

https://mycloud.rackspace.com/

Username and API Key

https://mycloud.rackspace.com/

HP

Note: Choose Classic Console if you're using jclouds, go to https://horizon.hpcloud.com otherwise.

Log in to the control panel

https://horizon.hpcloud.com for account management

Choose Manage Access Keys to get the API Key and Secret Key

(Optional depending on toolkit)

Copy keys from here

Then, go to Identity > Projects

Also, activate what services you want with Manage Services

AWS

Management Console

https://console.aws.amazon.com/"

From the menu, select Security Credentials

Security Credentials

Create New Access Key

Access Key ID and Secret Access Key

Install Walkthrough

Language Toolkit
Java jclouds
Node.js pkgcloud
Python libcloud
Ruby fog

Break

15 Minutes

Configuration

Configure

  • Provider
  • Identity
  • Credential

jclouds

  1. Copy src/main/resources/provider.properties.template to src/main/resources/provider.properties
  2. Open src/main/resources/provider.properties
  3. Edit provider (rackspace or hp or aws)
  4. Edit provider.identity
  5. Edit provider.credential

jclouds

pkgcloud

  1. Copy config.json.example to config.json
  2. Edit config.json
  3. Add Credentials for your provider:
    rackspace, aws or hpcloud.

pkgcloud

libcloud

  1. Open libcloud.conf.template
  2. Edit Provider
  3. Edit Identity
  4. Edit Credential
  5. Indicate Active Provider
  6. Save as libcloud.conf

libcloud

fog

  1. Set PROVIDER environment variable to aws, hp, or rackspace
  2. Set the following environment variables based on Provider

fog

Provider Environment Variables
aws AWS_ACCESS_KEY, AWS_SECRET_ACCESS_KEY
hp HP_SECRET_KEY, HP_ACCESS_KEY, HP_TENANT_ID
rackspace RACKSPACE_USERNAME, RACKSPACE_API_KEY

Architecture

Load Balancer (LB)

haproxy

Web Server (WS)

Application Code

Database (DB)

mysql

Walkthrough

Language Toolkit
Java jclouds
Node.js pkgcloud
Python libcloud
Ruby fog

Application

Code

Java

Jenkins

Node.js

bootstrap-blog

Python

Simple Flask app: bikeshed.io

Ruby

RailsCasts 253 Demo App

"CarrierWave File Uploads"

Application

Demo

Demo

  • Ruby

What's Next

Software Configuration

Management

Multi-Threaded

Scripts

Secure

Servers

User

Input

Your

Application

Conclusion

Rackspace

Booth

Survey

Delete

Resources!

Questions

developer.rackspace.com

Dana Bauer @geography76
Ken Perkins @kenperkins
Kyle Rames @krames
Everett Toews @everett_toews