 It's good to see you all and thanks for coming. You're going to be talking about composer, which is our Sort of new image build tool kit thing Yes, building OS images for any platform. I'm Will Woods you may know me from my various cussing about packaging formats and sneaking hot dogs into the operating system and Jen Jen Giordino senior interaction designer on the user experience design team and I work on composer So here we have Terry He is a system cloud administrator, and he needs to quickly create customized OS images or Different types of deployments and we have composer which lets you build custom images for any platform This is our sort of architecture overview. What what is composer? Well, yeah, it's a thing that lets you build stuff you take content from various places from red hat or fedora or wherever your own things third parties and run it through the Magic Composer box and Outcomes the things that you would want to install or Run in various platforms hooray And yeah, it's not like we wrote all new stuff to do this as much as I may have wanted to It's using all of the tools that you know and love Anaconda and yum and DNF behind the scenes that we've just Given you new ways to use these things made a lot easier what it doesn't do The main thing that we want to do here is make it easy to make ready to ready to run ready to deploy images The parts where you sort of need to you know do a lot of customization once the image is built We're not doing all of that. We aren't going to do everything for you Not because we don't love you we do love you It's just that there are certain things you can't do if you want to have a mutable image that you're going to deploy in a thousand places We don't have a way of doing 1,000 configurations. We can't do we can't predict everything you want to do So we're going to give you the common tools to do the things that you will need to do and there's lots of great configuration tools to Set up your system once it's running, but Composer is concerned with getting the thing that you're going to run once It's running. That's good for other tools Not for us So, yeah, so we're so here Jen's gonna walk you through what it is and how it works So Composer is a plug-in inside of cockpit. Not sure if you guys are familiar with cockpit It's a web console that lets you administer your system so when you see Composer inside of cockpit, it's labeled as image builder and The main page of image builder Composer is a list of blueprints that are represent the different images you maintain Here we're going to go to This HTTP server blueprints where you can see these are the contents that I've already added to this blueprint And I want to make some changes to the blueprint One of the things I want to do is get rid of PHP. So I'm gonna go ahead and remove That one we're making some very smart moves for for for Terry It's a demo Terry has decided that he does not want to use PHP anymore. Good job Terry Yes There's there's gonna add no JS to his blueprint So I filtered it. I found things related to no JS here. I've added it to my blueprint I can see no JS here, but there's also a tab of dependencies So just to see if no JS also brings in npm I can filter by npm and I see that it is in fact in my blueprint pulled in automatically as a dependency Terry is much relieved to know that he has npm now. So That's it for the changes I'm gonna make to my blueprint. I can see the changes that I've made the ones Listed down here. So I added our sync earlier, but I never saved that that was part of the previous session These are the changes that you saw me make now. I'm gonna go ahead and commit all of them If I want it, I could roll back some of those changes and undo them But I'm gonna go ahead and commit the ones that I just created And if the idea of committing changes sounds familiar to me to you, yes This is behind the scenes keeping the blueprints in a little git repository So this blueprint now is something that I'm ready to To start using I click create image and Here you can see a variety of choices available to you for creating an image And yeah, we have all the you know all your favorites of all of the image types that you might want to build Two different flavors of Q cow to you know tar archives If you just like want to I don't know cram that into some dockery sort of thing We can probably add more but these are the most common things out in the world, so And if you're looking at that and being like oh, but my favorite isn't in there, please do come talk to us about it So yeah, Terry Terry loves Q cow to so he's gonna create a Q cow to When you create images you would then go back to this this sort of overview page for your blueprint Where you can see all of your components as well as the the images that you've created So this is the one that I just selected It's it's kicked off that process and then this is one that I had previously created the VMDK so We're kind of doing it like a cooking show and sort of pulling the Pulling it out of the oven to show you and it works but while it's still baking the network being what it is Right now we're not 100% certain that it'll be able to fetch stuff in time for you to see what's going on Yes, we will yeah There are ways to specify that we'll show some details of the blueprints in a little bit I don't think we have stuff for that in the UI yet, but I think we're actively working on it But I I do have some activities at the UXC booth I'll be here tomorrow and Sunday and if you have feedback and would love to come and take a look I would love for you to come and take a look and just walk through some of the some of those activities and provide feedback Yeah, the UX team is actively trying to design a really good interface for how you Find those things and make those sorts of changes. So please do come talk to them Okay, so yeah, just sort of prove the point we're going to you know, take the image that we built earlier and downloaded earlier and Virtual box is very clever and if you type Lynn it it says oh you're doing Linux And if you type machine it sees the MAC and thinks you're running a Mac Good job virtual box But yeah, so, you know, it's I forgot to show you Yeah, so I had already downloaded this one that I created earlier. Sorry. I have that file Available and then when I'm creating this VM You can see it's here and I can select that creating that VM Name it something other than linear Yeah, linear to the re-linning linear harder I'll go with linear to yeah So yeah, here we go It's gonna boot and you all know what a boot sequence looks like it's not super exciting We can if you want to switch over to the console for a second We might be able to do we want to risk? So there is a full CLI to control this as well, which we would love to demonstrate But unfortunately the network being what it is sometimes the CLI hangs, but we'll show you Some of that in a little bit. So yeah, there we go. This is the image that we built It works and you boot straight into it And I don't think this one actually has npm in it sadly because we can't get it because the network here is being very strange So are we are we gonna try it? All right. Well, yeah, let's let's do that help one first Yeah So we've got we'll just bring up the help screen just to let you know like it's got a bunch of you it's your usual sort of Thing and verb type commands to tell it what sort of stuff you want to do And there's nice tab completion. So if you're not sure what the name of the blueprint or The compose you you IDs are very long. So it'll help you out And we'll see if we can get status can hooray So it's still running the build for open stack, but it shows you all of the builds that you are have Either finished or failed or running or pending Yeah, and there's we other commands, but you don't really want to watch us type. That's not great So just I'm gonna go back and do a reminder some of you weren't in the room when the screen was showing We do have a few questions. We wanted to get some feedback from you guys on If you could if you haven't already pulled up the survey if you could pull it up and just few questions answer those and then in a few minutes we'll Pull up those results at the very least we're pretty sure that T money Terry our boy We'll answer these questions. So if nobody else answers, we're just gonna talk about what Terry wants to do and I love Terry But not that much. So yeah in order to make the image When we build an image out of these things normally when you make an image run through the installer you have to create your user account set the root password things like that So we did that through the console when we were building this thing earlier So, you know, this is just we can list the blueprints that are on the server Save a copy of the example HTTP server which we showed you and so you want to go to the next one So yeah, here's what the blueprint looks like it's not unexpected and you can set the exact version numbers And we've got we've got modules. We've got packages. You can list what you need in there And so it's got a list of the things that we added in the UI Not all of the dependencies, but that comes later And so in order to you know, we can add a we added a root user or at a study password and a key for for Terry T money And just put his key in there so that T money can get into his systems So we've got the root one. We've got a user so that you've got a regular user on the system And you know, these are the sorts of things you expect. These are the only there will be UI for this soon There isn't right now We're trying to figure out what sorts of customizations are the most important and those were the most obvious ones so we started there and So really it's just a matter of taking those little snippets adding them to the to the blueprint and then pushing the blueprint back into the server and Running that command and that was how we built the thing that we just built or just booted like that's all it took so yeah There are like I was saying there are other ways you would you might want to configure your systems other than installing rpms creating users and Giving them keys and things like that. There's all sorts of great tools There's a kickstart gives you a lot of options for you know turning surfaces on and off and and doing all sorts of things Ansible is magic and once you do pretty much anything and then the a lot of environments use things like cloud in it or Ignition or what have you to when the image boots up figure out where it is and configure itself accordingly We do not have we don't have there's some of these things that we can't necessarily do we want you use We want you to use those tools to do that stuff Composer isn't going to handle everything that these things do because those are great tools and we don't want to reinvent them We wanted to give you the parts where you get to build the image and then use the existing tools to do what you need to do So we want to know what sorts of things you're doing with the systems once you you know other than put a bunch of rpms together Add a user and go to town Because we don't know what everybody does with their systems and we need to hear from you That's why do you have the survey and that's what we're asking So so do we have results? I don't know Sarah in the room Sarah. Yay. So should I Just reload it. Oh Yeah, by the way, this is in fedora or it's in a copper in fedora 29 you can install it and play with it right now It's also in roll Numbers am I allowed to talk about real numbers? It is okay, there's a number after seven we're allowed to talk about that again But yes, I'm told that this is available for for rel and it's in fedora So Does the number two mean two people? Okay, so we had what like Seven people answer the survey which is which was nice of those seven people. Thank you Um So So it's hard to compare other to Ansible, but two people chose Ansible over other I mean the other ones not other Does anyone Want to talk about Ansible? Are there things that we were missing that you're like, oh, I can't believe you forgot about my favorite tool slash image slash Whatever anybody want to talk about their stuff or no chef chef I don't know anything about chef What you use you use chef in to make images that's a thing it does me We will do some research on that Yeah, so it's if you're if you're creating an image sort of while you're creating the image You do some some chef-y stuff in the image and then you're done with it, right? So, yeah, um, we're we're trying to work on sort of a mental model of like you make an image and the images is Not mutable while it's being built Like an image you you say what you want to what kind of an image you want and the image appears The idea that like while it's being built you can kind of stick your hand in the machine and tweak some things We would like it a lot better if you did that afterward There's some interesting technical reasons for that if you want to come talk to me about them I will talk your ear off You probably don't want to hear about it, but there's some very good reasons why that's a really good way to build images Everyone loves Kickstarter. Hooray. I love Kickstarter to as Can we get a raise of hands like just from the whole audience of like is kickstart your first preferred preferred tooling? Could you raise your hand? Yeah Okay. All right Good to know And then second preference would be Ansible right Where the Ansible people in the audience? Yeah, I love the Ansible show me. Okay, cool Thank you for showing love to the red hat native products. We love you. Go back. All right Cloud in it a little love for cloud in it. I'm not gonna. I'm not gonna read me All right. So yeah, like I said, you can play with this now So yeah, I guess One of the things that we're going to start looking at because we're part of this was figuring out Okay, we can build images then what and so if I'm understanding what we're getting from the survey in Europe Raising your hand. We should start looking at the things that are in kickstart files. The directives that are in there Is it all right? Everybody who loves kickstarts. Are you thinking about the like commands that are in kickstarts or the post scripts? If you're like raise your hand if you're like, I need my post scripts or else this doesn't work for me Okay But and then everybody else is so pretty happy with the way that you can configure the images with the stuff That's just the commands kickstart provides. Yeah Can I weave it me? If you if you look all right cool, everybody lives kickstart everything is fine. Nothing is ruined. I told you guys This is yet. So composers is pretty new or it's not pretty new It's it's a it's a new way of looking at the old tools that we had and we're trying to really do The best we can to design something that really like works for you and make your life makes your lives easier And better in whatever small way we can so getting this sort of information from you isn't just like Thanks for telling us we're great. It's we want to make this good for y'all. So that's why we're asking these weird questions So thanks for indulging us so, yeah If you want to come talk more about it the code is the code for The cockpit plug-in and the back end the it's part of Lorax and welder web That's email and if you want to come on contact me directly Yeah, and then a uxd booth is has been in that far the end of the hall that way So you can come find me or Sarah who's also in the audience And we would love to get your feedback on different aspects of this tool So please come see us this afternoon or tomorrow or Sunday. We'll be much appreciated. Thank you. Thanks very much Do you have any questions? Yeah, did anyone have a question or things they wanted to? Tell us we forgot about Josh two questions. All right I Well, so the question was when we're talking about os images Are we talking specifically about virtualization images or also containers and one of the output formats is tar Which was our sort of easiest way of being like you could cram this into docker if you wanted to we weren't focused on creating container images at In our first sort of evolution of this we wanted to start with the things that we knew at the time But yeah, that's that's a a thing that we are thinking about but not our main goal as I understand it right now and second question that's So the question was about whether when you we want the images to be immutable And if you build it one day and then build it again six months later Are you gonna get the same content or are you gonna get different content the intent the way that we have structured the The blueprint file I it's supposed to be the case that you'll get the same thing if you build it again two months later Assuming that the content is still there Which is of course kind of tricky because if you're building against fedora you might have had an update that's no longer there and that's Part of a larger problem with this sort of ecosystem that we really all need to have a long conversation about but the intent is The blueprint once created is is like a static manifest of here's what I wanted in this image don't change it unless I say so That's why we're so careful about Reviewing and committing changes. We want it to be very carefully changed. Does that answer the question? Okay, well, or do you like do you have a preference in that workflow? Would you want it to remain the same or do you want it to automatically update as your contents? Get updated. Yeah, what's it is the expectation if you if you built an image today And then you tried to build it again six months later Would you expect that it would be built with updates or would you expect it would build the same thing? That's the intent is as you described that we would we'd like it to be that it's Reliable that what we built is what you built is specifically going to be the same thing if you built it again You know in a different form six months later that will freeze the content and build it again And it doesn't change unless you want it to change which is sort of a shift in thinking away from the way that the ecosystem works right now and so It's a challenge. Yeah, do you have to have cockpit running? No You can just run the the cockpit or the the composer's server and use the CLI Yep, yes Okay, yeah, the comment was a lot of sense. Yeah, the comment was for the for the microphone the comment was that He would expect that and I'm hoping I understand you so you'd expect that the There'd be a checkbox or something that would let you know that either you can say I would like this to update as time goes on or I would like this to stay at exactly the version I chose and both you need or want both of those options to be available to you in some form So you would want to know specifically When you've created images what version of the package was in each image you created. Thank you. That makes sense. Thanks Yeah, we have time for one last question if there are if there is one last question T money got any burning questions. Oh Okay, I'm gonna answer those backwards the second question was is there any plan to have it be able to upload the images to you know Wherever you need it to go We're trying at this point That's out of scope for us because there are so many places to put the images So we're trying not to get ahead of ourselves and do that And there are other tools to do things and the first question was Rel entitlement things like that. How do you get that sort of stuff? And this just okay, there we go and I'm gonna defer to somebody else on that one because I I do not Thank you