 Are we on? Okay. Super. We're going to wait another two minutes just to let people make their way into here. By the way, if you're going to be trying this at home, I recommend a blog post I wrote over the weekend. It kind of goes through step by step and has the prerequisites for what you'd be needing to do to replicate what we're going to do today. It's available at our blog. If you go to gridcentric.com slash blog. It's just the most recent entry. Also this is apparently an hour and a half long workshop, so we've got plenty of time. We're going to see if we make it the whole hour and a half, but probably try and wrap up before lunchtime. Since we have so much time, if anybody has any questions, you can just kind of shout them out or walk up to the microphone in the center of the room and ask them. Okay. We'll go ahead and get started. The subject of this talk is Windows on OpenStack, running Windows on OpenStack, and kind of one of the things that can go wrong and hopefully identify some ways that you can avoid some of the pitfalls and run Windows with ease and efficiency. First a bit about me. I'm Tim Smith. One of the co-founders and head of product at a company called Gridcentric. We just turned four this month and I've spent the last four years heading up product development there and engineering. I usually get tasked with doing our Windows deployments and POCs for customers, so I probably have the most experience in the company running Windows on OpenStack. We'll just get started. So the talk, again, is about running Windows on top of OpenStack. There are some folks that are specializing in running OpenStack on top of Hyper-V, running OpenStack on top of Windows. This talk is more about the other direction of running Windows desktops and Windows servers on top of an OpenStack environment. For this talk, we're going to assume that the OpenStack environment is based on KVM. So there are probably a lot of differences between running Windows on OpenStack on Windows. We're not going to cover those today. We're going to assume you're just working with a kind of bread and butter OpenStack distribution on top of Linux on top of KVM. We're going to go through a number of topics and as we're going through these, I'm going to kick off an actual Windows install, which will hopefully work and hopefully finish by the time the end of this talk is done. We're going to use that as kind of a framework to go through the different decisions and different things you need to think about as you're running Windows on OpenStack. At the end of the day, what we're looking at getting is that when you type Nova image list, you have your Windows image in glance ready to be booted up and ready to be run. So I'm going to kick off at the very beginning just the basics of bringing Windows into an OpenStack environment. The first thing you need to do is actually install Windows because there's no, there's really not publicly available glance ready images for Windows. I have been informed by the cloud-based folks who are experts on a lot of things, Windows related and cloud related, that they have just now released and given permission by Microsoft to release Windows image that you can import directly into glance, but assuming you're not using that, you have to go through this kind of install process where you start off with the Windows ISO and kind of move your way towards an actual disk image that you can then shove into glance. I'm going to go ahead and kick that off. Now I'm going to be in the background. I mentioned we have a blog post that goes through the step-by-step things we're going to do to create this, and I'm just going to go ahead and start running through these. One of the things that's important to kind of recognize is that you can't currently easily attach a CD, an ISO image to a Nova instance as you're booting it. I understand this is something that's being worked on, but in the meantime we actually have to have access to a physical compute node that's similar to whatever physical compute nodes we're going to be running Windows on, eventually specifically the CPUs need to be similar or the exact same. The first thing I'm going to do is just create a QCao 2 image, and this is a file that acts as kind of a virtual hard drive. I'm going to give it a lot of space, typically maybe your Linux instances you might typically be sizing in the 10 gigabyte, 15 gigabyte range, but for Windows and for Windows install you usually need significantly more. I'm going to make it 30 gigabytes large, and that operations really quickly because all it does is create a small little file that looks like a 30 gig hard drive. The next step I'm going to do is actually boot a virtual machine that is going to have that empty hard drive file as it's hard drive, as it's kind of C drive, and we're also going to plug in as CD ROMs, the Windows install CD ROM, and another CD, the Windows install CD, and another CD that holds what are called para-virtualized drivers, so I'm just going to kick that off. The importance of that para-virtualized driver bit is that when you boot a VM, Windows doesn't know that it's operating in a virtualized environment, and so if you just emulate your hard drive and your network cards, you're going to end up with really, really slow performance, so in order to make this boot process go faster and ultimately in order to make the runtime performance go faster, we're going to be using these para-virtualized drivers, because we want that at boot time, we need to actually plug in that second CD and use those drivers to boot. So what I'm going to do now is just VNC into that VM as it's coming up, and if you've installed Windows, you're kind of familiar with this screen. So what we're going to do for this workshop, I'm going to go through these first steps and then it's going to go into that phase where it's installing everything and that's going to take a while, so we'll just jump back to covering the concepts at that point. One of the first things that Windows is going to want to do when it's installing is ask you where you want to install to, and at this point in the install process, because we're using that para-virtualized storage device, Windows doesn't know how to talk to it quite. So one of the first things we're going to have to do is actually go into that CD and give it the appropriate drivers, and again, if there are any questions at any point, we're going to just shop it out. We're installing 64-bit Windows 7 for this workshop, and we're going to pick the scuzzy controller, which means the disk controller, and once that's loaded, Windows will be able to see that para-virtualized virtual hard drive that we created, and we can kind of kick off the rest of the process. Well, we're, okay, there we go, I'll just click Next. We begin this process of copying the files off the CD onto the hard drive and expanding them and so on. This is going to take a little while, so while that's going on, I'm going to switch back to these concepts. Before I begin that, can I just ask the audience how many of you are running, or how many of you have an OpenStack install right now, if you could just put your hands up, it looks like about half. How many have been able to run Windows or running Windows on OpenStack right now? And how many of that, I guess this will be two separate questions, which fraction of you are running Windows as a desktop? Okay, so a few, just a few, mostly server than I'm going to say. So one of the differences between running Windows in a cloud environment like OpenStack versus running it on just a kind of a bare hypervisor like ESX or KBM or Zen server is that the kind of provisioning model for VMs is different in a cloud environment. In a cloud environment, you kind of have this concept of a catalog of disk images that you can then spin up multiple virtual machines from. Whereas with a more traditional hypervisor, you typically have a kind of a one to one ratio between disk images and VMs. And where that complicates things is that unless you want to have your catalog full of every single of the disk image for every single VM you're going to want to be using, you kind of need to create these disk images in a way that they're kind of generalizable and when you actually boot them up that you can actually customize them. There's a bit of customization that can go in before you generalize them. Is anybody familiar with the sysprep tool and creating what they call answer files? So sysprep is this tool that'll take a Windows install and kind of roll back the out-of-box stuff that's been done to make it a kind of generalizable disk image that you can take and go and install on other machines. In our case, we're going to be taking it and installing it in other VMs. And one of the things that you can do with sysprep is kind of customize the startup experience when you boot those machines for the first time. And the way you would typically do that is using something called Microsoft System Image Manager, which I've got loaded up here. Just to kind of give you an idea of some things you can do. And you're probably not going to be able to see this from the screen, but you can open up firewall ports. You can start services running like remote desktop. You can set the system language. You can set the time zone. You can create accounts. So you can do things kind of at this general stage that are going to then happen as the machines booted for the first time or the VMs booted for the first time. So the significance of that is that there are two kind of use cases for running Windows on OpenStack. The one use case is as an operator, you want to create Windows images that your users can then boot up and customize and enter their own product keys perhaps. But they're not going to be able to have actual control over uploading their own images into Glance and then using those. And for those cases, you do want to actually run through this sysprep procedure so that the images that you're putting into Glance don't have your own customizations or don't have, they're not specific to your organization because other organizations or other groups in your organization are going to be using them. That's the approach that we're going to be going through today. We'll just check up how we're doing there. The second use case is where you as the user are kind of also the operator or you do have some control over what you're able to put into Glance. In that case, you know, you probably don't want, you probably want to perform customization on your images before they're put into Glance so that every time you boot a VM, they're kind of already customized. And for that, there's a pretty handy tool called CloudBaseInit, which kind of mirrors the functionality of something called CloudInit that's typically installed in Linux virtual machines. So CloudBaseInit and CloudInit, they both take advantage of something called the metadata service, which is something that runs in Nova that when a VM comes up, it's able to go through HTTP to a kind of special address and fetch information out like the admin password and the host name and so on. And it can also fetch out custom boot time scripts that you want to give the VM to run. So this is typically, if you were running in that second case, you want to have it so that as you're booting your VMs, you want to be able to do some customization and you want them to get their own unique host names and you want them to be able to join domains, join your Active Directory domain and so on, you would use something like CloudBaseInit. Are there any questions so far? Check back on our Windows install. Okay, so probably getting to the point where we're actually going to do something there. So on that topic of these dual use cases for running Windows in the Cloud, I'll touch a bit on licensing and license keys. And I just want to clarify something ahead of time that the license and the key are actually two separate things. The license is this agreement you've made with Microsoft that in exchange for so many dollars you're able to run so many copies of Windows. The license key itself is this digital fragment, this string that you put into, that you enter into the wizard that convinces the software that you actually have that license agreement with Microsoft. And there are really three types of keys. One is the one that we're probably most familiar with if you're just a Windows user at home. You install Windows, you enter your license key off the back of the manual. And that's kind of a one-to-one unique license key that says you're allowed to run one copy of Windows and this is that copy. There's also something called a multiple allocation key which is similar to that except Microsoft servers will accept that license key multiple times before rejecting it. And finally there's what's called a volume license key which is something that's kind of baked into a whole bunch of special builds of Windows whereby you say I've got an agreement to run some large number of Windows instances and there's infrastructure that you need to set up in your network to allow those instances to come up and authenticate and typically the first two types of keys are going to actually reach out to Microsoft's activation servers and do that activation. The third type of key is something that would be in-house. You'd have your own key management server. It's called that your VMs would be talking to you directly. Where licensing keys, license keys start to get a little bit messy in a virtualized environment is that if you're using one of the first two types of keys a lot of times as you're creating multiple VMs with that same key baked in you'll over time Windows will say okay the hardware has changed, the network devices have changed, things have changed and I need to reactivate and in the first case you may end up having that key not work. In the second case you may end up driving your allocation count up, your Mac count up. Just a quick question for the audience is anybody had success using Macs in a virtualized environment? We typically recommend that our customers use volume licensing keys just because even if the VM decides it's its own unique thing and it needs to reactivate it can just reach out to the key management server on your network and do that perform that activation. I've not, personally I've not heard of anybody wanting to run Macs on a virtualized environment because if you run your Mac count out, I mean Macs are expensive and if you run your count out you have to call Microsoft and explain to them what happened and nobody wants to do that more than once. So we'll just check on our install, okay, still going, are there any questions so far? Yes, the sound part, right, so that's a good question and that's, I want to speak to that in a little bit about remote access, were you using remote desktop or using, so using remote desktop from a Linux machine? That might be where you run into trouble, so I typically use either the free RDP or the Microsoft remote desktop client and the sound usually carries through, if you're using something like VNC there's no capability for sound so if you're logging into your machines via the Horizon dashboard, there's no capability to get that sound to you. It may be in your RDB client configuration that for some reason or another sound isn't available, typically you'll be able to see if it's a kind of client side problem or a VM side problem based on whether or not the sound icon is xed out and if that's the case that means something is signaled to the VM that sound cannot work right now. If you see that sound icon and you can change the volume and so on then it's probably something client side. Yes, I can, I certainly can. I don't have first hand experience with that, so the question was the assumption here is that we're starting off in a virtualized environment so I'm doing this install to a virtual machine and I'm going to take that image and import it into Nova. The question was can I speak to taking physical images and importing those into a virtual environment, P-to-V as it's called and what's available is something I think called WinPE which is a, there may be people in the room actually that have much more experience with this than I do but there is a Microsoft tool that you can kind of use as a pre-boot environment so you get your physical machine set up or maybe it's already been set up for years and years and you use this kind of pre-boot tool to boot into and it knows how to take what you have on your physical hard drive, your physical storage and pull that out as a disk image and I'm not sure what the intricacies would be in trying to take that image and then run it on completely different hardware. So the advice is to load your PV drive first and make sure that those are installed so that when you actually do boot it on the virtual host or as a virtual machine your devices will actually work. Specifically I would guess your hard drive is probably the most important thing that needs to work and would you happen to know if there are any complications from moving between different kinds of CPU and so on? It's a mess. Yeah, yeah. Okay. Right. Right. Right. So the advice from the audience is to, well, that it's a mess, it's hit or miss and you may have better luck instead of going straight from physical to virtual into Nova if you're running on say KBM to go through the VMware conversion tool and then from the VMware conversion tool possibly to a Nova image. Sorry. The newer Semantic backup tool does a better job is the advice there. So it removes your hardware and kind of knows how to, I guess, leave Windows in a state that it's going to, instead of assuming it's running on a bunch of stuff that's not there anymore, we'll go ahead and discover what it needs to do. So we've finished copying all our files to disk and we've rebooted and now we're at the point where we've got to make a decision and this decision is based on those, going back to those two use cases for what you're actually going to do with this image. If you're the operator and you want to make a generalized image that your users can boot up and then customize completely for their needs, you're going to go in one direction here. If you're the actual end user and you just want to, and then you're not going to be doing that, you just want to shove this thing into glance but you're comfortable creating local user accounts and doing these settings before you import it, you take another course and that course, that's the kind of course, and if you looked at the blog that's described there where we'd actually create a user account and we'd install the PV network drive, well I guess we're going to do that. We'd create a user account and we'd set up remote desktop and then we'd shut the thing down and then do the import. We're going to just go through the first approach now which is to create a more generalized image that we could then turn over to our end users and they can customize it how they want and because we're doing that we don't want to do stuff like create a local user account because that's going to be lingering in their image when they go and use it. So we're going to do what's called entering audit mode and to do that we need to enter a special key combination which is, oops did I do the wrong one? No that's not it. We need to enter a special key combination which I actually can't enter through VNC so I'm going to do it with the on-screen keyboard and that key combination I believe is control shift F3. That's right and thankfully it gets rid of the keyboard because we don't need that anymore. So what that's going to do instead of normally what would have happened there was we would have created a user and if this was a retail install of Windows we would have entered a license key, we would have set our time zones, set a number of other things and then gone and opened up remote desktop ports if we wanted to install the per-virtualized network driver and then shut the thing down and pushed it into glance. But instead we're going to enter what's called audit mode which means we kind of skip that user creation process and everything we do really any kind of customizations we make unless we're careful are going to get lost because at the very end of this experience, at the very end of this process we're going to tell Windows, generalize this image, remove the product key if it's a retail key, return it back to the kind of shrink wrap state. So when I kind of go back to this tool, this Windows system image manager, what this tool can let you do is again enable remote desktop, open up firewall ports and so on and the end result of that is what they call an answer file which is this XML file that has all these custom settings that you've given. And in order to use that file, actually first I'm going to go ahead and open up the device manager to enable to install the per-virtualized network driver. It's actually pretty snappy for a VM running in Toronto. We're going to need a browse, that CD is still plugged in there. I happen to know it's on the eDrive and then we found that right away. I was going to ask that nobody spams my machine but that's right, it's back in Toronto. So good luck. So now we have a network driver installed. One of the things that we can tell Sysprep to do in this generalization process is to persist the drivers and driver settings that we've installed. Incidentally one of the other things you can tell Sysprep to do through this answer file is set your IE home page to something other than MSN and not ask you to turn on suggested sites and so on. So that's kind of a bonus. You can get really creative, it's actually really complicated, really featureful tool. I'm just waiting for this to load up because I've gone and created an answer file that is not ideal but it'll at least work pretty well for the purpose of this demo. I put it on GitHub so that I can just go ahead and suck it down on my desktop. So we've got our network driver installed, we've got our answer file pulled in and we're now ready to run Sysprep to generalize this image which means the next time that it boots up it's going to run through that whole out of box experience state again so that when somebody actually does a nova boot from this image what they're going to get is or normally would be that whole wizard. In my answer file I've changed it so it doesn't ask them 20 questions about time zones or anything like that but it's certainly possible or in general this Sysprep process is how you would do that. Get the help window up so we can see. So Sysprep if you remember when we first booted up this machine we're in audit mode and so Sysprep came up with that window asking us what sort of Sysprep we wanted to do because we're going to give it an answer file we need to run it from the command line. So we're going to generalize it. So this is typically one of the configuration settings in the answer files whether or not you want it to kind of rearm the system or wipe out the activation, any activation status that's been set. So I'm going to tell Sysprep to generalize the image to the next time we boot we want to go back to the out of box experience OOBE to shut down when it's done Syspreping and to use that answer file that I pulled down. So this will run through that answer file and then do all the Sysprepping and eventually this window will die. While we wait for that I'll just go back to the presentation. So I promised to talk a bit about storage. This is kind of one of the good bad and ugly parts. This is one of the ugly parts. This is actually a measurement I took this morning. I was curious to know how many Iops, how many input and output operations Windows 7 does when it's booting on a virtual environment. So this is actually a measurement taken from the compute host as Windows 7 is booting. So these are actual operations done to the storage device on the compute host between the time we set Nova boot and the time that we're actually able to log into the machine over remote desktop. It amounts to about 75,000 Iops which is, I mean just to give you kind of an example your typical enterprise class server hard drive spinny disk is probably capable of around 400 to 500 IO operations per second. So you'd spend, that hard drive would spend two and a half, that's right, two and a half minutes doing nothing but helping this little VM boot. If you've booted Linux instances in Nova you kind of notice they come up really quickly and they don't take two and a half or three minutes, three minutes in this case and this is actually with an SSD. So that's what's known as the boot storm I guess. Actually the boot storm is commonly when you're booting up a number of these Windows VMs. So that 75,000 number goes to maybe 750,000 if you're booting 10 of them or 7.5 million IOps if you're booting 100 of them. There aren't too many mitigation strategies in the open stack realm for this. One is to, I guess there are really four, I've listed three. One is to just buy lots of very fast storage. The second is to boot your VMs very rarely or just don't boot so many, I guess would be option four. The third is to use something like live images. I don't want to make this a sales pitch for what we do. So I've just got one slide and I'll go through it real quick. What we do is we allow you to take a whole system state snapshot at the login screen or at whatever point the VM is ready to do work and then when you need new VMs you can spin those up from that snapshot from that live image and they just go ready direct to working. I can answer questions about that later or you can go buy a booth. I encourage that. So the idea behind live images or the snapshotting thing is that this is for more short-lived VMs and you typically be doing your Windows updates kind of before you create the snapshot and then maybe do that every Friday or every time you need to. No, not necessarily. A lot of that time. So it still takes, even on an SSD on our hardware which is pretty decent, it still takes about three minutes to boot that and our SSDs are capable of much more than 500 IOPS. So you can, I mean, there are a lot of different ways to play it. I guess it depends on how much time you have and how much money. But typically if you have SSDs they're not going to be saturated by a boot. The Windows will be using the SSD at times when it's booting but for the most part it will be pretty free. So I was going to talk a bit about integration with AD. I mean we don't, we just give the compute node SSDs and we just let it figure out what to schedule. So AD integration with, actually I guess we can go back to that VM, or actually that VM is now shut down and ready to be imported. So I'm going to go ahead and add it to glance. So this, we're at the point basically with that image where it's, I mean we're ready to put it into Nova and tell our users, hey you need Windows boot from this disk image. So that's pretty cool. Or we're waiting for that. I'll go into a little bit about Active Directory. So you can actually set up and you can set up unattended joins for Active Directory as part of your generalization, specialization process. You can do that with the unattended XML file. The problem there is that typically your Active Directory machines need to have unique machine names which means you actually need to bring them up, change the name and then, and do the domain join and then reboot them again. Because they should back up a bit. I mean kind of one of the, one of the things that's important to realize is that when we stuff this image in, in glance it either has no machine name, it has no computer name in the case of this generalized image that we've put in or it's got whatever computer, whatever name you've given it and if you've gone through that kind of more specialized approach. You can use stuff like cloud base init to actually use, use metadata boot time to tell the VM, hey this is going to be your unique machine name and here your, your Active Directory credentials. But the important thing to, the important thing is that you're probably looking at another reboot. The actual plumbing of the, of the Active Directory server stuff, you essentially just need to make it so that the VMs are able to resolve and, and contact your LDAP server. Yeah, right, right. I mean specifically, specifically, so in order to contact the DC, I mean there are two separate issues that can come up. One is that they won't actually be able to route to the, route to whatever port they need to on the DC. And the second is that they won't actually be able to resolve the DC because they're, and this, this issue is the same issue with key management servers as well that, that Windows has, has a special way of figuring out what are the addresses of the services that it needs to contact. And so it, it looks for these special DNS entries, they're called these serve records. We've had to, in, in some cases we've had to put the, the serve records, we've had to kind of replicate the serve records in our DNS mask configuration files in the cases where, in the cases where the VMs were using different kind of upstream DNS providers, or different upstream DNS servers. For the plumbing part, it, it does get tricky and it does depend on the, the configuration. I mean if you, yeah, in general you need to, you'll need to have some kind of tunneling or, or, you know, potentially use something like quantum to, to provide some kind of routable network so that the, you know, the VMs are able to do that, able to, to make those connections to the, the, the DC. We, we haven't actually had a use case for that, yeah, yeah. The question was have we, have we used, have we had success using floating, floating IPs with the system? Yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah. And we've had success using floating, floating IPs with the system. And we haven't, we haven't quite had a use case for that yet. So I think we can, okay, so we've got our image imported, and we can actually see it in glance now and I'll just bring this up for the first time. What it'll take, That will take about three minutes until all in all. I don't know. So on the topic of remote access, there's not really anything available. I mean, Citrix End Desktop doesn't really support, does not support OpenStack. VMware View doesn't support OpenStack. So you kind of love to more, I guess, less enterprise oriented solutions. The default solution is to just use the VNC console in Horizon, or to otherwise pipe a VNC session through to the Compute node and use VNC. VNC is kind of a, I don't know how to phrase this. There are probably better protocols out there. And I mean, even just the RDP server that comes with Windows is actually a much better protocol in terms of optimizing transmission and being able to route stuff like sound and so on. There are also some other kind of open access protocols out there that I would say that in most widespread uses is RDP. And especially when you're running Windows in a kind of a cloud environment, I'd say probably the niftiest solution is to run something like free RDPs, HTML5, RDP client. So you can set up your Windows instances, and then you can have another VM running this kind of RDP portal. And then all you need to do is point a web browser to it to actually log in. And it'll do the plumbing on the back end. This is, again, with reasonably fast hardware. But still, I've clocked it a few times, and it takes about 180 seconds. Are there any questions so far? Yeah. Right. It's widely regarded. So the question was, earlier when I installed the Paravirtualization drivers, why was it the Red Hat Paravirtualization driver? It's pretty widely regarded as being a stable PV driver, a stable Paravirtualized driver, or that pair, the storage and the network driver. We have to install it because we're giving the VM, we're not giving the VM emulated hardware. We're not kind of plugging in these devices that are acting like network cards or storage devices. We're kind of exposing a more raw Paravirtualized interface to them. So Paravirtualized means that the operating system kind of knows that it's a virtualized device, that it's not an actual real piece of hardware. So it's not going to do all the initialization and stuff that it would do. So it's not fake hardware. It's nothing that actually looks like hardware. It's just a kind of defined interface. And when we installed those drivers in the VM, what we were doing was giving the operating system a way of talking to that defined interface. That's right, that's right. All that part is abstracted out because that network driver that we gave it is just a piece of software. And on the other side, on the actual Nova KVM side of things, we also know it's just a piece of software. And the hypervisor is going to take care of making use of kind of taking whatever traffic comes out or whatever disk requests that come out of that and doing the appropriate thing with them. Absolutely, absolutely. For the most part, no. And in fact, you'd use those same Windows 7 drivers. Yeah, Windows 7 and 2008 are very similar in terms of operating in an open stack environment. So our VM is ostensibly up. And we'll just go ahead and log in. So the single dialogue that we still have to do is choose the network type. And we now have Windows instance running in open stack. I'm going to just open it up to questions. That's really all I had for this session. So if there are any questions from the crowd. So one of the things I plugged into that answer file was an administrative password. So you can do that. The alternative would have been if we wanted to let the user set that up that whoever can log into the VNC console would just go through that create user account process that would normally come up. So in this case, as I said, we wouldn't use the answer file that I used in production for reasons like that. But otherwise, this image, let me bring it back here. So this image, we can reboot it. Some of the things we can do, actually, through RDP, we can't reboot it. But if we went into the VNC console, we could reboot it. Or if we issued the appropriate PowerShell command. So if I make changes to this instance and then I reboot it, say, because I ran Windows update, would those changes be lost? The answer is no. You can make changes to this image. You can reboot it as many times as you want. The only thing is that if you Nova delete the image, then you will lose the changes. So if we go to Nova and say, delete this server, delete this VM, then we'll lose everything we've done. One of the things you can do that seems to work is create a disk image from this VM using the Nova image create command. And that'll attempt to create an image containing all the changes we made that we can then boot other machines off of later. Windows 8 and Windows 2012, yeah, in general, yeah, with forks, yeah. And the PV drivers are already available for those as well, so you can run through basically the same process. Sorry, I'll take your question. So at this point, if you'd set the machine up exactly as I have, the first thing I would probably do is change the administrator password or disable the administrator account and start creating users through that. There's a snap-in that you can go and create new users and so on from. So there is also, if you use the cloud base in it, you may have user creation functionality, but I believe it's only one user you can create. And I'm not sure if I guess you can actually choose which local group to put them in. So you can define an administrator user. And then when you boot the machine, so Nova creates an admin password for every VM, it'll plug that in. And the cloud base in it will be able to take that and insert that password as that user's password. I mean, everything else, you're probably looking at something like custom scripts to do that or right, right, right, right, exactly, exactly. I'll be putting those up. I think there's going to be a slide share for all the presentations here at the summit, at least there was last summit. And so those will be up, I would guess, later on this afternoon or tomorrow. And I'll definitely, and I have some references and links to some other. The question was how to get the slides. These will be uploaded, I think, to the summit-wide slide deck repository later. Absolutely. So if you don't want to type all this in, you can just go to gridcentric.com slash blog, and it's the first entry. Sorry, you had a question as well. I just want to see your contact info. Oh, sure. I'm Tim Smith. Whoops. And let me throw that up bigger. You can email me or tweet me. We've got a booth. I guess today's the last day of the summit. And I think the expo hall's going to close at two. But we do have a booth there. If you want to come by and ask us more, the cloud-based guys are right around the corner from us. So you can ask them about cloud-based init and many other things as well. Any more questions? Yes. So that was something I meant to ask the cloud-based init guys before the talk. And I just didn't have time. So the question was have I tried to use cloud-based init with sysprep? I'm going to guess that there is a way to construct an answer file such that at the very least it will install cloud-based init. I don't know if you just installed cloud. If we installed it during that audit mode step, would it actually persist? And would the appropriate keys persist to the next reboot? But I would imagine the answer is that there is definitely some way to do that. Exactly. So this is one of the issues with the generalize is that at some point you need to kind of bring it up and then change the name and then join the domain and go through another reboot and so on. Yeah. Sorry? At least three reboots? Yeah. Apparently there are ways to hack it so that you don't have to or so you can consolidate that into one reboot. Yeah. We haven't personally. But so the cloud-based guys, that's their specialty. If you're trying to run an OpenStack on Hyper-V, they know all the nuts and bolts of that. So there are no more questions. I think we'll pack up. Oh, yeah. If I have any thoughts about OpenStack and Windows HPC, absolutely. I mean, typically HPC users are very fond of virtualization in general. That's been my experience at least. I know that's kind of changing. If the use case is we want to use OpenStack to be able to spin up quickly Windows HPC instances, it's not going to be the quickest thing in the world, but I guess it would be faster than installing them on bare metal. So that would probably be a use case for this. And as far as I know, the kind of general installation process for HPC, the drivers, and so on and so forth would go about exactly the same. The one shortcoming right now is that it's hard to get kind of virtualization aware hardware plumbed up to the VM layer right now in OpenStack. And I don't know if that's something that's being actively worked on. But for example, a lot of times when you're running HPC applications on virtualization, you want to take advantage of the SRIOV stuff in your network card or your Infiniband card. And that's not really, as far as I know, that's not really a supported use case right now. OK, if there are no more questions, I'm going to pack up and head to lunch. Thanks for coming, guys.