Geemus

934 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
934
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 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

    ×