 And folks that talks about to start Hi, we have max over here. He's going to talk about Ansible packaging in Fedor Linux and Fedor Apple. It's not just about Ansible, but also the modules say Good luck to you in my microphone as was said So yeah, can I take the handheld? There you go So Ansible is a configuration management tool used for managing servers network devices and other types of Infrastructure and you can also use it to manage workstations as this one is Okay, so what components make up the Ansible stack and Fedora so Before we had just one Ansible package that contained many things it was a core runtime command line interface tools and many many modules for all different types of applications and Recently well, I guess a couple years ago by now The Ansible package was split into Collections and if you'd like to hear more about the origins of this I recommend you watch Kevin's talk from the Fedora 36 Release part Okay, so first we have Ansible core This is the core playbook runtime playbooks as many of you will probably know are these YAML files where you define the state of your infrastructure in this simple easy to understand format so Ansible core includes the runtime for playbooks and it also includes command line interface tools such as Ansible for running ad hoc tasks Ansible playbook the cornerstone for running playbooks Ansible Galaxy Which is a package manager for Ansible content similar to PIP or npm and so on And then there's also a lot of less commonly known tools like one that I like called Ansible dash console Which is like this little two-way interface Ansible dash config Ansible dash inventory and so on and then also there's the essential modules such as DNF for managing packages and now also DNF 5 and Copy for copying files to remote systems and so on and then also we have Ansible collections These are packaged units of Ansible content These include roles which are like reusable YAML playbook code modules, which are Code that's executed on remote systems. They're usually written in Python or PowerShell for Windows collection I know I mentioned Windows at a Linux conference. What a crime But really they can actually be any executable file that takes in and spits out the correct JSON blob and then also there's other types of plugins that run within the controller process such as connection plugins For example, there's the one that we all know and love the SSH connection plugin There's one for Podman containers and for Builda and there's a lot of different cool types of plugins that run within the controller So how are Ansible collections packaged upstream we have Ansible Galaxy Each collection has a namespace and a name There's reasons for this due to the way it used to be tied to get hub repositories So this is a very popular collection The community dash general collection as we can see here It's here on Galaxy. You can use the Ansible dash Galaxy collection and install command to install it and then we also package Ansible collections in Fedora, which is pretty unique We're one of I think the only Linux distributions that does this so we can see the community general collection transfers to Ansible dash collection dash community dash general and These versions are actually out of date. So I don't know what's going on with the Fedora packages site But we can see that collections are packaged in Fedora, Apple 9 and Apple 8 and Now we can see all these cool collections that we have packaged in Fedora. I cannot find my cursor Which is just lovely. There's plenty of different types of collections And then most of them are named like this some of them are not but we have machine Generated provides which are consistent across all collections And now we have 21 collections and Fedora raw hide 14 collections in Apple and the row because row has three or four in Appstream and 16 and Apple 9 when I originally put together this talk We had nine collections in Apple 9 which I thought was fun But then like two weeks before this talk I decided to package a bunch more collections for an infrastructure project that the copper team was working on so that's fun and then we also have the Ansible community package which is a bit of a new fangled creation It contains a bundle of popular ansible collections that the ansible community steering committee Curates and this was kind of meant as a replacement for the classic ansible package because once everything was split out We still wanted to provide our users like a simple batteries included experience Especially for beginners and people who don't want to muck around with a bunch of collection dependencies So we also package that in fedora And now it just I don't maintain all of these packages But I just wanted to highlight some of the other ansible related content that we have in fedora We have ansible lint which is a linter for ansible playbooks and roles We have molecule which is a test tool for roles and then ansible compact is a new ish library that both Molecule and ansible lint use we have ansible bender Which is used for building container images using ansible playbooks and builder and I believe upstream is looking for additional help with maintenance So if anyone's interested And then we also have aura which is a tool used for recording ansible playbooks And it makes them easier to understand and troubleshoot and this provides an ansible callback play Plug-in which sends your playbook data into the database, and then it's accessible via a nice Django web interface And then we also have Vim ansible which is provides syntax highlighting for ansible playbooks, which I really like And then back to collections We have ansible dash packaging which is a package that provides our PM macros and generators for packaging ansible collections Again, you came to this conference. So you must expect to hear the word packaging a lot So now some of our macros which I maintain along with Neil Gampa We have ansible collection build which runs the ansible dash galaxy build command to build the ansible collection artifact tarball thingy and then we have ansible collection install which is run in the install spec file section And that runs the ansible dash galaxy install command to install the previously built collection artifact And it also sets up some other automation for later in the build process And then we also have ansible test unit which runs the ansible test units command this Macro should have had an s at the end my mistake And then this is used for running the collections unit tests Ansible provides three different has three different types of tests which are all orchestrated by the home built ansible dash test commands so There's unit tests which are what we run with an rpm builds, and then there's also integration tests which is where you write playbooks to run your ansible modules and then Check that they work correctly within the playbook and then we also have ansible test sanity Which is basically linters. I wish they would change that name sanity, but oh well And then we also have some other macros that we use during the build process So now let's talk about generators. So the ansible packaging Generators creates the appropriate dependencies on the version of ansible core that a collection needs and also it can handle dependencies between collections, so for example the AWX collection might depend on the net common collection for some of its utility code So it would specify that in the ansible metadata, and then our generators would pick it up and Generate the appropriate dependency based on these machine readable provides that we generate So now this is a fun one. We're going to talk a little bit about ansible versions So in fedora 39 we have ansible core 2.15 And we have ansible, which is the bundle Version 8 and each ansible version depends on a specific major version of ansible core You'll notice that Ansible core does not use semantic versioning predates that while ansible we decided to adopt Semantic versioning for that and then in fedora 37 and 38 We have 2.14 and 7 and the community packages are Supported for a much shorter time period than ansible core versions are so this is unfortunately already end of life and the schedules Release schedules for ansible ansible core Clash a little bit with fedora because they're tend to be released around the same time as fedora releases So in some releases, we've been able to integrate the newest version while in other releases. We have not So now we're going to talk a little bit about apple We spend a lot of time maintaining ansible and apple so Ansible core supported by red hat for a small set of use cases and it's available in the app stream Repo and then an apple we provide ansible so in rel 8.8 and 9.2 There's 2.14 and 7 and then and sent a stream which will become 8 which will become 8.9 They have 2.15 and 8 and do system shenanigans which are beyond the scope of this talk Sent us stream 9 has 2.14 and it will have 2.14 for the rest of the rel 9 life cycle While sent a stream 8 will keep being updated And now another little wrinkle that we've had for apple is python versions ansible core is a bit picky about what? Python versions that it uses So in rel it tends to use these alternative python stacks Which don't have as many things packaged for it and are supported for a shorter period of time And I've been able to work with members of the python main team to make sure that all of the Macros for python packages were able to work with these alternative python stacks So now what makes ansible packaging in fedora special? I think it's special at least but I'm of course biased So we provide ansible collections as RPMs Which is something unique to fedora and then we also provide the ansible bundle So users can pick whether they want the smaller set of Individual ansible collections that they know they need or if they want the quite large Ansible package that has everything and they're able to mix and match Because the individual standalone collections and the ansible bundle don't conflict each other So maybe you want some collections which are part of the bundle and then one collection Maybe isn't part of the community package so you can install that separately And I really like this because depending on a user's preferences. They can choose whichever path they prefer And then another thing we do is we do a lot of cleanup on the ansible package because it's combination of like a hundred different upstream collections and They tend to have a lot of dot files and test files and development scripts So we clean these up from the fedora package You can see some of the code we have for that in disk it It's a bit extensive and we have been able to upstream some of this work But not all of it and then another thing we do is given fedora's First principle we tend to support new Python versions before upstream does and where work closely with them And we backboard patches as needed and then the other thing is we're really involved in upstream I'm a member of the ansible community steering committee and I help co-maintain our upstream build tools We all submit patches to ansible core and collections so we can participate in upstream and also we're involved in releases and community documentation So finally, how can you help? We're always happy to have more folks who want to maintain Collections or help maintain the existing ones. I believe there is a Review package hack fest tomorrow, so I'd be happy to sit down with anyone who's interested during that tomorrow We're also always Interested in helping with testing Bode updates, especially in Apple and just generally quality assurance And then also some of the new ansible dev tools such as ansible builder and ansible navigator Not yet packaged mainly because I didn't have the time to do it and I don't personally have a use case for it But I would like to see these in fedora eventually and then also I would be interested in getting fedora execution environments, which is not a good name, but Ansible execution environments are containers which are used for running ansible playbooks and Instead of running it, you know just on your regular system So I would like to get some of these setup which use fedora packages and our fedora container images So I'd like to plug the ansible packaging rooms on Matrix and IRC we have a lot of different distributions were involved in the package community Kevin David and I are in there and then we also have people from the sent us configuration management SIG We have people from void linux arch linux a couple different distributions, and it's I really enjoy Collaborating with different distributions and working together with them And then we also have the ansible community room, which is where the ansible steering committee meets Every Wednesday, and we also have some other general discussion there So I'd like to thank everyone for listening, and I'm happy to take any questions as best as I can questions, oh and then also here's a link to view the slides, and I'll be uploading these To the sketch page after the talk