 quite a milestone because then in that time, Spacewalk could run only with Oracle Database. So in fact, Spacewalk wasn't truly open source. So in 2012, before I joined the team actually, the team released Spacewalk 1.7 with PostgreSQL support. And from that time, you can actually choose whether you want Spacewalk to be run with Oracle or PostgreSQL Database backend. And as for the recent events, in October 2015, we've released a last stable version of Spacewalk, which is version 2.4. There are a couple of related projects to Spacewalk. We've already talked about Satellite 5, which Spacewalk is upstream of. But other than that, SUSE are actually using Spacewalk as also as upstream for their SUSE manager. And Oracle is actually rebuilding Spacewalk on Oracle Enterprise Linux and claiming they do support it. Okay, that's good question. Why should I use Spacewalk? It's quite an old project, but it doesn't say that it's somehow outdated or old. But actually it says a lot of years of development has been done on Spacewalk, actually seven years. And I'm not including the development, which was done on Reddit Satellite before Spacewalk was created. Yeah, because of that continuous years of development, Spacewalk is quite stable and actually has quite large community as a lot of people actually are using it. And the mailing list related to Spacewalk project is quite busy, yeah. So actually installation of Spacewalk is very simple. You just set up some repositories and then two YAM commands and one command in command line. And that's all you need to do to install Spacewalk. Of course, you can, the free command installation is for the embedded PostgreSQL database. If you want some, let's say, external PostgreSQL or external Oracle database, then the installation is a bit complicated, especially if you are using Oracle, yeah, you know, Oracle. Now I will actually begin talking about what Spacewalk does and how it guides machines through the whole lifecycle of the machines. Yeah, you see that it all begins either with provisioning or registration of already provisioned machine to Spacewalk. Then you administer your machine with Spacewalk and in case you don't need the machine no more or you don't like it for whatever reason, you can reprovision it and start the lifecycle once again. Okay. Where? In case you are provisioning, the provisioning in Spacewalk is handled by Kobler, which allows Spacewalks to be operational in peak pixie environments. Other than that, of course, re-installation of already installed machines is possible and for the complicated environments where pixie boot is not possible, we provide support of Kobler built ISO, which is actually, you put some small ISO into your machine and it will provide the basic network information for pixie. Okay. Then after you either provision your machines or you have already installed machines. The first step to actually of how to administer the machines in Spacewalk is registration. This is done by command rhnreg underscore ks, which is part of the rhn set up package, which for REL distributions is already in the base distribution for Fedora's, it's in Fedora repositories. And after you provision, register your machines, there's a client record stored on the machine which stores some basic information about the Spacewalk server you are registered. So let's see. I've already registered my client. Is this font okay? The machine is already registered. Here's the command I've used. All I did, I specified some server URL and some activation key. You can either register to Spacewalk using your Spacewalk credentials, like admin slash mysecretpassword or use activation key, which in fact allows you to customize the installation and during... Customize registration, not installation, I'm sorry. And during the registration, you can already start customizing your machines. I'll show you. I've already created some activation key. Here's the one default. This one actually is quite simple. It just registers the client to Spacewalk, but here I have one which will, for example, install ZShell during the time of registration of the client machine into Spacewalk. Also, you can, in the activation keys, you can specify what channels should the machine be subscribed after registration. For those who are not familiar with concept of software channels, I will explain. Software channels are basically repositories which are accessed by, with YAM-RHN plugin and these repositories can have like, or channels can have child channels. So you can actually specify, for example, Red Hat Enterprise Linux or CentOS 6. And this one is base channel and this one are some additions. You can subscribe in addition to base channel. I don't have them, so let's use VI instead. Yeah, the system ID file is just some XML file saying that you are registered to some, yeah, some server. Yeah, let's say you have already registered your server to Spacewalk. What's the common usage of Spacewalk? The most important part is package actions. You can either install, remove, verify packages on your machines and I mean on a lot of machines. With few clicks in your browser, you can schedule installation of packages on thousands of systems. You can also run some arbitrary scripts on your client machines and you can also use Spacewalk for deployment of configuration files. So let's say you want your machines to be HTTP servers configured in some way. You can use Spacewalk to deploy your HTTP decon on your machines. So I will show some of these. Okay, I have already registered client machines to Spacewalk, so yeah, here you see that I have some upgrades available which I should probably update, install. So you have also some basic health check of your administered systems that so you can see whether they are up-to-date or not. So let's see, I want to install some package. Okay, I'm at client and I want to install ZCL package. RPM minus Q, probably all of you know queries the RPM database about the package. So ZCL package is not installed. I'm scheduling package installation. So what happened? On Spacewalk, I've created a record that I've actually, what I did, I actually scheduled installation of 3,000 packages instead of one. So let's do it again. Confirm, it says one package install has been scheduled for client. Here I can see that I have scheduled package installation. So what happens? On Spacewalk, there's an action created for the client which is then picked up by something, I will tell in few moments, on client. That thing is called reach and check. It's simple command which just fetches the actions from Spacewalk server. And if there are any actions scheduled for the client, it executes them. The actions can be, as I said, package installation, errata installation, remote command, whatever. To actually pick up the actions, we have a demon called RHNSD running on the clients which every four hours by default calls RHN check which then fetches the actions. Of course, we can run RHN check by ourselves. This is what I will do. Now it fetches the RPM and installs it. As you can see that I have installed package in that shell. But in case you don't want to for any particular reason wait up to four hours for your scheduled actions, we have a demon called OSET, open source architecture demon which relies on XMPP protocol and runs on both server and client. Actually on server, it's called OSET dispatcher and on client, it's OSET, which uses Jeopardy for communication to be instant. I can show you actually, now I don't have OSET installed, so let's again use spacewalk to install some packages. I can see that I don't have OSET available for the client. That's because it's available from the child channel of the Red Hat Enterprise Linux Server 6 called RHN Tools. So let's subscribe my client to another channel and give him another few packages which can be installed on the server. Actually you can use child channels for things like, let's say you have CentOS 6 and you are developing some application which goes through Dev environment, QA environment and production environment. So you can either use channel cloning or you can just subscribe to your CentOS 6 clients to CentOS base channel and then create a child channel for each of the version package or environments you have and just by switching the child channels you can alter the position of the client in your environments. So now I should be able to install OSET because I still don't have OSET, I need to run RHN check manually. Okay, I'm sorry, I haven't, I need also. Okay, what did I do? I had not imported my CAE certificate to my clients and OSET runs through SSL, so it was not able to connect. Now, yeah, yeah, there is bad name in the up-to-date conf. Okay, I've managed to start OSET. I also need to check if OSET dispatcher is running on my spacewalk server. So now when I do the exact same thing like I did with ZShell on the other client where I had to run RHN check manually that this one should be picked up in a minute or two and installed. So I will continue with my presentation for a few minutes and then we'll check back whether the OSET is installed, whether the ZShell package is installed. Yeah, I've already spoke about this. Yeah, there are two main packages that are installed on clients. One is a RHN setup package. The other is RHN client tools. Also, there's RHN SD, the thing which calls RHN check every four hours by default. And to be able to access the soft versionals, we use a YAM plugin called YAM RHN plugin and in case you are using newest Fedoras, we have a DNF plugin spacewalk. So actually you are able to use a spacewalk with latest Fedora. Let's go for managed content, yeah. I've already touched this. The managed content in spacewalk is, yeah, RPM, Arata and configuration files. Okay, the RPMs usually live in the software channels. We have concept of the base and child channels. As you saw here, the CentOS and this one is base. The CentOS and the child channels are the base ones and these are child channels which are optional to be subscribed or not. So we can extend or reduce the package set which can be accessed by the clients. As I've already told on client, the soft versionals are accessed by YAM RHN plugin or DNF plugin spacewalk or in case of SUSE clients by Zipr if I'm not mistaken. Actually on community mailing list, we are quite often receiving requests for Debian support. So if you like Debian and if I got you interested in spacewalk, patches are welcome. So the quest now, we know what channels are but how do I get RPMs into my software channels? There are three possibilities. One is satellite scene which is thing we use for importing content from either RHN hosted or other spacewalks. So you can set up multiple spacewalk instances and sync content between them or if you have satellite five certificate file, you can use it for getting content out of RHN hosted but in case you have satellite five certificate you should be using satellite five because otherwise you've paid just for the certificate and you won't get support. The other option is a spacewalk repo sync which actually what it does, it just syncs some publicly available repo or repo available to spacewalk and imports it into spacewalk into given channel. I can show you here on the CentOS channels. Yeah, I've created CentOS six channels in 64 bit variant and every one of these CentOS channels have a repo associated behind them. I have some defined repositories. I will just some repository label. Yeah, we are comfortable with working with mirrors. So you don't have to specify it URL or you can also specify mirror. Actually, I can show you that. Okay, let's say the CentOS add-ons I have no packages in that channel but I have a repository assigned to that channel. So anytime I can just press sync now or let's spacewalk sync it on some regular basis. Let's sync it now. Okay, actually here there's problem at the CentOS repositories because we can't retrieve repo and MD file. So no repo data, no repo sync. I'll try with another one. Also, if you don't want to rely on satellite sync on importing content from RH and hosted or from other spacewalks slash satellites slash system manager instances or and you don't want also to rely on some repositories. Let's say you have just two packages. You want to get them into spacewalk and you don't want to create repo for that. You can use a tool named RH and push. We just takes a package and pushes it into some channel you specify. So let's say I have some package called spaceCMD here and I want to push it into my channels. So what I will do, I will create extra channel for you called shark channel because sharks are cool animals. I created some channel which I can use for my clients to be subscribed in. And now I just and specify the and now if I look into packages in this channel there's this package and you can actually combine for example, spacewalk repo sync to end RH and push to create one channel which took packages from some repository. Also, you can have multiple repositories assigned to one channel. So if I could, I can create channel called CentOS all assign all the CentOS repositories and all the CentOS repositories that I've selected and which would be for the CentOS channel with the base channel with the child channels. These all would be synced into one channel. And also I could push another packages with RH and push into that channel. Yeah, as I said, spacewalk guides the machines through their life cycle and it also guides the software through its life cycle. So it's quite usual to have some development environment, QA testing environment and production environment. So this is supported in spacewalk, especially with a tool called spacewalk managed channel life cycle, which you can use to promote your channels from the environment to QA environment and from QA to prod. Okay, we have all the functionality I have shown you in the UI like scheduling packages, running arbitrary scripts which I will show later. It's also available via XML RPC API. We have around 700 API calls available. So the scope of API coverage is really big and I'd say 99% of the API functionality is covered by the XML RPC API. And actually you can find a lot of scripts based on the spacewalk API on the internet which can somehow ease you the spacewalk, your spacewalk daily workflow. That's one of the advantage of community we have with spacewalk. We also have command line wrapper called spaceCMD which serves or which simplifies usage of the API because in some cases you, let's say you want to install package you have to execute multiple simple API calls. Simple API calls, let's say I want to install package yet. Then the sequence of the API calls would be login into spacewalk, find the package ID of the package I want to install, then schedule the package installation. But in spaceCMD it's just there's for the package installation there's function which just takes the host name of the server and package name, that's all. It's a small example script which just lists users on my spacewalk server. Yeah, actually I'm showing you my superset period password. Yeah, then it's. Shit, I have that one too. Okay, so maybe it's not so secret. Yeah, the API is also available from parallel Ruby. So I have some function called listUsers which I call and then I will just print users. Yeah, I have three users admin, shark, and some read-only user. The, we've introduced some read-only API user feature like year ago which allows you to create special kind of users which are only entitled to call some subset of the public API calls. And this subset of the API calls is, they are just functions that serve you to retrieve some information and you cannot call, inform some API calls which modify stuff. I will show you the usage, also the usage of spaceCMD. I'm running, actually what I'm running spaceCMD on my client machine. So it's not, you don't have to execute the API scripts or spaceCMD from the server itself. It has cached credentials. I will, I will remove the shell and schedule the installation from spaceCMD install package. And you see, I need just specify system or set of systems. I want the, I want to install package and the package. So client, I didn't have to specify full epoch version release architecture of the package. You can specify it, but in case I have not, it takes the latest package version scheduled. The shell is not installed. And actually we can see that I have scheduled package installation. So if I run the RHN check once again, so it is here again. So other than that, what else I can do with SpaceFolk? So I will subscribe my client also to RHN tools channel. So I can install some additional packages needed for, needed for remote command execution. I will allow remote command execution. And now I can schedule remote command as any user because with SpaceFolk you have basically root access to those machines. And actually if someone hacks into your SpaceFolk, it's bad for you. You should have, because it allows the attacker to take full control of your environment because we are working as a root. So let's say I will just hold date and save it into some file to show you that it's working. And yeah, I could have cheated but I would have to be very, very precise in that kind of cheat. Also I spoke a bit about configuration and deployment of configuration files. For configuration files we have similar things for as for packages. We have configuration channels which you can subscribe clients to. So I created some CF config channel which has two files in it. One is just some some test file and one is HTTP.conf. Yeah, and I specified the file name bet. It should be HTTP.conf and not slash conf. But here's all content of my HTTP.conf. Okay, yeah. I'm not yet subscribed to configuration channel. So I need to be subscribed to that configuration channel. So I'll show you how to do it. And also I will show you quite useful feature called system set manager, which question? Okay. No, yeah, using the API you can schedule remote commands but it's not from command line. Yeah, maybe there's functionality in space CMD which allows you to run it also from space CMD but space CMD is a thing which was fully written by community. So I do not have much knowledge about space CMD. Yeah, you can change the user. Now back to the topic. I was speaking about system set manager which is quite useful and powerful feature because it allows you to execute operations with multiple clients. And by multiple clients I mean hundreds of clients, let's say. I have selected all of my registered servers and I will subscribe them both to my configuration channel and I will, yeah, I have not completed, sorry. Both should be subscribed to configuration channel. So I can use systems set manager to deploy the root slash test file on both systems. Okay, there's no root slash test file so I'm not cheating and now there's the file. Very simple contents. We have couple of other utilities available for spacewalk. One of them is for example, spacewalk reports which can be quite useful for auditing purposes as you can get various information about all of your systems managed in spacewalk. We have couple of other utilities in a package called spacewalk utils. For example, we have utility called spacewalk command channels which basically is used for setup of channels and their appropriate repositories so you can just call spacewalk reposing and get your packages. Actually, this is what I did when I was creating my CentOS 6 channel. Okay, I've just run one simple command and it prepared the CentOS channels for me with all the extra child channels and all the repositories all the repositories with their associated to appropriate channel. As you saw when I was showing you, well, there's a way how to contribute to spacewalk. Let's say you are Debian enthusiast and you want spacewalk to support Debian. We are on GitHub for past two years. We, over these past two years, we had 347 pull requests from the community not from internal developers at Red Hat. So this means one pull request every two and a half day which is quite nice number at least for me. For the technical part, we are still supporting Oracle, although PostgreSQL is main database in spacewalk or preferred database in spacewalk as you can use it as embedded. Large portion of our code is Java code which is run in Tomcat and the other big part of our code is Python code which is run in mod underscore WSGI. Here are links for the documentation. The central point of documentation is most likely spacewalk Wiki which can be found at Fedora hosted. There's also spacewalk.redhat.com page and community mailing list, spacewalk list at redhat.com which is quite busy and you can find a lot of assistance on that mailing list. I'd like to thank you for your attention. Do you have any questions? You mean like for let's say configuration files? Yeah, well, in that case you can either schedule this between what's managed at spacewalk and what's managed locally but it won't try to overwrite the local changes unless you tell the spacewalk to overwrite the local changes. Yeah, you can do it definitely. We'd like to give me a week and supply of beer and I'll do it. Yeah, well, spacewalk offers a bit more than just configuration management and at the time the spacewalk was developed. There was no puppet, there was no chef and unfortunately we didn't have enough time and resources to somehow integrate with this. Yeah, that's not actually the reason why you should use it for configuration management but at least I've enlightened you why it's not there yet. It's XML RPC. And I have a scarf for you. Whoever has a second question will get a scarf. Not you, Jimmy. No stupid questions, please. He's our QE and he's just teasing me. We actually, spacewalk has a proxy so that's a tricky question. Okay, Todd. I'm asking for an application. As AJA you are still having the same application but you are not getting the amount so say you could be short of the amount to have the switching code if you have that application available you are losing the available. If it's available to you you are losing the available spacewalk. It's not that application. Yeah, you are doing it there. You can do it almost with any application. It's not an application. So you can run down an application and you have some of the service on the server with the... Not on the application level. And so he's still on the application top yet. When you play it over to the next level I think most of it will stay in place. It has to be like a spacewalk synchronization of the database. We're just kind of asking the server. We have a database on one machine and a spacewalk application on another machine. And we have two spacewalks in front of the database so if one machine goes down the other one is still active So you have different types of data like pulse standby so you have that active activity. We have a close approximation. We have a close approximation. But it doesn't need to be stored in the database. If something connects to the database it's still there in the database. In the middle of the database there are a lot of things on a function if you know who knows, do you also need to... If you have a boot to go up it says pending and then it says do it access... do it access or not. So if it's in a non-stage then you can do it yet. So you see that that stage is not known you can only go back. We understand that you mean... Let's take it separately, because they're not going to take it right. Any other questions? No volunteers? So, thank you for your attention. What? Pressing? No. Hello. I don't think the seat is going to break. I've tried it yesterday. No, you don't have to. The seat is fine. There's no seat? It's broken. Did you get the seat? No. Where? There. I told you it's going to break. It's going to break. It's going to break? So, you're going to put it on one seat, which is going to break. How much weight do you have on that? About 1.2 kg. You can put it on the table and put it on the table. So, you can put it on the table and put it on the table. Can I do it myself? You can put it on the table. Hopefully, it will be just running the check-out day and play and work again. At least, you know, we need them to play. We need them to play. Hopefully, there will be no such free IPA next time. That was it. I didn't leave it here. Somebody forgot the sticker.