Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Geemus

1 023 vues

Publié le

  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

Geemus

  1. 1. geemus (Wesley Beary)cloud architect field, sun reflected - dsevilla - flickr.com/photos/dsevilla/3531297705
  2. 2. Why? York Minster in the Fog - karlequin - flickr.com/photos/karlequin/440648686
  3. 3. Why?seize the infrastructure York Minster in the Fog - karlequin - flickr.com/photos/karlequin/440648686
  4. 4. Leave with Theft - ibcbulk - flickr.com/photos/ibcbulk/256435870
  5. 5. Leave with provisioning config Theft - ibcbulk - flickr.com/photos/ibcbulk/256435870
  6. 6. Leave with provisioning config DIY Theft - ibcbulk - flickr.com/photos/ibcbulk/256435870
  7. 7. The Plan Blueprints for Willborough Home - btobin - flickr.com/photos/btobin/4456582998
  8. 8. The PlanYet Another Cloud Library? Blueprints for Willborough Home - btobin - flickr.com/photos/btobin/4456582998
  9. 9. The PlanYet Another Cloud Library? Blind Date Blueprints for Willborough Home - btobin - flickr.com/photos/btobin/4456582998
  10. 10. The PlanYet Another Cloud Library? Blind Date Reader Exercises Blueprints for Willborough Home - btobin - flickr.com/photos/btobin/4456582998
  11. 11. The PlanYet Another Cloud Library? Blind Date Reader Exercises Next Steps Blueprints for Willborough Home - btobin - flickr.com/photos/btobin/4456582998
  12. 12. Yet Another Cloud Library?
  13. 13. the commodity market - baconandeggs - flickr.com/photos/baconandeggs/1490449135
  14. 14. Want the commodity market - baconandeggs - flickr.com/photos/baconandeggs/1490449135
  15. 15. Vendor Lockin Jail Kitty - 50362297@N07 - flickr.com/photos/50362297@N07/4673066549
  16. 16. Vendor Lockin Have Jail Kitty - 50362297@N07 - flickr.com/photos/50362297@N07/4673066549
  17. 17. Non-Standard - olivander - flickr.com/photos/olivander/198180580
  18. 18. Hope? Non-Standard - olivander - flickr.com/photos/olivander/198180580
  19. 19. Knowledge Silos Silos - zoomzoom - flickr.com/photos/zoomzoom/304135268
  20. 20. Knowledge Silos Demolish! Silos - zoomzoom - flickr.com/photos/zoomzoom/304135268
  21. 21. Progress Nice. - ianhampton - flickr.com/photos/ianhampton/1197107567
  22. 22. Progress615+ followers Nice. - ianhampton - flickr.com/photos/ianhampton/1197107567
  23. 23. Progress615+ followers 54+ forks Nice. - ianhampton - flickr.com/photos/ianhampton/1197107567
  24. 24. Progress615+ followers 54+ forks28+ contributors Nice. - ianhampton - flickr.com/photos/ianhampton/1197107567
  25. 25. Progress 615+ followers 54+ forks 28+ contributors25,000+ downloads Nice. - ianhampton - flickr.com/photos/ianhampton/1197107567
  26. 26. Blind Date
  27. 27. Golfland start - twid - flickr.com/photos/twid/410697715
  28. 28. overabundance of choice lack of experience Golfland start - twid - flickr.com/photos/twid/410697715
  29. 29. overabundance of choice lack of experienceexploratory programming Golfland start - twid - flickr.com/photos/twid/410697715
  30. 30. Installation
  31. 31. Installationgeymus ~ ⌘ sudo gem install fog
  32. 32. Installationgeymus ~ ⌘ sudo gem install fogSuccessfully installed fog-X.Y.Z
  33. 33. Installationgeymus ~ ⌘ sudo gem install fogSuccessfully installed fog-X.Y.Zgeymus ~ ⌘ fog
  34. 34. Installationgeymus ~ ⌘ sudo gem install fogSuccessfully installed fog-X.Y.Zgeymus ~ ⌘ fog To run as default, add the following to ~/.fog:default: :aws_access_key_id: INTENTIONALLY_LEFT_BLANK :aws_secret_access_key: INTENTIONALLY_LEFT_BLANK [...]
  35. 35. bin/fog
  36. 36. bin/foggeymus ~ ⌘ fog
  37. 37. bin/foggeymus ~ ⌘ fog Welcome to fog interactive! :default credentials provide AWS
  38. 38. bin/foggeymus ~ ⌘ fog Welcome to fog interactive! :default credentials provide AWS>> command_goes_here
  39. 39. bin/foggeymus ~ ⌘ fog Welcome to fog interactive! :default credentials provide AWS>> command_goes_herereturn_value_goes_here
  40. 40. Providers
  41. 41. Providers>> providers
  42. 42. Providers>> providers[AWS]
  43. 43. Providers>> providers[AWS] Support for: AWS, Bluebox, Rackspace, Slicehost, Terremark vCloud Initial support for: GoGrid, Linode, Local, NewServers
  44. 44. Services
  45. 45. Services>> AWS.services
  46. 46. Services>> AWS.services[:compute, :elb, :simpledb, :storage]
  47. 47. Services>> AWS.services[:compute, :elb, :simpledb, :storage] compute and storage are shared other services are unique
  48. 48. Collections
  49. 49. Collections>> AWS[:compute].collections
  50. 50. Collections>> AWS[:compute].collections[:addresses, ..., :volumes]
  51. 51. Collections>> AWS[:compute].collections[:addresses, ..., :volumes] flavors, images and servers are shared in compute directories and files are shared in storage other collections are unique
  52. 52. Collections Star Wars Collection - ception - flickr.com/photos/ception/356449209
  53. 53. Collectionsinterface to cloud resources Star Wars Collection - ception - flickr.com/photos/ception/356449209
  54. 54. Collections interface to cloud resources#all - returns all matching resources#new - initializes a local model#create - provisions a new resource#get - returns a particular resource#reload - update to latest remote state Star Wars Collection - ception - flickr.com/photos/ception/356449209
  55. 55. Collection #all
  56. 56. Collection #allreturns all matching resources
  57. 57. Collection #all returns all matching resources>> AWS[:compute].addresses.all
  58. 58. Collection #all returns all matching resources>> AWS[:compute].addresses.all<Fog::AWS::Compute::Addresses ... []>
  59. 59. Collection #all returns all matching resources>> AWS[:compute].addresses.all<Fog::AWS::Compute::Addresses ... []>>> AWS[:compute].addresses
  60. 60. Collection #all returns all matching resources>> AWS[:compute].addresses.all<Fog::AWS::Compute::Addresses ... []>>> AWS[:compute].addresses<Fog::AWS::Compute::Addresses ... []>
  61. 61. Collection #new
  62. 62. Collection #new initializes a local model
  63. 63. Collection #new initializes a local model>> AWS[:compute].addresses.new
  64. 64. Collection #new initializes a local model>> AWS[:compute].addresses.new<Fog::AWS::Compute::Address public_ip=nil ... >
  65. 65. Collection #create
  66. 66. Collection #create provisions a new resource
  67. 67. Collection #create provisions a new resource>> AWS[:compute].addresses.create
  68. 68. Collection #create provisions a new resource>> AWS[:compute].addresses.create<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >
  69. 69. Collection #create provisions a new resource>> AWS[:compute].addresses.create<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >>> AWS[:compute].servers.create
  70. 70. Collection #create provisions a new resource>> AWS[:compute].addresses.create<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >>> AWS[:compute].servers.createArgumentError: image_id is required ...
  71. 71. Collection #get
  72. 72. Collection #getreturns a particular resource
  73. 73. Collection #get returns a particular resource>> AWS[:compute].addresses.get(‘x.y.z’)
  74. 74. Collection #get returns a particular resource>> AWS[:compute].addresses.get(‘x.y.z’)<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >
  75. 75. Collection #reload
  76. 76. Collection #reload update to latest remote state
  77. 77. Collection #reload update to latest remote state>> AWS[:compute].addresses.all.reload
  78. 78. Collection #reload update to latest remote state>> AWS[:compute].addresses.all.reload<Fog::AWS::Compute::Addresses ... []>
  79. 79. Models Flying Into Boston 005 - Tilt Shift - tostie14 - flickr.com/photos/tostie14/117610830
  80. 80. Modelsrepresentation of a cloud resource Flying Into Boston 005 - Tilt Shift - tostie14 - flickr.com/photos/tostie14/117610830
  81. 81. Models representation of a cloud resource #save - provision or update resource #reload - update to latest remote state#wait_for - poll block until timeout or true #destroy - destroy resource Flying Into Boston 005 - Tilt Shift - tostie14 - flickr.com/photos/tostie14/117610830
  82. 82. Model #save
  83. 83. Model #saveprovision or update resource
  84. 84. Model #save provision or update resource>> AWS[:compute].addresses.new.save
  85. 85. Model #save provision or update resource>> AWS[:compute].addresses.new.save<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >
  86. 86. Model #save provision or update resource>> AWS[:compute].addresses.new.save<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >>> AWS[:compute].servers.new.save
  87. 87. Model #save provision or update resource>> AWS[:compute].addresses.new.save<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >>> AWS[:compute].servers.new.saveArgumentError: image_id is required ...
  88. 88. Model #reload
  89. 89. Model #reloadupdate to latest remote state
  90. 90. Model #reload update to latest remote state>> address = AWS[:compute].addresses.new.save
  91. 91. Model #reload update to latest remote state>> address = AWS[:compute].addresses.new.save<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >
  92. 92. Model #reload update to latest remote state>> address = AWS[:compute].addresses.new.save<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >>> address.reload
  93. 93. Model #reload update to latest remote state>> address = AWS[:compute].addresses.new.save<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >>> address.reload<Fog::AWS::Compute::Address public_ip=‘x.y.z’ ... >
  94. 94. Model #wait_for
  95. 95. Model #wait_forpoll a block until timeout or true
  96. 96. Model #wait_for poll a block until timeout or true>> AWS[:compute].servers.create(:image_id => ‘ami’)
  97. 97. Model #wait_for poll a block until timeout or true>> AWS[:compute].servers.create(:image_id => ‘ami’)<Fog::AWS::Compute::Server ... []>
  98. 98. Model #wait_for poll a block until timeout or true>> AWS[:compute].servers.create(:image_id => ‘ami’)<Fog::AWS::Compute::Server ... []>>> _.wait_for { ready? }
  99. 99. Model #wait_for poll a block until timeout or true>> AWS[:compute].servers.create(:image_id => ‘ami’)<Fog::AWS::Compute::Server ... []>>> _.wait_for { ready? }{:duration=>20}
  100. 100. Model #destroy
  101. 101. Model #destroy destroy resource
  102. 102. Model #destroy destroy resource>> AWS[:compute].servers.create(:image_id => ‘i-x’)
  103. 103. Model #destroy destroy resource>> AWS[:compute].servers.create(:image_id => ‘i-x’)<Fog::AWS::Compute::Server ... []>
  104. 104. Model #destroy destroy resource>> AWS[:compute].servers.create(:image_id => ‘i-x’)<Fog::AWS::Compute::Server ... []>>> _.destroy
  105. 105. Model #destroy destroy resource>> AWS[:compute].servers.create(:image_id => ‘i-x’)<Fog::AWS::Compute::Server ... []>>> _.destroytrue
  106. 106. Requests API Docs - thesmith - flickr.com/photos/thesmith/4574969567
  107. 107. Requestsdown and dirty with specifics API Docs - thesmith - flickr.com/photos/thesmith/4574969567
  108. 108. Requestsdown and dirty with specifics provides flexibility and power but requires vendor specifics API Docs - thesmith - flickr.com/photos/thesmith/4574969567
  109. 109. Requests
  110. 110. Requests>> AWS[:compute].requests
  111. 111. Requests>> AWS[:compute].requests[:allocate_address, ..., :stop_instances]
  112. 112. Requests>> AWS[:compute].requests[:allocate_address, ..., :stop_instances] requests are unique across providers
  113. 113. e.g. #allocate_address
  114. 114. e.g. #allocate_address>> AWS[:compute].allocate_address
  115. 115. e.g. #allocate_address>> AWS[:compute].allocate_address#<Excon::Response@headers={...},@body={"requestId"=>"a-b-c", "publicIp"=>"x.y.z"},@status=200>
  116. 116. ReaderExercises
  117. 117. Got Infrastructure New IBM Z10 Mainframe - pchow98 - flickr.com/photos/pchow98/2545281504
  118. 118. Got Infrastructure now what? New IBM Z10 Mainframe - pchow98 - flickr.com/photos/pchow98/2545281504
  119. 119. servers#bootstrap
  120. 120. servers#bootstrap>> AWS[:compute].servers.bootstrap( :image_id => ‘ami’, :private_key_path => ‘~/.ssh/id_rsa’, :public_key_path => ‘~/.ssh/id_rsa.pub’)
  121. 121. servers#bootstrap>> AWS[:compute].servers.bootstrap( :image_id => ‘ami’, :private_key_path => ‘~/.ssh/id_rsa’, :public_key_path => ‘~/.ssh/id_rsa.pub’)<Fog::AWS::Compute::Server ... []>
  122. 122. servers#bootstrap>> AWS[:compute].servers.bootstrap( :image_id => ‘ami’, :private_key_path => ‘~/.ssh/id_rsa’, :public_key_path => ‘~/.ssh/id_rsa.pub’)<Fog::AWS::Compute::Server ... []>>> _.ssh(‘pwd’)
  123. 123. servers#bootstrap>> AWS[:compute].servers.bootstrap( :image_id => ‘ami’, :private_key_path => ‘~/.ssh/id_rsa’, :public_key_path => ‘~/.ssh/id_rsa.pub’)<Fog::AWS::Compute::Server ... []>>> _.ssh(‘pwd’)[#<Fog::SSH::Result @stdout=”/Users/root” ...>]
  124. 124. servers#bootstrap>> AWS[:compute].servers.bootstrap( :image_id => ‘ami’, :private_key_path => ‘~/.ssh/id_rsa’, :public_key_path => ‘~/.ssh/id_rsa.pub’)<Fog::AWS::Compute::Server ... []>>> _.ssh(‘pwd’)[#<Fog::SSH::Result @stdout=”/Users/root” ...>]>> _.ssh(‘foo’, ‘bar’)
  125. 125. servers#bootstrap>> AWS[:compute].servers.bootstrap( :image_id => ‘ami’, :private_key_path => ‘~/.ssh/id_rsa’, :public_key_path => ‘~/.ssh/id_rsa.pub’)<Fog::AWS::Compute::Server ... []>>> _.ssh(‘pwd’)[#<Fog::SSH::Result @stdout=”/Users/root” ...>]>> _.ssh(‘foo’, ‘bar’)[#<Fog::SSH::Result ...>, #<Fog::SSH::Result ...>]
  126. 126. Configuration
  127. 127. Configurationfor more complex/repeatable setup
  128. 128. Configuration for more complex/repeatable setup chef - http://opscode.com/chefpuppet - http://puppetlabs.com/puppet/introduction
  129. 129. Switching Providers? Light Switch Complicator - lenore-m - flickr.com/photos/lenore-m/510420532
  130. 130. servers#create
  131. 131. servers#create>> Bluebox[:compute].servers.create
  132. 132. servers#create>> Bluebox[:compute].servers.createArgumentError: image_id is required ...
  133. 133. servers#create>> Bluebox[:compute].servers.createArgumentError: image_id is required ...>> Rackspace[:compute].servers.create
  134. 134. servers#create>> Bluebox[:compute].servers.createArgumentError: image_id is required ...>> Rackspace[:compute].servers.createArgumentError: image_id and name are required ...
  135. 135. servers#create>> Bluebox[:compute].servers.createArgumentError: image_id is required ...>> Rackspace[:compute].servers.createArgumentError: image_id and name are required ...>> Slicehost[:compute].servers.create
  136. 136. servers#create>> Bluebox[:compute].servers.createArgumentError: image_id is required ...>> Rackspace[:compute].servers.createArgumentError: image_id and name are required ...>> Slicehost[:compute].servers.createArgumentError: image_id and name are required ...
  137. 137. servers#create>> Bluebox[:compute].servers.createArgumentError: image_id is required ...>> Rackspace[:compute].servers.createArgumentError: image_id and name are required ...>> Slicehost[:compute].servers.createArgumentError: image_id and name are required ... different parameters, same methods
  138. 138. Simulation John Manning John’s Flight Simulator - yugen - flickr.com/photos/yugen/3119723360
  139. 139. Simulation make believing your way tobetter infrastructure John Manning John’s Flight Simulator - yugen - flickr.com/photos/yugen/3119723360
  140. 140. Simulation make believing your way to better infrastructure Fog.mock! or⌘ FOG_MOCK=true fog John Manning John’s Flight Simulator - yugen - flickr.com/photos/yugen/3119723360
  141. 141. Next Steps
  142. 142. Getting Help
  143. 143. Getting Helpadditional resources (see also: README)
  144. 144. Getting Help additional resources (see also: README) bugs - http://github.com/geemus/fog/issues irc - irc://irc.freenode.net/ruby-fogmailing list - http://groups.google.com/group/ruby-fog
  145. 145. The Future Rettrofuturism - grumbler - flickr.com/photos/grumbler/297064185
  146. 146. The Future modularity Rettrofuturism - grumbler - flickr.com/photos/grumbler/297064185
  147. 147. The Future modularity providers Rettrofuturism - grumbler - flickr.com/photos/grumbler/297064185
  148. 148. The Future modularity providers abstractions Rettrofuturism - grumbler - flickr.com/photos/grumbler/297064185
  149. 149. The Future modularity providers abstractions testing Rettrofuturism - grumbler - flickr.com/photos/grumbler/297064185
  150. 150. Get Involved
  151. 151. Get Involvedadditional resources (see also: README)
  152. 152. Get Involved additional resources (see also: README) guide - github.com/geemus/fog/wiki/contributor-guideproviders - github.com/geemus/fog/wiki/providers users - github.com/geemus/fog/wiki/in-the-wild
  153. 153. Questions? Clouds oven IL-RT50 - richardcox - flickr.com/photos/richardcox/3892767597

×