An
Introduction
toOpenStack
goals
1. whatisit?
2. wherediditcomefrom?
3. Whoisusingit?
4. Howcaniuseit?
i’mnothereto
• PREACH
• TALKABOUTSILVERBULLETS
• sell
introducing…me
SoftwareEngineer,Rackspace
DRG(DeveloperRelationsGroup)
OpenStackContributor
RetiredTekkenChampion
what?
inanutshell
• Open-sourcesoftwareproject
• Modulesthatprovidecloudinfrastructure
• Independent,drivenbycommunity
• Governedbyanelectedtechnicalboard
Butreally…
just
python
code
omgpython
don’tpanic!
languageagnostic
• RESTAPIs
• SDKs(LanguageBindings)
• CLIs
• GUIConsole(OpenStackHorizon)
suchcloud…manyservices…wow
• Servers(Nova)
• Filestorage(Swift)
• Databases(Trove)
• Blockstorage(Cinder)
• OSImages(Glance)
• Networks(Neutron)
• Identity(Keystone)
• Orchestration(Heat)
• Workqueues(Marconi)
• Hadoop(Sahara)
where?
projectnebula
• Federalcloudplatform
• “taketheleadinopen,transparentand
participatoryspaceexplorationand
government”
• Efficiency,flexibility,reducedenergycosts,
reducedsetuptime,performance.
“Thiscouldhave
fallenapartina
milliondifferent
ways.”
RickClark
thegloriousloophole
Problem
• Existingcodebase(eucalyptus)hadissues
• CreatinganewcodebaseatNASAwasnotallowed
Solution
• CreateanewOSSprojectattheweekends
• Contributebacktoitduringworkingweek
“LaunchedNova.
!
Apache-Licensedcloudcomputing,inPython.
!
It’slive,it’sbuggy,it’sbeta.Checkitout.”
JoshMcKenty,Summer2010
“Itwaslikefinding
along-losttwin…”
ItwastheweirdestexperienceI’veeverhad.
!
Wewereusingthesametools.
!
Wehadmadethesamelanguagedecisions.
!
webothsaid:‘Wow,youjustwrotethecode
thatweweregoingtowrite.’
Who?
LHC
• 17milelongparticleaccelerator
• 9,000magnets;cooledwith10thousandtonnesofliquid
nitrogen
• Magnetsaccelerateparticlesto671,000,000mph.That’s
over11,000lapspersecond.
• 600millioncollisionspersecond
• Eachcollisiongeneratestemperates100,000timeshotter
thanthecoreofthesun
Just2Requirements
1. Infrastructurethatcananalyzethemost
data-intenseexperimentsinhumanhistory.
2. ITnetworkfor11,000Physicists(email,web
services,databases,desktopsupport).
Bigdata?
• Filter1PBofdatapersecondwith~1,000+VMs.
• 35PBofresidualdataperannumfromLHC,which
needsmathematicalanalysis.
• Scaleforfuturegrowth.By2015,theLHCwill
doubleitsenergyusage.
TheGrid
• 1,000Novaservers,eachwith~12cores.
• 60kcoresintotal,tieredarchitecture.
• DuringCMSexperiments,~250VMsare
launchedina5minburst.
How?
installation
$	
  composer	
  require	
  	
  
	
  	
  rackspace/php-­‐opencloud:dev-­‐master
1.Setupclient
<?php	
  
!
require	
  'vendor/autoload.php';	
  
!
use	
  OpenCloudOpenStack;	
  
!
$client	
  =	
  new	
  OpenStack('my-­‐os-­‐api.com:35357/v2.0',	
  [	
  
	
  	
  	
  	
  'username'	
  	
  	
  =>	
  'foo',	
  
	
  	
  	
  	
  'password'	
  	
  	
  =>	
  'bar',	
  
	
  	
  	
  	
  'tenantName'	
  =>	
  'baz'	
  
]);	
  
!
$service	
  =	
  $client-­‐>computeService('nova',	
  'region1');
2.chooseOS
//	
  Traverse	
  Iterator	
  collection	
  
$allImages	
  =	
  $compute-­‐>imageList();	
  
!
foreach	
  ($allImages	
  as	
  $image)	
  {	
  
	
   if	
  (preg_match('#^ubuntu#i',	
  $image-­‐>name))	
  {	
  
	
   	
   $ubuntu	
  =	
  $image;	
  
	
   	
   break;	
  
	
   }	
  
}	
  
!
//	
  Or	
  instantiate	
  with	
  ID:	
  
$ubuntu	
  =	
  $compute-­‐>image('{uuid}');
3.choosehardware
//	
  Traverse	
  Iterator	
  collection	
  
$allFlavors	
  =	
  $compute-­‐>flavorList();	
  
!
foreach	
  ($allFlavors	
  as	
  $flavor)	
  {	
  
	
   if	
  (preg_match('#large#i',	
  $flavor-­‐>name))	
  {	
  
	
   	
   $largeFlavor	
  =	
  $flavor;	
  
	
   	
   break;	
  
	
   }	
  
}	
  
!
//	
  Or	
  instantiate	
  directly:	
  
$largeFlavor	
  =	
  $compute-­‐>image('m1.large');
4.launch
use	
  GuzzleHttpExceptionBadResponseException;	
  
!
/**	
  @var	
  $server	
  OpenCloudComputeResourceServer	
  */	
  
$server	
  =	
  $compute-­‐>server();	
  
!
try	
  {	
  
	
   $response	
  =	
  $server-­‐>create([	
  
	
   	
   'name'	
  	
  	
  =>	
  'Viva	
  Italia!',	
  
	
   	
   'image'	
  	
  =>	
  $ubuntu,	
  
	
   	
   'flavor'	
  =>	
  $largeFlavor	
  
	
   ]);	
  
}	
  catch	
  (BadResponseException	
  $e)	
  {	
  
	
   printf("An	
  error	
  occurred!n");	
  
	
   printf("Request:	
  %sn",	
  (string)	
  $e-­‐>getRequest());	
  
	
   printf("Response:	
  %s",	
  (string)	
  $e-­‐>getResponse());	
  
}
• ‘gettingstarted’guides
• fullusermanual
• samplesformostuse-cases
• issuetrackingforhelp,orfeelfreeto
emailsdk-support@rackspace.com
github.com/rackspace/php-opencloud
Future?
Thanks!
@jamiehannaford
PhotoCredits
‘WisoffontheArm’,NASA
!
20thCenturyFox
!
PeterThoeny,Copyright2013,CreativeCommonslicense
!
AlexandervanDijk,Copyright2009,CreativeCommonslicense
!
CERN,Allrightsreserved
!
PhilipHay,Copyright2007,CreativeCommons
!
CClicense:https://creativecommons.org/licenses/by-nc-sa/2.0

Introduction to OpenStack