 Good morning, everyone. My name is Kirill Satarin, and I'm senior super engineer at Red Hat. I'm developing SAP Automation Ansible Content, and I would like to present about how we used Ansible Molecule for development and testing of this content. So first, what I will be presenting. A little bit quick introduction into Ansible Molecule. Then I will be showing what Ansible Molecule driver is and how to use it, and then how we used Ansible Molecule driver and what are the benefits we saw using the Molecule driver we developed, starting with Ansible Molecule. Ansible Molecule is community project. Its main goal is to help in automating testing of Ansible roles. But it can also be used to automate testing of other content. The workflow of the Molecule is that you create infrastructure, then you apply the role and validate the result of your application, and then you can turn down the infrastructure. Infrastructure can be a lot of things. It can be containers. It can be instances in the cloud. It can be virtual machines, and so on. So we mainly focused on creating instances in the cloud. SAP systems are quite huge ones, and the landscapes are relatively big, and Molecule helped us in that to create and manage infrastructure. And for that, we created our own Molecule driver, which enables us to manage infrastructure in Azure, AWS, and IBM cloud. Molecule is just a Python package which you install, these people install. After that, you have to install a driver. So particularly, I will be talking about Molecule driver Azure, which we developed. You can do all these commands by yourself. As soon as you install the driver and Molecule, you have Molecule commands available to you. For instance, Molecule dependency, create, prepare, and so on. So each command responsible for certain steps in development or testing per process. So first, the dependency, you install all the dependencies you need for this particular scenario. So Molecule operates. You can have as many scenarios as you like. And then you create your infrastructure. So actually provision it or ensure that all the instances started in the cloud. Then you prepare it. So installing the systems, ensuring that all the systems are running. Then kind of main loop starts. This is a Molecule Converge command which you can apply many, many times. And this is actually the trial and error process during development and testing. Then you verify and destroy. So all together, all the steps can be executed with one single command, Molecule test. Digging deeper into the Molecule scenario structure and how it's organized. So you have a role name as a root folder. You do not need actually the role by itself. You can apply Molecule like testing to testing models and other content. You actually don't have to test anything you can just use to create and manage infrastructure. Main file which describes the landscape and kind of complete configuration is Molecule YAML. I will be talking about this a little bit later. Then you have playbooks. These YAML files create, prepare. These are just playbooks. By default, they're coming from the driver. And you can extend them. You can change them. You can use your own. Important playbook, I would say, the most cool one is the side effects where you can do basically anything. So we used it for backup, restore, and other actions as well. So how this Molecule YAML looks like, some parts of it. So we have scenario configuration on the left. Which describes for each and every command like Molecule create what will be the sequence of actions you are doing. So for Molecule create, we just create stuff. And create means we're running Create YAML playbook. And this is all configurable. This flexibility of Molecule allows us to manage infrastructure. Very cool. Side effects allows us to run any basically playbook which is available in sensor. So we do basically anything. We focused on backing up and restoring the whole landscape and delegating it. This is particular details of Molecule YAML file structure for our Azure driver. So on the left, you can see configuration of the driver. So we have dependencies, which is basically shell commands which ensure that all Ansible collections for Azure installed, which Azure collections also require Python packages. They also installed in this dependency part. And we have driver name, which determines the whole platform's configuration. And Platforms is a list of infrastructure you are going to manage. So in the middle, you see just an example. This is not complete list of parameters you can set for the instance. So as you can see, Molecule not only creates infrastructure and manages it, it also configures it. So for instance, data disks, it will provision data disks. It will create file systems, mount them, and ensure this in an important way. So if you run playbooks many times, nothing will break unless you break it. And all the parameters on the right, the additional parameters you can create instances in different locations, different regions, in different resource groups, virtual networks, subnets, with different users, and so on. These are all parameters that are extendable quite easily. So whatever is available in this particular case, Azure collection, Ansible collection, you can add this parameter. A little bit overview of how it looks architecturally. So we're starting Ryan Molecule command, which calls the driver. Driver determines which playbooks are executed. And this playbooks, they contain links to Molecule driver collection. Molecule here is being namespace and driver just a name, a collection name, yeah. This collection, Molecule driver is a wrapper around other collections which actually manage stuff. So Azure, Azure collection, Amazon collection, community crypto for managing SSH keys. So it will ensure that all SSH keys are uploaded. If you don't have SSH key, it will create one. For instance, it's very handy in CI environment where you don't have SSH key. Yeah, community general and POSIX for disks and file system management. In order to extend Molecule, we added this environment variable action, which allows manually run any side effects basically. So we focused on this side effects. But again, this is extendable. Just in one comment, you can do some major actions of your landscape. You just need to have a playbook for that. How we used Molecule and what do we see as the benefits? So first, we used it to create SAP operations collection, which is SAP automation in Ansible. During development process, we used it to ensure our landscape is running. So you don't have to actually create the landscapes from scratch. You can create landscape manually and then pass all the information to Molecule.yaml file. And this allows you to manage infrastructure using Molecule, ensuring that it's started. So all the systems will be started, instances created and so on. Then if you don't need it, you can delegate all the instances to save costs at the end of the day. This allows us to focus on development, not on managing infrastructure because infrastructure is created and delegated with just single one command. We are sure that we can do whatever we like in the landscape because we can always turn back to backed up landscape, the whole landscape, usually it's several systems. The copy and paste nature of this Molecule.yaml file allows us to quickly change something. So if we had scenario which was tested on REL8, we can quickly switch to REL9, just copying and pasting the Molecule.yaml file to another scenario and rerunning it and saying, oh, now we have completely different tests for completely different configuration and so on. And as I said, there is no need to start it completely from completely used Molecule from the beginning. You can just gradually create infrastructure manually, manually manage it in Molecule and so on. And it's very nice in continuous integration because you just need one command Molecule test and it will test everything assuming you have all the cloud credentials. So what do we see as benefits? It was not actually that hard to create a simple Molecule driver. So we had our specific needs and anyone with specific needs can either extend current available drivers or create their own. We see development speed up. Again, we don't care about the landscape, we just develop. We added it to CI CD. Why anyone would use Molecule to manage infrastructure? First, if they are developing Ansible content, I think that's a great tool for Ansible content. The second, if they just want to manage infrastructure with Ansible and Molecule allows to do that. And that's all from me. If there are any questions. I'm quite bored. But I don't have the money to run those tests on some other cloud. But are there drivers for QM? Or for me? Yeah, so the question was, we don't want to run tests in the cloud. Are there any Molecule drivers available for other virtualization? I think there is one for QVM, I think. Yeah, there are some drivers. So you can go to Molecule plugins and Ansible community repository and check because before some time ago all the drivers were separate repositories now they're all in one repository, all community drivers, I mean. So you can easily check if it's available or not. Thank you.