 All right, I've got five pass, so I think now's probably a good time to start My name is James Blair. I'm one of the maintainers of Zool and I'm going to talk a little bit about What we've been doing over the past six months what we've been doing before then and what we plan to be doing in the future Who here is familiar with Zool Okay, most of you good. So I won't I won't do too much in the way of preliminaries. I will try to All right, so the Six months ago in Vancouver we announced version 3 of the of Zool and We announced that it was a becoming a pilot project under the open-stack Foundation Give me just a minute, sorry Yeah, sorry. Yeah So we announced at Vancouver Summit that we that were becoming a pilot project under the open-stack foundation And that's because we had been using Zool for six years and and We thought that it was time to other people were beginning to use it and it was becoming a more Generally useful application and so we thought it was time to sort of Bring it out from From inside the open-stack project and make it its own top-level project to sort of recognize That that growing community and the broader scope that we were bringing to to Zool. So we we not only We were not at this point only focused on open-stack use of Zool, but we also were sort of Making other users of Zool Sort of a first-class concern in the project and we were adding a bunch of new features to Zool that that reflect this So a few things that that happened before the the Vancouver Summit where we made this announcement. We made Zool Python 3 only so we were we were doing a lot of breaking changes Anyway, so we figured that was the time to say This thing is going to be very Forward-looking and so we we we jumped on the Python 3 train and and haven't looked back It's so much easier to write code for only one version of Python. Yes We added in repository configuration to Zool that was a major change from the way that it had previously worked and and it's It's sort of changed the way that people use Zool Just being able to propose a change and then add Add jobs that begin using that change immediately Is with without without those jobs having to land. Yeah, the fully speculative in in repo job That I'm gonna put this here because I have a large learn. Yeah, you can talk to it from about back here And it'll be better for everybody We adopted Ansible as the job execution engine Because we needed to job execution engine and it turns out that there was a really good one that already existed So we decided to use it instead of writing our own And and ansible playbooks look remarkably like the old yaml from the Jenkins job builder templates that we that we had originally written So it wasn't I mean it was different enough that my migration script was terrible and and only got about 80% of the Migration's done, but similar enough that conceptually as a user It's it's not a huge shift if you didn't already know ansible. Yeah, and yeah And also a lot of people have been using ansible for other things So it just it it's it's worked out if you happen to use ansible already, that's great If you don't it's pretty easy to use or just use it to run a shell script or whatever you need to do We actually have a job that uses it to run puppet. Yeah, because it's testing a thing that does pop it So, you know, it's really easy That's the amount of ansible. It's in there. Yeah, and and it's also We should have put a bullet point up for this but Zulvi 3 sort of natively handles multi-node jobs and ansible is great at orchestrating things across multiple nodes so so yeah, and we We added support for github so Zul supports github and Garrett and It can pretty seamlessly Integrate the two so if you have some projects on github and some projects in Garrett and Those projects have changes that depend on each other. That's fine. Zul doesn't care. It will check them both out We actually just heard from From some folks this morning at Le Bon coin. Yeah Who about as good as either one of us are gonna do. Yeah, I'm gonna keep practicing that. Yeah We're gonna get it right one of these days Who who had you know part of their development org is on isn't Garrett part of it is And github and when they adopted Zul those two groups started talking to each other again. Yeah, so Yeah, so we So since Vancouver We've we've been pretty busy We've made a lot of changes to Zul first up on the list is we Rewrote the web interface, which is actually kind of new in and of itself. Yeah For Vancouver we had written a web interface in it. Well, I want to say I I mostly wrote some terrible angular not knowing what the heck I was doing and That resulted in browser windows eating a lot of CPU and other things like that and so luckily Tristan fixed that by rewriting it in react And rewriting it well in react So now the browser doesn't cause my legs to burn when my when my laptop is sitting on top of it, which is very exciting We've added inline code review comments a lot of people haven't seen this yet because it's very new and we're still working on In open stack. We're still working on the jobs to take advantage of this but But soon if you run a pep eight job in Zul It'll be able to analyze the output and leave leave a comment directly on the line That that is having a problem. So that'll save a lot of round trips We think this will probably save like 600 developer years. Yeah every year But by saving a lot of round trips to the logs to try to dig out what the actual error message is Yeah, it'll already do this now on Zul configuration error. So if you if you push up a Zul job It it it goes ahead and validates the the that YAML and if that's incorrect it'll it'll currently be leaving those as inline comments and then This is sort of an extensible system to take advantage of that for things that aren't built-ins to Disable itself so that a job can define of its own free will You know based on what it is Hey away I can now detect that you have a problem in this line of the code and report that back which is super To fix it. Yeah, well and after that we'll just have Zul writing open stack machine learning Plug that in and yeah, yeah, it's either great or terrifying or both We now build docker images on every commit that we land to the repository and we push those images up to docker hub So you can docker our docker with your docker. You can totally docker the dockers and Yeah, so so that's actually we we I Know some folks are now using those images to run Zul in production. That's I think a perfectly fine way to do it I look forward to doing that myself some day soon We've added Sorry, we upgraded the version of Ansible that we support to Ansible 2.5 We're Zul is very tightly tied to the version of Ansible that it uses That's actually something we'd like to change and we'll talk about that in a little bit But for the moment, we've we've been been at least keeping up with a supported version of Ansible And we plan to keep doing that for the for the foreseeable future We added support for Kubernetes for build resources so you can you can request a Pod from Kubernetes if you say just again using Pepe, you know a linting job as an example If you have a simple job that can run in a container You can request that from Kubernetes and and run it But the other thing you can do is is really interesting. You can request a namespace from Kubernetes with no resources predefined and and so if you're if your task is to deploy an application in Kubernetes and You can get this namespace and then start deploying your app and because at the same time as all this Zul is You can still request virtual machines or or static machines or whatever You can combine those into either one job or a series of jobs so that you could for example ask for a virtual machine upon which you would build your container images and Also ask for a namespace to start up those containers So that's a that's a I think a pretty it's I think we've got the workflow sort of dead-on for for that kind of Building container-based microservices, so I think once we get some examples out there people are going to be able to do a lot of Cool things very easily. It's worth noting for that for those of you who are involved in open-sac development The info team does not currently have any kubernetes so This this is a feature that exists in Zul and that I believe some in fact not and I believe I know that other people are using In their their installations, but it is currently not available to open-sac projects to consume because there is no kubernetes From which to get a namespace That's on the do list. I'm really excited about this actually Yeah, it means that our community is Is growing Zul faster than the community which originated it is able to keep up with the pace of new Features, yeah, so so that's a that's a milestone. Yeah, I think yeah So using those nifty docker images that we upload to docker hub we added a Docker compose quick start To the Zul repo so if you actually go look in our documentation you can see how to get this up and running You can with a single command you can get a complete Zul system up and running in containers I'm not sure I'd we'd use it for production purposes But it's a quick start. Yeah Not an installer right, but it is the thing to get a Zul up and running to that you can just start playing with immediately and the The documentation will walk you through setting up the config the config repo and setting up base jobs and things like that And so by the end you'll have a thing that you can you can experiment with creating your own jobs We added the thing called the supersedent pipeline manager Zul has a Sort of pluggable system of pipeline managers. We've had to since the beginning Dependent which is what you use for gate and independent which is what we use for check the supersedent pipeline manager is sort of Designed specifically for for post jobs. So it's more efficient if you have a a Busy repositories that's landing changes that are publishing documentation all the time superseding will make that a little bit a little bit faster Let's see how are we doing on time? We have seven minutes. Okay We added support for pausing jobs So going back to that sort of container use case again you could you can for instance have a Have a virtual machine that you build your container images on and you can start up say docker image registry on that machine you can then pause the job and Zul will keep that machine running while it starts other jobs Other child jobs underneath that which could then use the image registry that you've set up Do all of their work and then when they complete The pause job will resume and you can do whatever cleanup you need to do after that and We added another feature called skipping child jobs So this is something that that folks who have sort of complex graphs of jobs that they may or may not want to run depending on Exactly what's in a change you can perform you could start off a job graph in Zul But with it with a simple job that just analyzes what the change is doing and then decides what children what child jobs need to run and then Zul can either Basically, you can use this to dynamically decide which jobs are going to run for a change So that That's a new feature a road map. This is where Monty promises you Amazing things which may or may not be delivered Most of these things there's at least something up for review. Yeah. Oh, well that one except for the first one But we know that we need to get that one done So so Jim was saying earlier that we currently support We're tight tightly coupled to enhance a version of Ansible that's running in on the Zul executors And that makes When you've when you've got thousands of repos worth of jobs as we do an open stack Upgrading the Ansible that's going to run all of that content across all of those things in one fell swoop is a terrifying Concept and and not not really one that I'm very pleased with each time we do it because you know, you never know so we're we've been sketching out ways to have Zul support a plethora of Ansible versions and that jobs can select which which version of Ansible they need to To run on so that should allow for more staged and incremental Upgrades of content to newer versions of Ansible as they as they come out And also the other use case Another use case that is great We have some projects in open stack like the open stack Ansible for instance That support multiple versions of Ansible for their for their project and they would like to test those and that means right now they have to write jobs that That use the Ansible that Zul is running to run Ansible on a test node So they can run the version of Ansible they want to run for that test and that's sort of a shame because Given that one of the benefits of Zul using Ansible should be that you can use your real Ansible as Part of your testing for the projects that are based in Ansible They're actually the ones who have the hardest time taking advantage of this feature So we would like for them to be able to have Zul execute the Ansible for their job Rather than having to run Ansible with Ansible to be able to do that So that'll be a cool thing to be able to allow them to do Yeah, so hopefully we'll we'll make it so that jobs can specify which versions of Ansible they want to use when they run We've got more drivers in the works. Yeah, so many more drivers. Those are all up for for review Yeah, every there's actually a patch in review for every one of those. Yeah, and we've got people using the EC2 one in Production somewhere and I think the open shift one I think both of those are being used by people, but they're just still being Worked into into sort of good shape for for landing the Azure driver has been written and we think it probably works But nobody has an Azure account so If anybody knows anybody wants to give us a free Azure account so that we can verify that works before landing it that'd be cool And I think the same thing. I think there's a prospective GCE Thing up there that is in a sort of a similar state It's like no one's actually using it like nobody's tried using because they don't have a one of those So we'd like to land both of those but we'd also like to verify that they work first That'll be a that'll be a thing Those are also well, so we have a patch a working project patch up for Pagier, which is a code review system that the Fedora project uses We don't have a patch at forget lab, but we have a human which is even better than a patch danceable Fest a Lovely human from from F5 was like, oh, I I want one of those and we're like you want to write it He's like sure so so he's I think working on getting set up to do that. So that'll be sitting I've also we've been a Bitbucket drivers have been have been highly requested We don't have a human for that yet, which makes me think that I'm gonna wind up being the human for that So I would love it if somebody wants to come and write a bit bucket driver so that I don't have to Oh, yeah The rest API and web interface will continue to get better. Yeah. Yeah, we've got lots of ideas about Well, we saw a great presentation this morning about About a project called Zuby. So we want to we want to steal all of that and And and and put it into zool. Yeah, so Yeah, hopefully we'll be able to search Have a search interface for zool jobs and roles and just be able to navigate the the configuration Very easily. Yeah We are actually Basically at time So so if anybody has any questions in the next minute You're welcome to ask them and there's a thing there. So, yeah How you doing? I hope this won't take a minute But I was told to ask last time we checked whether it was okay to run zool v3 in our third-party CI I was told that we should not is it ready now Yeah, it's it's ready and some people are doing it and they're running into some obstacles So we're continuing to improve things around that if you're if you're feeling a little adventurous Then then then I would encourage you to to go ahead and get started Yeah, and talk to us in infra and we'll help work through the things And and if you're feeling less adventurous, maybe wait a couple more weeks or something and yeah And and hopefully it'll get a little bit easier working through a couple of the issues that we found from the first Adventurous people that try that it's mainly you wind up having to add more Upstream project references to the zoo then about thing you actually want to track Like you want to track Nova and all of a sudden you've got to add like a hundred and fifty other repos to your dear thing And that's not ideal. So I Mean it's possible. It's just a little more work for you. So but yeah, thanks But there are no really good ways Basically a question about deployment. Yeah, what what deployment options are there for Zool? Yeah It was worth pointing out that BMW actually runs their Zool in in OpenShift And I believe GoDaddy was running theirs in vanilla Kubernetes So that has been done, but we have not so far gotten anything like Helm charts or or like that's on the do list To like actually have some shared versions and I think the people who have started running it in those environments have have talked about wanting to work together on sharing sharing some of those That's the same thing with We we I think want to get some ansible playbooks Put together to do that as well. So It I think that I think the windmill set of Roles and playbooks might be suitable for production at this point, but I haven't used them Yeah, well, I think that's actually I think we need to update is I think that our friend from F5 Started down that road and found a couple of roadblocks and okay, and we need to fix those So there's a couple bugs in the things that are out there, but that's definitely on the on the short short term Yeah Yeah Yeah, I guess that's probably just some at least some documentation for Yeah, I mean part of that's gonna be deployment specific like because generally scaling is is at a new executor, right? Yeah, and so how you do that is gonna be a little bit different to buy a show just clicking on a thing to add more Executors in his open shift that he was very happy about and I was like wow, that's interesting So yeah, we need some documentation around that for sure. Yeah. Yeah We're probably past time now probably past time But we're we're here. We're here all week. That's not true. We're here today and tomorrow, right? So the rest of today and tomorrow so please feel free to find any of us. There's also some little one-pagers and some Stickers up here on the table if that's the sort of thing that you would like to have in your life And after this they will themselves re-migrate back down to the dev Lounge downstairs on the second floor if you miss them here. So anyway, thanks for thanks for coming. Thank you