 All right. Good afternoon. Thanks for coming out. Looks like we've got a couple of people here. My name is Rick Ashford. I'm with SUSE. We are going to be talking real quickly today about a tool we have called SUSE Studio. A lot of the talk that's going on right now inside of around the conference and what not is around deploying your OpenStack and getting your OpenStack configured up and ready. This tool addresses the situation of once you get that up and running, you need to have workloads actually running in your cloud for the cloud itself to be useful. And typically what happens is that because the image creation process is really cumbersome, typically what will happen is that you will have a your provider will get some sort of just goldmaster OS image and stick it into your Glance repository. And then when you as a user going to try to use it, you then have to launch up a new instance, install your applications, do all your configuration and then you're ready to go. What Studio will do is actually lets you integrate those applications directly into the images and very quickly and easily build those images so that when you go in, you can instead of saying give me a SUSE server and then I'm going to go install Oracle on top of it or I'm going to install Postgres or I'm going to do whatever. You can just simply say give me a Postgres server and it will drop it in there fully configured and ready to go. So here's what this looks like. All right, so let's go ahead and create a new appliance, click on the link. So we've got a couple different options up here. We have our juice option, which is just enough OS, literally just barely enough operating system to be able to boot. So in and of itself, it's not terribly useful. But what it is useful for is that you can then simply layer on just the pieces that you need to be able to run your particular application. This makes your footprint for the actual OS very small. It also makes auditing and security much simpler and easier because you don't have to worry about a port being turned on for specific service if that service is never installed in the first place. So we're going to start there. We also have options for doing just a standard server build. It's got some more tools and stuff built into it. You also have the ability to do desktops. We're going to do a 64-bit juice image and we're going to call this our summit server because I'm really creative. So we're going to watch it spin for just a second. We're going to come up. And so what it's going to show us right here is some information about our system. You can see right here, it'll tell us the name of the image that we're building. It'll also tell you how big of a download it is, compressed, so you can know what kind of bandwidth requirements you're going to need to be able to pass it around. You can also see this uncompressed right here. That represents the minimum amount of physical disk space you need to be able to run this image. One of the nice things about Studio is that typically when you're doing some sort of build process, you typically have to have a one-to-one mapping between the target size of your disk and the size of your image. So if you're going to be targeting a 10-gig disk, you have to build a 10-gig image. If you're going to be targeting a 30-gig disk, you have to have a 30-gig image. That does not scale very well for the cloud. I mean, if you have 1,000 people request a 30-gig image simultaneously, you've got to copy that 1,000 times across your network at the same time. That's not useful. What Studio does is it keeps it the bare minimum size you need to be able to hold it, and then the first time it boots, it will simply detect the available local storage and expand out to fill that space that's available to it. All right, and we can see any packages that have been selected. We've just got the bare bones ones that we have selected. So we have the ability now to add in software. We can see right here I've got just the standard repositories that make up SUSE Linux Enterprise, and I can go in and I can select packages if I want to do a port scanning appliance. For example, I can search for the in-map package, and I can find it. If I want to, I can click on it, and I can look and see a nice plain text description pulled from the RPM about what that package is and what it does. There are thousands of packages in Linux. I've been working with Linux for about 13, 14 years at this point. I know a lot of the packages, but I don't know all of them. It's very nice to be able to see what these things actually do. And then if you want to add it in, you just simply click the Add button. We also have the ability to add in your own customer repositories. If you have repositories with packages that you've built for applications within your own company, you can add those repositories in and simply have those become part of the build process. You can also, if you have individual RPMs, you can upload those, and those can be part of your appliance as well. One other neat thing we have right here is called Patterns. A pattern is a group of one or more packages that fulfills a specific role for your server. So, for example, you can say this is going to be an Oracle server, and you can add in the Oracle pattern, and it'll actually, for those of you who have had the lovely joy of installing Oracle on Linux, you got that 25-page quick install manual. This will do about the first 20 pages for you. All of the kernel tweaks and the user account creation and all that kind of fun stuff that has to happen, that gets done by that particular one. In this case, we're going to do a lamp server. We're just going to do a simple web stack so we can see what this looks like. If I click on the pattern right here, you can see that by default it installs just Apache. If I want to add in, say, the ModPHP, ModPython, or MySQL, I do have the ability to add in this recommended additional software. We're going to go ahead and do that, and it'll simply be added in. You can see over here on the side, it will keep track of all the changes that I've made to my system as I've been building it. So, next up, we're short on time, so I'm going to have to speed up a little bit here. You can set up your time zones, your network, your users. If you're going to do local account authentication, you can set up your firewall. This is actually surprisingly really popular amongst us admins. You can actually put custom boot splash logos and screens up there, so you can put the company logo, for example, so that every time a system boots, it has the company logo. If you have a webcam and you want to take a picture of your face and put it up so everybody has to look at your face every time the server boots, you can do that. We let you do that. All right. You can add in your own custom end-user license agreement. So, if you want to have it, say, you must acknowledge that you will obey all of IT's security policies and procedures, and oh, by the way, you have to bring donuts every third Friday. You can add that in here to a EULA, and they have to accept it every time they launch a new instance of this server. If you have a MySQL or a Postgres server installed, you have the ability to upload a dump file for MySQL, set up your users so that the database can be ready to go as soon as you fire this up. If you're going to do some sort of a kiosk type thing, you can tell it to automatically log in, user tux and launch Firefox in kiosk mode or something like that. We're going to kind of blow past that right here. Once we get into the appliance section, we can start saying, okay, if you're doing a VMware, a VMDK image, or a Zen image, it will actually create the config file, whether that's the VMX or the XML, and so you can start saying, okay, how much memory is going to be allocated to it? What size disk do I want to have allocated to it? If it's going to be a disk image, how big of a swap partition should it set up? You can set up your LVM inside of here. You can tell it to integrate with SUSE Cloud, which is OpenStack-based, and what this will do is enable you to do the SSH key pair injection that you need to be able to do the passwordless authentication. You can also integrate with SUSE Manager and tell it to register automatically against SUSE Manager, which is a system administration tool that we provide that can manage any RPM-based Linux distribution. And then once you get all that kind of set up, you can do scripting. So you can tell it to run scripts at the end of your build. You can tell it to run a script whenever it boots, and that can be either every single time it boots or the first time it boots run this particular script to do whatever it is that you need to do. So you can be very flexible in terms of how you're going to configure this up. Sometimes we've talked about installing packages or applications through RPMs. If you have a tarball-based application, you can actually upload this here at the overlay files, and we'll just simply drop those into the file system at any place that you specify. You can also create config files and tell it to have a... This is my PAM authentication config file, so it will automatically join up to an Active Directory domain through my ILDAP. You can put those configurations inside of there. Then when you get to the build section, this is really one of the really neat part. Basically, you can tell it from this single configuration right here to build for a wide variety of targets. So, for example, in here, we're going to do it as a QCOW2 image, which is useful for KVM and the cloud and OpenStack. Let's go ahead and kick this off. And so this will sit here, and then it will go out and build it in the background. And then I can actually tell it today, okay, build it as a physical disk image as well. Build it as a VMware image. I can tell to build it as an Amazon EC2 or a Microsoft Azure image, and then be able to upload those into those particular clouds. And then we'll go. In the interest of time, we're going to cheat a little bit, and I'm going to cut over to one that I already have built. Jump over here. Somebody whistles the jeopardy theme. There we go. All right. And so we have a version that's already been built right here. One of the neat things you can do also once you have it built is it has what's called a test drive feature, where I can click Test Drive, and it will actually launch it up momentarily. It's running off my laptop, so it's a little bit slow sometimes. It'll actually launch it up as a virtual machine on the SUSE Studio server, and then you'll be able to watch it boot up. You can see right here on the screen. You can actually watch it boot up. You can log into it. You can turn on networking, and then you can actually log into it. You can SSH across to it. You can copy files into it, and then as you're doing that, it will keep track of all the files that are modified during your particular session. As a result, you can say you're doing a large, say you're doing an Oracle one, right? And you can get your database all completely set up, copying your dump files, start it up, make sure TNSListener is set to start up correctly. You can get in all of your data, pre-populate it, set up your application, and then you can tell it to pull all that back in as overlay files to your system, and then it's ready to go for you. At that point, then you'd have to rebuild it with those particular overlay files in there, but it'll give you the ability to persist that. So you can be very granular and have a whole lot of control, absolute control over exactly how this is going to be built out for you. One of the other neat things that you can do in here, once you have it built, you can tell it to, there's a supportability report where it'll actually tell you, okay, these are the packages that you installed that are part of the SUSE Linux Enterprise Distribution and are covered by your SUSE Linux support contract. These are the packages that you installed yourself. These are the ones you're going to have to have some form of either self-support or some third-party support contract in order to get it supported. And it's very nice to give you that clean distinction between what's supported and what not. You also have the ability to clone. So if I come in, for example, and I'm the IT people, I can come in and create a base server that has all my configurations for hooking up to the network and authenticating and doing all the security and all that kind of fun stuff. And then subsequent images can simply come over here and say, okay, we're going to clone off of the base server and now we're going to set it up as a Tomcat server, or I'm going to set it up as my Apache server and you can be good to go at that point. You do have the ability to share these. So there's a gallery built into here where you can share to a public gallery. You can also share images over to specific users. And one other neat thing that you can do, coming over here, we're running almost out of time right here, we have what are called webhooks. So a webhook is every single time a build completes, it will send a JSON message over to some listener that you have that notifies and says, okay, I just built this image. It's like this version level, it's got this name. Here's the download link for it. It's got all the information about that image. So you can, for example, have on your Glant server. You can have a listener sitting there, just a simple Ruby or Python script. It intercepts that JSON message and then says, oh, okay, there's a new build. We'll go ahead and download it, import it into Glantz, and then you have an automatic synchronization. As soon as you build something in the studio, it'll just simply show up in your Glantz repository and your systems will be able to use it to grow a wonderful, you'll get a promotion and a raise and sunshine and lollipops for everybody. So that in a nutshell is SUSE Studio. Thank you for your attention, and we appreciate it. If you have any further questions, please feel free. We've got a number of SUSE people around here. You've got a question? The question was how much of this stuff can be triggered from the command line. The answer is pretty much all of it. There is a full Rust API for being able to interact with Studio, and you can script this all out. For example, we had our mono team that does the mono plugin for being able to run .NET on Linux. They actually wrote a plugin for Visual Studio that you could write your .NET code in Visual Studio and click a button, and it would build you an appliance in the studio and inject the application into it, and you'd have a custom software appliance running your .NET code on Linux.