IntrotoUbuntuandCloud

Open Week -- Intro to Ubuntu and Cloud, running your 1st Ubuntu Server on EC2 -- AhmedKamal -- Wed, Oct 13

   1 [17:01] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2010/10/13/%23ubuntu-classroom.html following the conclusion of the session.
   2 [17:01] <kim0> Good Morning, Good Afternoon and Good evening folks
   3 [17:01] <kim0> Let me introduce myself .. This is Ahmed Kamal
   4 [17:01] <kim0> I am the Ubuntu cloud liaison
   5 [17:02] <kim0> So this session is cloud computing basics
   6 [17:02] <kim0> Basically .. it introduces what cloud computing is all about
   7 [17:02] <kim0> I do hear a lot from people who wonder what this cloud thing is all about
   8 [17:03] <kim0> and what's in it "for me"
   9 [17:03] <kim0> this session is exactly for that .. If you're more advanced however, I'd like to invite you to also attend the next session
  10 [17:03] <kim0> by Dustin kirkland, a developer on the Ubuntu server team
  11 [17:04] <kim0> This session is two parts
  12 [17:04] <kim0> part1: I give an intro to cloud, and we have a Q+A session
  13 [17:04] <kim0> part2: I will demo launching your first Ubuntu server VM on the Amazon EC2 cloud
  14 [17:05] <kim0> which will include using cloud-init, a unique Ubuntu server package that makes it easier to work with VMs in the cloud
  15 [17:05] <kim0> So the first thing you need to know about cloud computing .. is that everyone who knows about it has a different view on what it really is
  16 [17:06] <kim0> i.e. every person has some definition, which I'm sure many other quite knowledgeable people would disagree about
  17 [17:06] <kim0> If you're using Gmail/Facebook/Dropbox .. you're already using cloud computing
  18 [17:06] <kim0> and you probably don't even know it!
  19 [17:06] <kim0> I won't try to present a conclusive definition of cloud computing here, but I will say any cloud vendor should provide the following properties
  20 [17:07] <kim0> -Pay per use
  21 [17:07] <kim0> -Instant Scalability
  22 [17:07] <kim0> -Security (If you trust your provider)
  23 [17:07] <kim0> -Reliability
  24 [17:07] <kim0> -APIs
  25 [17:07] <kim0> let me quickly comment on each of those points
  26 [17:07] <kim0> the first .. pay per use, really means that you only pay for what you use
  27 [17:08] <kim0> this is as opposed to a more traditional VPS (Virtual Private Server)
  28 [17:08] <kim0> where you rent by the month ..
  29 [17:08] <kim0> in the pay per use model .. you can use 100 servers for 1 hour and only pay for that!
  30 [17:08] <kim0> -Instant Scalability
  31 [17:08] <kim0> This one means .. that most cloud providers
  32 [17:09] <kim0> do not limit your scaling .. ie if you need more storage or more servers
  33 [17:09] <kim0> you can go ahead and just get them .. no need for pre-committment
  34 [17:09] <kim0> -Security (If you trust your provider)
  35 [17:09] <kim0> Well .. a major debate point
  36 [17:09] <kim0> however .. Some people will never trust their data on someone else's data-center
  37 [17:10] <kim0> however .. some other people will say ...
  38 [17:10] <kim0> just as you trust the bank with your money .. trust us with your data
  39 [17:10] <kim0> it really depends on how valuable your data is to you, how much you trust the provider
  40 [17:11] <kim0> however .. if you have no dedicated IT staff .. throwing your load on a public cloud may even provide better security than running things in house
  41 [17:11] <kim0> -Reliability
  42 [17:11] <kim0> Most cloud vendors will invest in building a reliable data center
  43 [17:11] <kim0> replicated storage
  44 [17:11] <kim0> fault tolerant equipment ...etc
  45 [17:11] <kim0> you gain all of that ..
  46 [17:12] <kim0> -APIs
  47 [17:12] <kim0> The final point .. and it basically means that you control your cloud virtual data center
  48 [17:12] <kim0> through a set of APIs
  49 [17:12] <kim0> APIs are Application Programming Interfaces
  50 [17:12] <kim0> basically .. a way to programmatically create servers, storage, hook them up together
  51 [17:13] <kim0> so you can basically script or program everything that builds your entire virtual data-center
  52 [17:13] <kim0> "automation" is thus big in the cloud world
  53 [17:13] <kim0> and APIs do enable that
  54 [17:13] <kim0> when you're managing hundreds or thousands of virtual servers .. automation is generally important
  55 [17:14] <kim0> so ..
  56 [17:14] <kim0> In essence when you decide to use cloud computing, you're outsourcing your IT services (storage, infrastructure, ...etc) to a vendor that uses his skills to provide a reliable,secure service and uses the economies of scale to provide them at very competitive prices
  57 [17:14] <kim0> Any questions so far ?
  58 [17:15] <ClassBot> jack002 asked: What happens if vendor stop supporting a cloud?
  59 [17:16] <kim0> The question is what about if my cloud vendor dies/disappears/goes-out-of-business
  60 [17:16] <kim0> A very valid concern indeed
  61 [17:16] <kim0> that is why most cloud concerned IT people
  62 [17:16] <kim0> try to avoid "vendor lock in"
  63 [17:16] <kim0> which means having a standard API to manage your cloud
  64 [17:17] <kim0> and being able to quickly and easily migrate your data and infrastructure off to a different cloud
  65 [17:17] <kim0> there is a lot of effort in that direction
  66 [17:17] <kim0> standardizing APIs ..
  67 [17:17] <kim0> writing wrapper tools like the delta-cloud wrapper
  68 [17:17] <kim0> to standardize cloud management
  69 [17:17] <kim0> however .. the whole scene is too young and fast moving .. so there is not definitive answer yet
  70 [17:18] <kim0> however indeed .. vendor lock in is something you should care about
  71 [17:18] <kim0> Alright
  72 [17:18] <kim0> So, let's move on to the different types of clouds
  73 [17:18] <kim0> Most people categorize clouds as either
  74 [17:18] <kim0> -IaaS
  75 [17:19] <kim0> -PaaS
  76 [17:19] <kim0> -SaaS
  77 [17:19] <kim0> being .. Infrastructure, Platform, Software
  78 [17:19] <kim0> as a Service
  79 [17:20] <kim0> IaaS: Basically means .. you get the low level infrastructure as a service. i.e. what you get is, raw storage, networking bandwidth, load balancers, servers ...etc
  80 [17:20] <kim0> and you build your code and applications on top
  81 [17:20] <kim0> very similar to physical servers really
  82 [17:20] <kim0> This is similar to the Amazon EC2 cloud .. the rackspace cloud and many others
  83 [17:20] <kim0> PaaS: being .. Platform .. you get a "platform" to code against!
  84 [17:21] <kim0> i.e. you don't really see "machine" and "storage"
  85 [17:21] <kim0> you may not even know how many machines your code is running on
  86 [17:21] <kim0> you may not know how the network is configured!
  87 [17:21] <kim0> What you do get
  88 [17:21] <kim0> is a "File-system" for example to put shared data on
  89 [17:21] <kim0> you'd get an API to store/retrieve data from
  90 [17:21] <kim0> ...etc
  91 [17:22] <kim0> How this database you're using is actually configurd .. where does it run .. is none of your concerns!
  92 [17:22] <kim0> The prime example of a PaaS .. is the Google App Engine platform
  93 [17:22] <kim0> The major benefit of PaaS .. is that you don't care/know about the low level stuff
  94 [17:23] <kim0> it all "just works" as far as you're concerned
  95 [17:23] <kim0> however .. the bad part .. is that you don't know the low level stuff also!
  96 [17:23] <kim0> you cannot change anything .. you have almost zero control on the low level configuration ...etc
  97 [17:24] <kim0> Another major benefit, is that you get scaling, for very little or almost no effort
  98 [17:24] <kim0> on the other hand .. with IaaS ..
  99 [17:24] <kim0> you would have to build your application in a scalable manner
 100 [17:24] <kim0> you'd have to use load balancers .. use caching in a smart way ..
 101 [17:24] <kim0> manage DB replicas .. manage DB sharding ... etc
 102 [17:24] <kim0> lots of stuff, which may consume a lot of effort
 103 [17:25] <kim0> The last cloud type we mentioned was
 104 [17:25] <kim0> -SaaS
 105 [17:25] <kim0> basically Software as a service
 106 [17:25] <kim0> What this means .. is that you get a final completed "Software" running in the cloud
 107 [17:25] <kim0> and you just use it!
 108 [17:25] <kim0> examples .. are like Salesforce.com
 109 [17:26] <kim0> It is a complete CRM application
 110 [17:26] <kim0> that is running in the cloud
 111 [17:26] <kim0> you don't need to worry about buying servers, buying storage, running or scaling it
 112 [17:26] <kim0> or backing it up ...etc
 113 [17:26] <kim0> you just pay per use
 114 [17:27] <kim0> the simplicity and benefits are obvious .. while of course vendor lockin is also fairly obvious and problematic
 115 [17:27] <kim0> Cool ..
 116 [17:27] <kim0> Another classification type of Clouds
 117 [17:27] <kim0> is
 118 [17:27] <kim0> private, public, hybrid
 119 [17:27] <kim0> let's quickly comment on that
 120 [17:28] <kim0> -Private: Means a cloud that you built and that you control .. in-house .. behind your firewall .. in your own datacenter
 121 [17:28] <kim0> An enterprise may very well build its own private cloud for its internal users
 122 [17:29] <kim0> -Public: This basically means a cloud that's available publicly on the Internet for anyone that pays
 123 [17:29] <kim0> -Hybrid: This one is a mix of both public and private
 124 [17:29] <kim0> for example .. you may build an inhouse cloud that handles the average load
 125 [17:29] <kim0> however .. a couple of days per month
 126 [17:29] <kim0> you get 5x the normal load for some reason
 127 [17:30] <kim0> so you decide to "burst" out
 128 [17:30] <kim0> to some public cloud
 129 [17:30] <kim0> so you start some virtual servers (VMs) on a public cloud
 130 [17:30] <kim0> perhaps establish a VPN connection between your enterprise and the public cloud
 131 [17:30] <kim0> et voila .. you can expand your virtual datacenter as much as you want to handle the extra load
 132 [17:31] <kim0> so .. any questions so far
 133 [17:32] <ClassBot> kstailey_ asked: is libcloud an API?
 134 [17:32] <kim0> libcloud is an abstraction library
 135 [17:32] <kim0> that works across many cloud vendors
 136 [17:33] <kim0> so if you're writing an in house script that connects to a public cloud
 137 [17:33] <kim0> creates a few servers and configures them
 138 [17:33] <kim0> if you build your script over libcloud
 139 [17:33] <kim0> you'd be able to quickly replace
 140 [17:33] <kim0> Amazon ec2 for example .. by linode
 141 [17:33] <kim0> across many others
 142 [17:33] <kim0> this is part of the solutions to the vendor lockin problem
 143 [17:34] <ClassBot> ongolaBoy asked: I guess that all this kind of cloud involve tons of complex hardware and software to run. Am I right ?
 144 [17:34] <kim0> Well ..
 145 [17:34] <kim0> remember when we said public vs private clouds
 146 [17:34] <kim0> One thing I would like to mention is that you can build a private cloud
 147 [17:35] <kim0> today using Ubuntu
 148 [17:35] <kim0> using Ubuntu Enterprise Cloud
 149 [17:35] <kim0> UEC
 150 [17:35] <kim0> that is integrated with the Ubuntu server CDs
 151 [17:35] <kim0> to answer your question about "complexity"
 152 [17:35] <kim0> I would say it is very "simple" for a sysadmin type person to install and get UEC cloud running
 153 [17:36] <kim0> after all everything is easier with Ubuntu :)
 154 [17:36] <kim0> however ..
 155 [17:36] <kim0> of course for production clouds that serve the whole world
 156 [17:36] <kim0> the likes of Amazon and Google data-centers
 157 [17:36] <kim0> indeed the hardware and software involved can become quite involved
 158 [17:36] <kim0> requiring teams of highly skilled unix geeks to keep up and running
 159 [17:37] <kim0> you can start small .. UEC for example can be run on only 2 machines
 160 [17:37] <kim0> or with some hacks .. even just one machine
 161 [17:37] <kim0> and grow your infrastructure as much as you want
 162 [17:37] <ClassBot> kstailey_ asked: does it make sense to run PaaS on Iaas?
 163 [17:38] <kim0> Good question
 164 [17:38] <kim0> It makes sense to me
 165 [17:38] <kim0> The most popular PaaS platforms are however proprietary
 166 [17:38] <kim0> for example .. the Google App Engine code is closed AFAIK
 167 [17:39] <kim0> if it were open .. you could definitely get it running over IaaS
 168 [17:39] <kim0> after all .. it needs to run over something
 169 [17:39] <kim0> there definitely are some smaller PaaS frameworks that you can start using
 170 [17:39] <kim0> I remember coding against a framework called web2py
 171 [17:39] <kim0> which could either be deployed locally
 172 [17:39] <kim0> OR could be deployed to run over google app engine
 173 [17:40] <kim0> such solutions may be a good starting points to avoid vendor lockin
 174 [17:40] <ClassBot> komputes asked: This all sounds great but how does one do this virtual datacenter expantion with minimum development knowledge?
 175 [17:41] <kim0> Not sure if "development" in your question means linux sysadmin knowledge or actually development knowledge writing your app
 176 [17:42] <kim0> with APIs .. you basically can create a virtual data-center
 177 [17:42] <kim0> without too much IT infrastructure knowledge
 178 [17:42] <kim0> i.e. without much knowledge of servers, storage, networking ...etc
 179 [17:42] <kim0> an application developer can get by perhaps without a Linux admin at all
 180 [17:42] <kim0> however .. ofcourse you still need app development skills to run your app
 181 [17:43] <kim0> even more so .. to create an app that can be scaled to take advantage of the cloud
 182 [17:43] <ClassBot> komputes asked: Is there a pre-built solution for using a cloud as a remote desktop middle-man (i.e. I want to support grandma but both of us are behind a firewalls and both ends can't port forward - not admin)
 183 [17:44] <kim0> I don't think you need a cloud for that .. you can use applications like TeamViewer or logmein (free but not foss)
 184 [17:44] <kim0> although you could write your own app if you wanted to of course
 185 [17:44] <ClassBot> kstailey_ asked: how long before we see Ubuntu switch to OpenStack?
 186 [17:45] <kim0> UEC is built on top of the best open source cloud technologies
 187 [17:45] <kim0> at the moment .. that is Eucalyptus
 188 [17:45] <kim0> openstack is a fine piece of evolving technology though
 189 [17:45] <kim0> it's already in maverick universe .. so you can go ahead and play with it
 190 [17:46] <kim0> we're kinda running out of time
 191 [17:46] <kim0> just wanted to mention a couple of killer cloud use cases
 192 [17:46] <kim0> If your application load varies significantly (top load / least load > 10)
 193 [17:46] <kim0> then you most likely will benefit from running your load over a cloud
 194 [17:46] <kim0> examples
 195 [17:46] <kim0> The Washington Post: 200 EC2 instances (1,407 server hours), convert 17,481 pages of Hillary Clinton’s travel documents within 9 hours
 196 [17:47] <kim0> The New York Times used 100 Amazon EC2 instances + Hadoop application to recognize 4TB of raw  TIFF image into 1.1 million PDFs in 24 hours ($240) 
 197 [17:47] <kim0> Okay
 198 [17:47] <kim0> so let's start with a quick demo
 199 [17:47] <kim0> which I hope is going to actually work :)
 200 [17:47] <kim0> In this demo we will use Amazon's EC2 cloud
 201 [17:47] <kim0> we will launch Ubuntu server
 202 [17:48] <kim0> Note that
 203 [17:48] <kim0> if you want to experience Ubuntu server over EC2 cloud yourself
 204 [17:48] <kim0> You can
 205 [17:48] <kim0> For Free !
 206 [17:48] <kim0> Well actually Canonical pays for you
 207 [17:48] <kim0> You can run it for an hour
 208 [17:48] <kim0> by visiting http://10.cloud.ubuntu.com
 209 === [[NEO]] is now known as Neo31
 210 [17:50] <kim0> The first thing is identifying
 211 [17:50] <kim0> which Ubuntu server you want to run
 212 [17:50] <kim0> you can do so by visiting
 213 [17:50] <kim0> http://uec-images.ubuntu.com/releases/maverick/release/
 214 [17:50] <kim0> or you can replace maverick by any other release name
 215 [17:50] <kim0> You can pick any AMI you want
 216 [17:50] <kim0> AMI = Amazon Machine Image
 217 [17:51] <ClassBot> There are 10 minutes remaining in the current session.
 218 [17:51] <kim0> basically a blueprint/template of the virtual server you will start
 219 [17:51] <kim0> assuming you have the ec2 tools setup correctly
 220 [17:51] <kim0> You can create and launch your server with one command like
 221 [17:51] <kim0> ec2-run-instances ami-508c7839 --instance-type t1.micro --region us-east-1 -k MyEC2Key --user-data-file=cloudinit.txt
 222 [17:51] <kim0> ami-508c7839 : Is the AMI we chose
 223 [17:52] <kim0> t1.micro = is the smallest machine Amazon provides
 224 [17:52] <kim0> MyEC2Key: Is my private key (my password if you will)
 225 [17:52] <kim0> cloudinit.txt :
 226 [17:52] <kim0> That is one interesting feature of Ubuntu in the cloud
 227 [17:52] <kim0> cloud-init is a feature which allows the VM to automatically customizes itself
 228 [17:53] <kim0> as it boots
 229 [17:53] <kim0> i.e. you can tell the machine
 230 [17:53] <kim0> to upgrade all software (apt-get upgrade)
 231 [17:53] <kim0> and install apache2
 232 [17:53] <kim0> all while booting
 233 [17:54] <kim0> Take a look at
 234 [17:54] <kim0> http://paste.ubuntu.com/512497/
 235 [17:54] <kim0> Which shows the cloud-init file I am using
 236 [17:54] <kim0> This file ensures that
 237 [17:54] <kim0> the VM upgrades itself
 238 [17:54] <kim0> runs byobu
 239 [17:54] <kim0> imports my ssh public key from launchpad!
 240 [17:55] <kim0> automatically so I can login
 241 [17:55] <kim0> installs apache
 242 [17:55] <kim0> and runs some commands at machine boot time
 243 [17:55] <kim0> this is of course awesome
 244 [17:55] <kim0> since all your servers launch from the same template
 245 [17:55] <kim0> you need a way to customize them
 246 [17:55] <kim0> into their respective roles
 247 [17:55] <kim0> and cloud-init does just that
 248 [17:55] <ClassBot> There are 5 minutes remaining in the current session.
 249 [17:56] <kim0> If you visit
 250 [17:56] <kim0> http://typewith.me/Eip1j21bJ3
 251 [17:56] <kim0> I will  paste the command output interactively
 252 [17:57] <kim0> The bold text ,, is called the machine ID
 253 [17:57] <kim0> Now my server has been created
 254 [17:58] <kim0> I ran describe instances
 255 [17:58] <kim0> this gets me the public name
 256 [17:58] <kim0> of my server
 257 [17:58] <kim0> if you visit that
 258 [17:58] <kim0> there should be apache
 259 [17:58] <kim0> http://ec2-184-72-172-83.compute-1.amazonaws.com/
 260 [17:58] <kim0> Indeed .. it works!
 261 [17:58] <kim0> that's how easy it is
 262 [17:59] <kim0> to deploy an ubuntu server with a customized apache running on it
 263 [17:59] <kim0> sorry folks if we're running out of time
 264 [18:00] <kim0> one final thing I wanna show you
 265 [18:00] <kim0> is the logs of the machine
 266 [18:00] <kim0> http://paste.ubuntu.com/512499/
 267 [18:00] <kim0> notice how cloud-init has customized the server
 268 === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || UOW Survey: http://is.gd/fZlwL || Event: Ubuntu Open Week - Current Session: Deploying Web Applications in the Cloud - Instructors: kirkland
 269 [18:01] <kim0> upgraded it and installed apache

MeetingLogs/openweekMaverick/IntrotoUbuntuandCloud (last edited 2010-10-15 01:40:08 by nigelbabu)