 Good afternoon, OpenStackers. We are so glad to have you here this afternoon. It's very exciting that after four days of all things OpenStack, you have attended this intro to OpenStack basics. So our goal here today is for every single one of you to get to use their Horizon OpenStack control panel and also use the Python command line clients. If you have any questions, we have a number of our Rackers here, and at RackSpace, we are all about fanatical support, and so we are going to show you that today. I'd like for all of our helpers in the audience to stand up and show everybody who you are. So if you have any questions, please call them over, they will help you. Yes. See, there you go. Right now, I'm going to introduce our speakers today. I'm Angela Streeter. I'm with RackSpace. I'm with the OpenStack Cloud Training Team, and- I'm H.S. 80. I've been a contributor to OpenStack for two years. I used to work on Glantz and currently, I'm a contributor on Trove. Hi, everyone. I don't think this is on. Pass the handheld. Oh, no. Hi, everyone. My name is Agnes Sigler, and I'm a Principal Architect on the Prior Cloud Solutions Team at RackSpace, and I hope that after this session, everyone knows how to use OpenStack. I'm Dana Bauer. I work with the Developer Relations Group at RackSpace. We do a lot of outreach to developers, and we create the SDKs for the RackSpace Public Cloud and OpenStack. I teach a lot of workshops, and I love teaching beginners, so I'm excited about this big group here. Okay. Do you want to pull up the workshop? So everybody here has a credential worksheet or the access page. She's going to pull it up for us up here. The workshop materials will be on- Are you going to- Well, no, the browser? Workshop materials? There you go. It's kind of hard to see. So all the materials that we're going to be using during this workshop are available here, and then also when you go home, this will be available for at least a few days to a week. You're welcome to use it and log in. There's also a virtual box appliance that we have supplied. You do not have to use it right now, but you can download it later. There's instructions for using it. It's pretty simple, and we're going to give thanks to our instructor, Matt Dorn, who is over here, and he will also be helping out. He's the one who created this appliance. He can give you more information about it if you have questions. Also, so we're primarily going to work with the Horizon PDF up there in the initial part, and then when Agle is up here with the CLI stuff, we have these files over here. They're text files you can easily copy and paste the commands if you don't feel comfortable typing them in. If you have any questions about that, please, I will be down there as well. I'll be walking around and I will help you. Just a little bit of a background. The lab environment that you are working on is OpenStack on OpenStack. It's a set of 15 beefy VMs that we have. We have a controller, a network node, and several compute and storage nodes. Okay, so this is day four. Who here doesn't know what OpenStack is? Okay, you've paid to be at this conference and you spent four days here. So basically, OpenStack is an open-source software for building private clouds. So that's between in your company or in your system, or for building public clouds for consumptions by a multiple diverse set of people. This is like a more technical definition which says it helps us control pools of compute, storage, networking, present in a data center, either using a command line interface or using horizon, which is like a user interface. OpenStack has these three main components, like I was saying compute, networking, and storage. All these different components have a common thread tying them. You can access them using the dashboard, and they all have a set of common shared services which they use, like authentication and Keystone. We'll be talking a little more about that. This is the Havana architecture of OpenStack. So if you're not aware, an ice house project culture got integrated. So this doesn't include that. So this is a brief architecture diagram. I'm not going to go into too much detail because you've probably spent four days talking about OpenStack and you're already aware of most of these components. But just for the sake of completion, let's go through and look at them one by one. First is horizon. This is the user interface, which instead of if you're intimidated by using the command line, or you don't want to go into opening your tiny terminal and typing in every single command or SSH'ing into your box. Horizon pulls up a beautiful GUI up there for you to help you manage and perform all these operations. And that's what the first part of the workshop we'll be focusing on. So NOVA is the crux of OpenStack. It's like when OpenStack started, it started off with two main components. First was NOVA and second was the stored Swift component. So NOVA is the main cloud computing fabric controller. It talks to your hypervisors, helps you spin up virtual machines. So it's basically the heart of OpenStack. Most of the commands which you're going to be doing, like booting up instances or creating snapshots, all your calls after getting authenticated with Keystone are going to go to NOVA. And all your images have to reside somewhere, right? So once you've taken, say, a snapshot, which is create an image of the instance at a given point of time, you want it to reside somewhere. So Swift is the object stored which OpenStack uses for storing all these images. It has lots of features like it helps you store data cheaply, safely, efficiently. It's built for disaster recovery, clustering and all those inbuilt features for data storage are available in Swift. Now yes, I have all these images. How do I keep track of them, right? So glance is the image registry for OpenStack. It helps you keep track of here are the images I own. And here is the location in which they reside. And for example, this image Ubuntu image resides in this location in my Swift. Neutron, so initially when NOVA started, it had all these components. It had all the voluming work, it was doing all the networking work. And NOVA started becoming like this big fat piece of software. And slowly OpenStack decided that we should separate out these components into their own projects. And that's how Neutron was born. It provides network connectivity as a service. So for example, you spin up instance A and you spin up instance B. And you want your two instances to talk to each other. Neutron can help you do that. So I went through like, so whenever you make a request, you make it through Horizon, which is your user interface dashboard. It goes through Keystone, which is your heart of authentication in OpenStack. Every single call you make, you want to make sure if your user's allowed to make that call or not, Keystone is used for authentication. Once it's authenticated with Keystone, it goes to the respective component to make those calls and do your respective actions. So that was the very brief overview. We didn't want to go into too much detail cuz this is a workshop and it's all gonna be hands on. And Angela, do you have any housekeeping instructions before we start off? Now good. So all of you are ready? Pumped up to start? Okay. Use my pack. Could you guys, the mic guys, could you leave the handheld on? Some of my co-presenters are gonna answer questions while I'm going through this. Thanks. All right, I'm gonna be sitting, it's a little awkward for me as a presenter. Next year, we should have standing desks up here. No, I know, but I wanna get the, okay, I'm the one. Great. Okay, so this is your home base for the workshop. How many of you have pulled this up? Looking at this. This is the great stuff that you get to take with you at the end of the workshop. We've passed around the USB drive as well. So you're able to pull all the information that way and you'll have it locally. But we'll leave this up for a while. Our goal here is to truly take people from zero. So we're not assuming anything about your experience or your background. We wanna get you playing around in Horizon. We wanna get you doing things on the command line. If you're doing that and it's not too painful and maybe you're having a little bit of fun, we'll consider this a success. All right, so I'm gonna be working primarily from that Horizon PDF. Please follow along. You probably wanna have it, have it locally. Let's go ahead and, yeah. Can you just reiterate, they don't need virtual blocks of clients right now. They can just look straight into Horizon. Sure, okay, so we're not really working with that virtual blocks of clients right now, that's something that you can take home and work with. Of course, you can right now if you want to. But I suggest using the logging into this remote system. And at the top of that Horizon handout, you should see the instructions for logging in. And I'm gonna go ahead and. Are most people able to log in into the Horizon? Yeah, is everyone seeing this? Raise your hand if you're seeing this. If you are not seeing this and you wanna be following along, grab one of our friendly TAs. TAs, wave your hands in the air one more time. These excellent people are here to help you. Please take advantage of them. Now raise your hand if you want to talk to one of them. Connecting. Okay, so this is our dashboard. Horizon is our OpenStack dashboard. And it's a great entry point for people who are new to OpenStack. It's friendly, it's a nice graphical interface. If you're interested, if you're a Python developer, it's a Django project. I kind of find that exciting. You're using all of the OpenStack APIs, but you're pushing buttons and you're getting to explore all of the different components in a really nice visual way. So we're going to explore just a few of the components of OpenStack right now. And then we'll really do a more thorough exploration when we get to the command line. Okay, so, who's ready to spin up a cloud server? Yeah, the lady. All right, I'll talk through this. You can also watch what I'm doing up here. You can follow along on the PDF, whatever works best for you. So we're going to click on the instances menu. Ooh, all right, conference internet. So I think you can click on home. I guess you first, please. Yeah, all right, here we go. I'm going to make this a little smaller just so you can see what I'm doing up here. All right, so this is our instance dashboard, launching an instance, getting started at least, it's as simple as clicking this button in the upper right that says launch instance. So who's seeing this pop-up window? You all with me? Okay, great. You can name your instance, anything you like. I'm going to go and call mine Selfie because this is my instance. There's some nice things that we've done for you as administrators. You're all users right now, and that's all we're really going to show you during this workshop, how to be an OpenStack user. Today, I happen to be the administrator of our private cloud. So I have all the power and control. That's why you might notice that my dashboard looks a little different from yours. But we've done some things already to help you get started. One thing that you need to do when you're going to launch an instance is you need to identify a boot source. We're going to boot from image. And then we've provided you with an image here, Seros. It's a very tiny Linux distribution. Okay, the next thing that you need to do before you can launch an instance is attach it to a network. And we have a public network here that's for our entire cloud. And you're going to drag that into selected networks, come on, there we go. All right, once you've done that, you can go ahead and launch it. All right, there we go, spawning, lovely, lovely word. So this is a building machine right now. And if I click on it, I'm going to switch over to the lines. All right, I'm assuming that this is just as slow for all of you here. Yeah. Okay, so this gives you an overview of what you've created here. Some specs for the machine that we've launched. You can see that it's attached to this public network. Security groups are like a firewall just for this cloud. And some information about the image name. You can also click on the log button here. It might be slow to load. Is anyone able to see the log? Yeah, there we go. All right, so our machine is up. It's alive. It provides us with some login information. We also have a console right here in Horizon. And we can log directly into the machine. And that might take a while to come up. We click on this other button here. Okay, this is a little slow on conference internet, but who has successfully launched Cloud Server? If you haven't, if you're hung up, if you're stuck, grab one of the TAs. Okay, give yourself a little round of applause. This is pretty exciting for a lot of folks who are new to OpenStack. Okay, so the next thing that we're going to do is, the next step in this exercise is to register and upload your own image into Glance. And here's what I'm going to suggest now. I'm going to suggest that you just watch me do this and then follow along later. Or try it yourself later. Or try it at the end of the workshop. Okay, so we're going to click on the image and snapshots button here. It is really terrible. All right, there we go. Create image. Again, I'm going to give it, I'll just be a little my image. In this particular case, we're going to identify a file that's local as our image source. And we gave you this image. It's another Sero's image on the USB. So you probably pulled it to your desktop or to some other place on your local machine. Right, so that workshop dashboard where all of the materials are, you can get the image there as well. Format QCAU2, QMU emulator. And we're going to leave the rest as a default. Sorry. Can someone get the question and repeat it? Do you want to take that one? QMU is a disk format supported by KVM. The QMU, the QCAU, stands for copy on write. So what that format does is that it's a very small disk format and only expands as you write to the disk image. The nice thing of it is it gives a very compressed disk size. So you can create a 40 gig disk drive. And initially it may only use one or two gig on your whole system until it grows. But that's just the format that that disk is in. It will support other disk formats like VMDK and other formats that can be used. But that's just a particular format we've used. It's a very efficient one for running under KVM. Virtual box. Here we go. Would you fresh make sure you're on? Yeah. Okay, so here's the image that I registered in Glance. And one additional thing that I could do here is I could launch an instance from that image that I just created. And I've selected my image. Oops, what did I forget to do? Yes. So you cannot launch an image without attaching it to a network. And here we'll use my public network. Okay. And that came up a little faster. Okay, so you see that I have the two images that I launched today. The first one from the image that we provided to you as administrators. The second one from an image that I created myself and registered in Glance. Sure. Angela, do you want to take the boot from volume question? So you can have an image saved on your volume and you can just boot from volume. I forget what your options were. So if you already had some images, custom images that you had created, or you had created some snapshots, all of those options should be there. So if you select boot from volume, you probably won't be able to proceed very far. Click on it. And it says no volumes available. And that's the next step we're going to do. We'll show you how to create a volume. Correct. Yes. So let's go through the basic steps. And then if we have time, we can go over more advanced sections. And it's difficult. We want to make sure that everyone that is not familiar with OpenStack can get familiarized without going into all these other options. Okay. So let's go ahead and create a volume. On the left, you'll see in the dashboard, you'll see the volume menu. Here's one that I created earlier today. I'm going to go ahead and create another one. So if you hit create volume in the upper right, give it a name. These are drive types. SATA is the one I'm going to pick. One gigabyte. And right now we're just going to create an empty volume. There's no file structure. We'll hit create volume. So here it is. We can click on it. We can look at some of the detail about the particular volume that we created. And we can see down here that it's not attached to anything. Someone says, is this block storage? Yes. So this is the cinder component of OpenStack. What we're going to do is go back to our instances. So here on the left, okay, we'll go back. I'm just going to pick one here. I'll pick selfie one. Sorry. I'm going to go back to volume. And I'm going to attach it here. So under my second volume, edit attachments. And I'm going to select that instance that I want to attach it to. So in this case, I'll choose selfie one. I'm going to go ahead and attach the volume. Sure. Sure. Okay. Okay. So I led you astray for a few seconds. My apologies. I'll take you back to the right place. Okay. So to attach an instance or attach to a volume to an instance, you're going to click on that volume that you created. Or sorry. Click on edit attachment next to the volume that you created. Okay. So who has created a volume here? All right. And if you look at the volume dashboard, some people only have delete volume. Okay. Has anyone been able to attach a volume? Yes. Okay. So under edit attachments, right. So if for some reason you had a problem creating your volume, you might want to go back, delete it, do it again, and then attempt to attach it to an instance. So I'll do it another time here. In this pop-up window, I'm attaching it to this instance that I've created. So over here on my right, are you now seeing an option? Did you have to go back and recreate the volume? Okay. Okay. Great. Okay. Okay. Yes. So we're using one right here. Also, some of you may have seen that your volume had errored out. So just go ahead and create another one. Make sure to use size one, SATA. And don't worry about errors. This is a private cloud for training purposes. So things are not going to be perfect. If there's an error, kill it, recreate it. Okay. I'm going to move on. But please don't hesitate to grab the TAs if you're still working on creating and attaching volumes. Yes. Just one. Right. Yes. So this is also something that you can attach to an instance, detach from an instance, attach to another instance. It's like an external hard drive. It's like the USB drive that we handed around. What is the question? No. Just one. So this other volume here is something that I had created earlier that I attached to a different instance. But here. So let me do this. I'm going to go ahead and detach this volume from selfie 2. And it's telling here on the dashboard that it's detaching. I'm going to go ahead and detach this other instance that was hanging around in my project from my volume instance. So error. There we go. I'm going to try it again. So Agnes, right. This is really the perfect environment for you to play around without fear. And that's really, and you can see that I'm playing around without fear. I'm not afraid. Okay. So now we have these two volumes and they're not attached to anything. Okay. And we'll do it one more time. So my first volume. I'm going to go ahead and I'm going to attach this to my first instance. Yep. Yep. So if you, right? So I could take one volume, attach it to my first instance, detach it, take that same volume, then attach it to selfie, which is a separate instance, and then detach it. So, nope. So right now what Dana showed was just how to attach and detach. If you were actually, we're going to do something with that volume, you would have to log in into the instance itself and do some magic Linux commands to make it usable so it's being used and you can put some files in our solutions that are available on the class site. We actually list out all of the commands that you need to do and you're welcome to try that out. For the sake of time for the class, we're not going to go into it right now, but it's just Linux commands. So, no, it's, once you attach a volume, you need to log in into the VM that you attach the volume to and make the VM aware that you actually have a volume and that you want to use it and stuff like that. I'm sorry. I'm sorry. When you attach a volume does the VM get a hot plug event like you plugged in a hard drive and hardware and it... You attached a hard drive to the server and so just like when you attach a new hard drive, you would have to go in with the utility in this case, it's a Linux image, so fdisk or gparted or something like that, right? And you'd have to make a partition on it and all of that kind of stuff. We also had another really great question over here about, you know, why does my first volume, the more button disappeared and it's actually disappeared for a good reason because now that that volume is attached, there's a restricted set of things you can do with it so you don't do something bad and so that's why the more button disappeared on the volume that you've actually attached to an instance. There are some features in the dashboard that save you from yourself. Hopefully. Okay. All right, so let's take a look at creating a private network. Go Neutron. You've got a... Your scroll bars aren't disabled. So right now we're using one network that we've set up as administrators that's available to all of you. All of you are working with your own projects and what we're going to do now is we're going to create a private network that's just for your project. And that means that the other users in the room working on their own projects won't be able to see this network that you're creating. All right, so over on the left side, I'd like you to click on networks. Okay. And right now you should only see my public network. This is the one that we're all using here. I'd like you to go ahead and create network. We're going to call this one private. Under the subnet tab, we're going to give it the name private subnet. If you're following along with the PDF, you can see the network address that we've asked you to use here. 10.0.0.0. Backslash 29. Okay. 29. All right. And then I'd like you to go ahead and create that. Who is able to create a private network from the dashboard? You are now all neutron experts. So this is going to be a just very, very, very, very short overview. This is about all we're going to do. Agle will get into it a little bit more, the command line. But we just wanted you to see what this looked like in the dashboard. Leave it blank. In the PDF, it actually says check it. Oh, it does? Yeah. Okay. Check it. Chris, can you take this one? Oh, sure. Actually, I'm not sure either. But we do have a neutron expert in the room, Phil. When you create a network and it's admin versus non-admin state, what does that mean if they're just users? So let's take them. Go ahead, Phil. It means that the... I think that that means that then you have to admin privileges to... I mean, you have to have admins... In this, you're going to have to have admin privileges, I think, to see the box. And then from then on, normal users can't fiddle with the network. But they're all users and they can... Okay. That's a good question. So let me just... In that case, I'm not certain what that... I'd have to go look at the database and see what that one's actually setting. I don't know what the Windows thing sets there, so... Let's stop one minute and just talk a little bit about some resources that you might look at if you were trying to get more of these in-depth answers. The OpenStack site is really fantastic. The Docs, the OpenStack Docs are great. Right now, we're just trying to expose you to Horizon and how you might go about creating some resources and playing around here. It's not likely that you would spend a lot of time in Horizon, and if you're a software developer, you probably wouldn't at all. But this is a great way for you to explore the OpenStack components. And this cloud that we've set up for you today is really just a sandbox. You can experiment with things, you can try things. Also, don't hesitate to grab one of the TAs to answer some of those questions at the end, too. Alright, so the last thing that we're going to do here in Horizon is clean up some of these resources that we've created during our exercises. So if you're looking at the PDF right now, you can start by deleting those volumes from the volume menu. And if you want to wipe everything out, it's just as easy as clicking this box right up here in the top left. Why is it not that one I can delete? Right. So this other one we want to detach it from our instance. There we go. Interesting. Okay. And then from this more menu, we're going to go ahead and delete it. We're not. Alright. And so then you can also go under the Instances menu and select the instances that you created. I'll leave one. And go ahead and terminate instances. You might also want to go in and create or delete rather the private network that you created, but leave the public network there. Leave that one in place. Right. Yes. So I did that briefly. Actually, that's one of the remaining exercise in that handout if you want to do that later. To go ahead and either launch a new instance using that private network that you created. Yes. Yeah. Okay. So we've explored Horizon. We've gone through. We've clicked some buttons. This is a really cursory overview of some of the functionality there and an exploration of those components. So how many of you are excited about trying some of this on the command line? Maybe that's more. Alright. Yes. Okay. Maybe I should have left. You should have gotten the hook out earlier so we can move along there. Alright. So that's the next step. I know that might be something that's a little advanced for some of our beginner beginners in the room, but please stay with us. Excuse me. Alright. Am I on a mic now? Yes. Alright. Excellent. So everybody created instances and volumes. Yes. Yes. Alright. Ready to be super users? Yes. Awesome. So what I'm going to be doing is, because this is a live workshop demo, I'll cheat a little bit. I will use copy, paste for some commands. However, everything that I am copying and pasting is available here where it says command line solutions. So you may want to just take a look. If you want to, you can type in. You can copy, paste whatever is more comfortable for you. So if I go too fast, please stop me. If I say something that you're not sure what I just did, please let me know. Previous page. Oh, yes. So if you scroll up and you can open this PDF, you may want to save it in a separate page. I'm sorry. So you can keep this open for yourself. There are some commands that are useful if you are a beginner. And you can just take a look at all of the different things you can do in each client. I'm not going to be using it right now. I am going to cheat off the actual solutions. So what I'm going to do now is I am going to bring up a command line client. And I will see if I can make sure that people in the back can see this. I am going to SSH into the same instance that Dana was using. How many of you have used SSH before? All right. So almost everybody. That's good. We will deny the acrobat reader. It will pop up again. We'll deny it again. All right. If this is your first time SSHing to it, you will get the yes no question type yes. And then the passwords, you should have gotten them on your little sheets. And hopefully this works. No. Why not? All right. Doesn't want to let me in. Did someone change their password on me? All right. All right. Typing. If I could just interrupt for just a moment while you work on that. We had a question earlier about that admin state box in Neutron. Yes. Very, very odd name for the box. But what that basically does, admin state's default value is true. Removing the check out of that box obviously means false. When true, that network will forward packets externally. When false, it will not forward packets. So it's probably best labeled, enabled maybe, would be a better term for that box having this network enabled or not enabled. So pull requests are accepted for that labeling. Chris, I think we had a question. No? An additional question? No. All right. So I was able to log in by using the correct password. I was using the wrong password. So yeah, that's a user problem. So now that I am in the terminal, I should be able to do everything and more than Dana did. Now if you list, you will see a couple of directories available for you. Go into the credentials directory. The credentials have the information available for all, for two users. So I want to be a user. I don't want to be an admin user. And this is what that file contains. People in the back, should they make the screen the font bigger or not? White background. Is this color scheme okay? Great. Great. Change it. Blue is not readable. Doesn't change? I think I need to. Good question. So if I, all right. We have white. So you should have gotten a little piece of paper that has the credentials. And you will have your own user. I am using OpenStack 100. You will have your own. But I am logging into 192.237.148.185. This is the private cloud that we had set up for this class. All right. So let's go back to the credentials directory. And I still have blue. I'm sorry. This is fine? Okay. All right. So I have a user file. This file is so that we do not have to type in username and password for every command that we do. Right now, if I typed nova list, which is just a basic nova command to list all of the available instances that have been created, it will tell me that I must provide the username and password. And this is not something you want to be typing in each time you're trying to do something. So this takes us back to Stone Age. Right. This takes us back to Keystone. And if you look at the Keystone solutions that is available on the class website, these are the commands that we'll be doing. So you can follow along. You can copy, paste, or you can type them in. So what I'm going to do is I'm going to do to source the file. For those of you that are not familiar, it's just going to put everything that is in the file in there. It's just going to execute it, I guess. All right. So source, file. What file do they have? And now, when I type nova list, it actually gives me something back. It no longer asks me for a username and password. So the user has been created for us by our lovely administrators, and we have been provided with username and password. That's what you use to log in into Horizon, however, on command line. Because you're using a nova client, the command line client, you will have to pass the credentials each and every time. Instead, you can set those as your environment variables, and you will no longer have to enter them each time. Yes. Yes. So this file, you would create yourself, hopefully whoever set it up for you will create the file for you, but normally you would want to create your own, and if you're running DevStack or something like that, you would do something similar, and it would usually have your username, your password, your tenant name, and the authentication URL. This is the URL of your Keystone instance. So region one is the default region. For our class, we have only one region, so we do not have to worry about. If there is a large open stack installation, they may have multiple regions. All right. So in Keystone, you can... If you want to see what's available, you can type Keystone Discover or Keystone Catalog. So Keystone Catalog gives a lot of information for all of the different services that are available, and if you are a developer, you may actually care about these URLs because that's what you would be making API calls against. Lucky for us, the command line clients already take care of it, so we don't have to do it. If you want to know more about any of the commands that we're doing, you can type Keystone Help and enter the command following. The same will be true for the Nova, Neutron, all of the other open stack clients. So it would say Keystone Help Catalog and Catalog is List Service Catalog, possibly filtered by service. Some of the commands will have a lot more help. All right. So this is just a basic Keystone commands. As a user, you really don't have to worry about it. Administrators usually stutter up, and it's one-time job, and you don't have to do it all the time. The only thing that you may need to do is to source a user file so you don't have to do it every time, or you could just have it so that it's sourced every time you logged in automatically for you. Everybody so far with me? All right. So Dana has shown you how to create instances in Horizon. We will do the same thing on command line. First, let's see what we have. So to see what instances you already have, type novelist, and it tells me that there's a selfie too, and you may or may not have deleted your instance. I think the limit for each user is two instances per account per user, so if you have more than two, you will have to delete at least one of them, potentially two. So to delete it, you either go in the Horizon and delete it, or you type novel, delete, and the instance name. All right. And I didn't just mistype anything, so let's see if we have. And that's it. I no longer have any instances running. All right. So what do we need to create an instance? And you did this in Horizon. You needed to provide an image and flavor. So we're going to do the same. To find out what images you have available, you will type nova image list. This will give you available images. And we have a lot of people who had created images, so we have a few of them. And you probably see only one or two. It depends on what you created. I think I see all of them because, well, I don't know. Maybe some of them are public. You see everything? Okay. I think because they are public. All right. So we're going to use the Syros image. We also need a flavor. So we will see what flavors are available. Right now, it gives me only one flavor. A default OpenStack installation will have five of them, and they're going to have IDs from one to five. Our administrator does not want us using those flavors, so they were deleted. So now we have image and a flavor. So now we can type out the command for creating it. And because I think I will mistype it, I am going to go ahead and just copy paste. And all right. So it says, I got an error saying that the flavor was invalid. So that's because I need to use flavor six. All right. I have multiple. So that's the idea of the flavor. Right. So if you see here, I have ID six. That is the ID of my flavor. And I also got an error saying that I have to specify network. So because we have not covered neutron, what you want to do is you want to go and delete the networks that you created through Horizon. Or on command line, you can type neutron net delete. And I think this will give me an error again. Oh, no, it didn't. Excellent. So make sure you have only one network. Otherwise, you have to specify what network to use. So now, if I go back and try to boot an image, if I didn't make any typos, it should work. Yes. Did you delete an image? Delete all of the images? We will go and create an image. All right. So tell me this. When you do image list, what do you get? Does everybody have at least one image? Yes. All right. Was everybody able to create AVM on command line? Yes. Anyone stuck? Stuck. Can we get a fanatical volunteer? Anyone else that could use some assistance? Delete network? So I use the neutron net-delete and the network name. I think it's dash dash nick. And then I think. Yes. So if you want to use specific network, in addition to the other ones, you have to specify dash dash nick and the net ID. Yes. Neutron net dash list. All right. So we created AVM on command line. And it shows that I have one running. And it has some details. To see the details in a little nicer format than this table, you do nova show and the instance name. And this is all of the information. You saw the same information in the horizon dashboard. And this is just another way to view it. Any questions about this part so far? All right. So we had, we listed the available images, available flavors. We viewed the details. Now let's take a look at the log for this VM. All right. And this is just the same log that you saw in the dashboard. And it provides the super secret credentials to log in. And let's see, how do we log in to the VMC if we're doing this on command line browser? Well, we need to get a URL for it. We'll do nova getVNC console command. And this provides us with the URL. So copy, paste this URL. If you have a VM running, you should be able to get this. Yes. Anyone in Putty know how to copy and paste out of there? Double click. Select it. Right click. It'll copy. Okay. Just select it to copy. All right. So copy the URL. And I'll just go to the browser and enter it. And this, I think, is because it's super slow internet. It takes a while to bring up. But you would just be presented with a little terminal in your browser. And you would enter username and password and be able to access the VM. We'll let it spin a little bit and we'll see if it will come up eventually. But to delete an instance, I would type nova delete and the name. But because I am waiting to see if it's going to finally come up, I will not delete it this time. We'll delete it later. You are welcome to delete it right now. I'll keep it for a little bit. So, so far, we have covered basic keystone and nova commands. The next big project in OpenStack that we're going to go over is Swift. Now, this is a little bit of a jump because we've been working with instances and now we're doing Swift so that we don't run out of time. We'll go back to working with instances after Swift. I think Swift is super cool. And it's really easy to use if you just want to do some basic commands. First, let's see what we have available. So, if you just type Swift, you will get all of the commands. And you should definitely go over them and take a look at them. Let's see what is in our Swift cluster. Right now, it tells me that I have zero containers, zero objects, and zero bytes. The way Swift works is that you must create containers first and then you will load your files into those containers. And you can have multiple containers and you can have multiple files per container. I think you can have container and container. I haven't played with that too much. Correct me if I'm wrong, but nobody thinks I'm wrong. All right, let's create our first container. First, make sure I don't have any. Right, I don't have any containers. To create a container, Swift, Post, my container, what do we have now? All right, did everyone here create their first container? Yes? Cool. Now, now that we have container, we should put something in there. And I probably have some files, but you may not. So what I'm going to do, I am going to quickly create a very small file by typing echo, just some text, and direct it to a file. And if you're comfortable with command line, you can create the file whichever way you want. I am basically just putting that text into my file, that txt file. If I view it, it will say that I love from Xero to Nova. Let's upload this very nice file to our Swift container. And if you forgot what your Swift container was, you can do Swift list. To upload, I think it is Swift upload. And it will say my container and the file that you want to upload. Now, if we do Swift list and attach a container name, we should see what's there. And it says that I have a file in that container. Did everyone upload a file to their container? Yes? Is anyone stuck? Excellent. Now everyone is able to use Swift. That's really all you need to know. Just upload files and leave them there. I know, and it's like all of the commands are pre-intuitive. You can do statistics on a container. You can delete them. You can upload large files and chunks. I'm not going to do that, but we can download the file. And I think it's just Swift download, my container. You need to say what you're downloading or what and from where. And to output my file, to output the terminal, just dash o dash and it's going to output what's in that file and download it. Now to delete it, we will go ahead and delete my container. And if we do Swift stat, it should say that we no longer have anything. And all of the commands that I did are also available in the solutions guide on the website. So you should be able to upload as many containers as you like. Any questions about basic Swift usage? All right. Next up is Neutron. As a user, you will not be doing a lot of things with Neutron. It can get pretty advanced if you're an administrator. And all of the usage really depends on how your network is configured. So the basic commands that you should know is Neutron net dash show. Nope, that's not the one. List. And it will list available networks the same for subnet. And because these tables, they don't wrap very well and you want to view additional details, you can type Neutron subnet dash show or Neutron net dash show. And then a network name or a subnet name. Each network has to have a subnet if you want to use it. And here it tells me what my DNS name server is, the DHCP enabled, and the gateway that has been set up. Thank you, private cloud administrators. There is also a command here on how to create a new private network with a subnet. If you create a network, you will need to end want to boot a VM. You will need to provide which network to connect to. So I will skip this part. You can try this after we are done walking through all of the exercises. Now that we have covered Keystone, Nova, Swift, Neutron, we're going to move to Cinder. And you already are experts on Cinder in Horizon. And using it on a band line, it is not that much difficult. So let's see what we have right now. And it tells me they already have a Cinder volume that was created. And you may or may not have deleted it. So I don't know what our limits are for each user. You may want to delete it if you want to create additional ones. To create a volume, you will need to provide a type. So if you type Cinder type list, it will tell me that I have two types. If you are using this from the OVA, there is no type specified, then you don't have to specify this parameter. All right, let's create our first volume on the command line. Wait, what was the other one called? Is it going to be called the same? Yeah. So I don't want two of the same. So I am going to delete it. What I did here, I said I want to create a volume of name, my first volume. The number one that you see here is the size of the volume, and the volume type is Sara. And it automatically says that there's nothing attached. The status is still creating. If you're creating very big volumes, that may take a while depending on your cloud and your storage. So keep that in mind. And of course, for here, please do not create large ones. Because that will slow everybody down. Let's see if our volume is finally created. It errored out. Lovely. You have the same problem? Did someone create a very large volume? No, someone else. So sometimes, then there were errored out as some of the other open stack commands. It is still not perfect. So let's create another one. We will try to create a second volume. And this one also errored out. All right. So at this point, if you're having constant errors with your private cloud, you would call your administrator and say, hey, my cylinder keeps failing over and over again. And your administrator will say, well, that's because you are probably out of storage. Well, as administrator, I would look at the logs and tell you what is going on. Hopefully, there is a very useful error. If not, there's... They may have to do some detective work and see why it is failing. So it keeps failing and failing. So what I am going to do is create an SSD. You think that's going to work? Oh, excellent. We will try that. All right. So what Angela is saying is that I should become an administrator and show you what is out there. Because I have... Yes. There are probably half of them at errors. Some are available, some are still in use. Thank you, Angela. No. So the reason I am seeing all of these is because I became an admin by Sheer Magic. And I typed cinder list dash dash all dash tenants. As a regular user, you probably don't have access to this command or if you do, you will not list you all of the available volumes that have been created. Right now, I am acting as an administrator of this private cloud. It looks like everything looks like 5.0. I'm sorry? It looks like 5.4. Oh, yes. Has someone created size 500? No. All right. So we know who you are and we will delete them. I mean, as a user, that's what people will do. People always try to test the boundaries and see what's available. And if you administrate any sort of IT infrastructure, I'm sure you ran into this and seen this a lot of times. So if I wanted to see details of a particular volume, I would type cinder show and ID. And it's going to tell me who the tenant was, what type it was, status, and there's not a whole lot else available. Have you deleted? Can you delete all of them? Okay. While Angela is helping us out with the cinder, we're going to move on to glance because right now, you've seen the commands to create it. You have not seen how to attach it to an instance on command line, but we'll try to do that after everything is cleaned up. So Dana mentioned a little bit about glance, and glance is where all of the images are storage, the catalog, and you can create your own images and register and provide them to users. So you may or may not have a file. I think, Angela, they have files, right? The image files? Yes. All right. So if you go to the images directory on your terminal, you should be able to see some images, and all of them are hopefully very tiny. Okay. So you should have just one image. So to see what images are available, you can type glance image list. And where have we seen this output before? I typed glance image list. Have we seen this before? Nova image list, right? How is that possible? Well, both of them give you a list of images, except the glance command will give you more detail. And the same if we do glance image dash show and the image name, it will give you a little more information than when you did with Nova. So let's see what Nova would give us. So same commands or almost same commands for Nova and glance, except the glance one will give you more information about each image. To create an image, we're going to use the super long command that I encourage you to copy, because you have to provide all the information like name and disk format and whether it's public and where the file is. And this command has a lot more options. If you look at the help command, you will see all of the different options that are available. All right, no such file. Yes? All right, so we're already over time. I don't think there's anyone after us here. We will continue if you guys are interested. If not, make sure to take some handouts. Do at home at your hotel or in your free time. But yes, everything that we did is available on the class site. And the lab will stay available for at least a week. So you can try to do all of the exercises yourself. There is also PDFs with exercises and with solutions. So you're not stuck just looking and trying to guess. What is it that I have to do? Does anybody have any questions? I can go back and try to do more of the Cinder. Yes? I'm sorry? IPv6. Is it available in OpenStack? I believe so. No. Well, so you have to SSH into a server where OpenStack is installed. I think you could potentially install a Nova client and just source it and then connect through the Internet. So yes, you could potentially do that. Agla. For Glance, what's the difference between the disk format and the container format? Disk and container format. So I think right now, for OpenStack, you can just have the disk, the containers. I think that the Docker, are you talking about Docker containers? Glance. Oh, Glance. Okay. So we have a disk container and we have a disk image. The disk container, if you guys are familiar with OVFs, or something that actually, if you were to crack open a disk container, there's no data in it, right? It's just the information regarding the actual VM itself. Information like types of NICs, maybe perhaps a number of VCPUs. Typically in OpenStack, what we want to do is specify bear for that type of container. Another type of container would be like an AMI for Amazon compatibility. But in the case of OpenStack, what we want to do is specify bear. But in the case of OpenStack, typically we are going to specify bear for the OVF. The actual image itself is where the OS is. That's where the actual laid-down OS is. Bear just means generic. It means that it just, you just say bear. Typically an OpenStack. And also OVF is not currently compatible. OVF containers are not currently compatible with OpenStack. Okay. This vanilla OpenStack, regular openStack, you can't actually have it read an OVF file and apply those settings. Do we have any other questions? Do we have someone after us in this room? Yes? Yeah. Give yourselves a round of applause. Thank you so much. So the question was, can it be on day one of the next summit? Tweet at OpenStack and make that suggestion. I encourage all of you to tweet at OpenStack and make that suggestion. Seriously, it's a good suggestion. Anyone for coming? We'll keep the materials up. We will stay here and answer your questions for as long as there are any questions.