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


morning let us continue for the next day of lectures. So, one thing I want to remind you of which I finished up last time we were talking about 3D rotations and we went through four different representations. So, there is the native representation of rotations which is the rotation matrix 3 by 3 matrix for the 3D case. And the first thing we gave was yaw pitch roll representation which we talked about these canonical rotations right. We had yaw being looking like a no gesture we had pitch looking like yes and roll being like this. And we also gave you unit quaternions as a better representation and the reason why it was better is because it is very closely connected with another very natural representation of rotations which is axis angle representation due to Euler's rotation theorem that every 3D rotation can be represented as some amount of twist if you like about an axis through the origin. And that is very natural and very helpful when you start doing algebra of rotations you start combining rotations this the algebra of unit quaternions will combine the axes very well. And so, the transformation between these two was very simple right we had a very simple formula for that not difficult at all it is also computationally efficient. Rotations going back and forth between quaternion yaw pitch roll and rotation matrices are a bit more cumbersome. There is a very simple matrix full of quaternion components it ends up being very simple expressions in the matrix. So, it is not too hard to go from quaternions to rotation matrix if you want to go from yaw pitch roll to matrix you just multiply your yaw pitch and roll matrices together. So, that is not very difficult either, but it may be time consuming or expensive in terms of computation you know try it by hand and you will see you know. However, if you want to go from r down to these then you have to do considerable more work it usually involves some equation solving. And then there are sometimes numerical issues because you are essentially finding numerical roots, but it all has closed form expressions there is code for doing that it is not so bad, but you just have to pay attention if you write such code yourself that there are some subtle numerical issues going from r down to here. So, generally because of the the way these work out people very often prefer to remain in this part of the space and not do other conversions right. So, if we can work directly in there then there are a lot of advantages and that is one of the reasons why I gave you quaternion multiplication as an alternative to the matrix multiplication.  In fact, you can go further and do your quaternion transformations there. So, if you want to just I should say you can do your rotations directly using quaternions. So, I just want to give you a quick expression for that I am not deriving the algebra of that here it would take considerable more time, but suppose you have a point x, y, z that you would like to transform I will extend it by 1 dimension.  And now if I want to rotate this point x, y, z that is let us say perhaps it is in well just say anywhere in r 3. If I want to rotate this then I get some p prime, but I calculate as q quaternion multiplication with p quaternion multiplication with q inverse. And this q is representing the rotation that I want to apply to the point x, y, z right that make sense. So, in other words let me summarize given q some rotation that I would like to apply it does of course, correspond to a rotation matrix, but instead of converting to that rotation matrix I can directly do this algebra and apply q to p using this chain of two multiplications in order to get out the result. So, the resulting p prime that I get I just read off the first three components and that will tell me the rotated point. So, the quaternion algebra has been nicely defined in a way that makes this work. So, that it gives you the same result, but I am not deriving it here you can look that up on your own. Does that make sense? And you remember how easy it is to make q inverse right. For example, you can just negate the last three components. Speaking of that we had an interesting question last time which I just want to cover. We talked about the double representations of every 3D rotation when you use axis angle. And so, if you have axis v and some amount of rotation theta then if you take minus v I said that it is equivalent to a rotation of minus theta and then when we looked at the formulas for converting from quaternion to axis angle we noticed that there was a sign problem. Well normally if I apply trig functions to some angle theta if I add 2 pi to it the trig functions yield the same result right. So, it seems like it should not matter, but it turns out it does matter for this axis angle conversion formula because it has a term that says cosine theta divided by 2. So, the fact that you are dividing by 2 here means that if you do add 2 pi to it it will give a different result right because you are dividing by 2 before applying it. So, it is better if you are using this formula to write it as 2 pi minus theta. So, that is where that little bit of confusion came in last time and it seemed like the signs did not work right ok. One more thing I want to say about quaternions and then we will get on to the next bit of topics. Remember that we have this two different representations there are two different unit quaternions for every rotation. What could we say about those quaternions? Where are they located on the unit sphere? Opposites right they are called antipodal points. So, one thing that happens is suppose you are rotating your head around and you have some tracking algorithm and it is essentially moving through that space. So, this is let us suppose that sphere that sits in 4 dimensional space it is a 3 dimensional unit quaternion sphere and then as you move your head around you are essentially moving along the sphere somehow right is that an ok kind of visualization. So, imagine the quaternion is changing. So, as a function of time you are moving around this this transformation moves along this sphere. Now, I can in viewing it as a sphere I can imagine it has an equator. So, that sometimes I am in the northern hemisphere and sometimes I am in the southern hemisphere. What does that mean? Well above I could be saying it is a greater than 0 and below I could be saying it is a less than 0 where I remember a quaternion is a b c d. So, I could go moving around and if I am not careful if I start doing lots of transformations like this going back and forth converting I should say lots of conversions. If I do lots of conversions between rotations it may be the case that if I convert one way and come back I might all of a sudden jump to the opposite side of the sphere and I might conclude that something absurd has happened with my tracking algorithm right. How did I end up on the other side? It looks like a huge error, but in terms of rotation it may be exactly right because it just jumped to the opposite point. So, that causes a lot of trouble and confusion sometimes encoding these algorithms and in dealing with these kind of tracking algorithms and a lot of transformations in these spaces. So, some people might like to say I will just prohibit the lower hemisphere for example, I may just say stay away from here right. So, that as soon as you come down the northern hemisphere as soon as a is changing and getting smaller and smaller if it hits 0 you could just jump to the anti-podal point and then continue upward. Does that make sense? So, you can keep it trapped in the in the upper hemisphere the northern hemisphere in this case if you if you view north being a a increasing. So, you can force to change however, there is still some subtleties right when you come exactly to the equator because it is not it is not exactly clear what you could do what you should do exactly on the equator because you can still jump to the anti-podal point along the equator itself and you may have to protect that and divide that in half and so forth as you go all the way down to the final remaining dimension. So, it is a bit complicated at the equator itself, but I just wanted to point that out this 2 to 1 representation that we have sometimes causes confusion if you make very simple tests like how far apart are these 2 quaternions using simple Euclidean distance. They may be in fact very very close together, but they appear very far apart and attempts to fix that will help, but you have to be very careful about them. So, it helps to visualize it on a on a sphere I think and just remember that it is one dimension higher. Questions about that right. So, I am going to move on to the next topic I am getting up to homogeneous transformation matrices today. I want to remind you of a couple of properties of matrices before we get to that which I believe I mentioned last time, but I will quickly mention them again here. If I want to for example, rotate some point x y z. So, I put it in vertical column form and then I apply a rotation matrix to it just write it as r this is what I get right. So, I do this multiplication and I get out the result if I want to then apply a second transform a second rotation to the result of that the rotation comes out here correct. So, if I wanted to first apply the rotations together by multiplying the matrices it is just important to understand right. So, if I instead were to first do these multiplications and then apply the result it is just important to understand that the first one happening is is R 1 getting applied and the second one is R 2. So, it goes in this direction from right to left and since in many languages were very custom reading from left to right it annoys people right. So, it looks like it is going backwards. So, it is just something to pay attention to it is easy to get confused by that and remember the other thing is that if you want to make an inverse of a chain of matrices for example, if I want to have R 1 R 2 R 3 inverse just remember and this is going to become important as we start chaining matrices together and if you start digging into the software R 3 inverse R 2 inverse R 1 inverse and this is very easy to see if I just take my R 1 R 2 R 3 and I apply this inverse next right. So, that is the next thing I apply. So, it is goes on this side.  So, R 1 times R inverse that should be the identity and then the whole thing collapses together and then these two cancel and then it collapses together and then these two cancel and you just get the identity right. A matrix times it is inverse should give you the identity. So, that is what we get right. So, just remember that just basic property of shows up in group theory which is very general. So, this is the reason why it holds here because of non commutativity we have to be very careful. I will give you a great example of that in just a little bit right. Questions probably seen these things before somewhere, but just emphasizing that they are becoming important now. They may or may not have been immediately useful to you before.


Azerbaijan Armenia to resume talks in Washington soon. Washington is working to schedule the next round of Karabakh talks between Azerbaijan and Armenia soon in a bid to bridge their divides amid increasing border violence, Turin reports. We look forward to hosting another round of talks in Washington soon as the parties continue to pursue a peaceful future in the South Caucasus region. State Department's Principal Deputy Spokesperson Vedant Patel told in a press briefing Foreign Ministers of Azerbaijan and Armenia, Jayun Behramov and Ararat Mirzoyan were initially expected to visit Washington for peace talks early last week. However, it got rescheduled last minute. We continue to believe direct dialogue is key to resolving issues and reaching a durable and dignified peace. Patel went on to add, we continue to believe that steps that are going to incite tensions and elevate tensions are certainly unproductive right now, as talks between Armenia and Azerbaijan are proceeding in different venues. And so we'll continue to engage on this and look forward to hosting another round of talks very soon. When asked about Russian Foreign Minister Sergei Lavrov's latest attempts to downplay Washington's mediating efforts, Patel said in general, the US has been an important partner in the peace process and if Russia thinks that it can play a constructive role in this, certainly they are welcome to but we continue to feel that these talks are progressing, they're proceeding.


update. Good afternoon, everyone. Two o'clock, Tiger Financial News Network, Market Update, Basil Chapman here. We're looking at the Dow down 95 for 34,004, much weaker than the other indices, and you'll see. But you see this trend line called the Chapman Wave inside wedge, target support line, and the price match look to the day it came down and made an arch formation and testing the gap that we had looked at as the left side price point of most importance in the shorter term. Look at the S&P, S&PX, there we go. S&P right now is up 18 at 43.88. It did the same thing. It's left side, right side price time match came in on Friday, not exactly to the hybrid to an important candle, and now it's bouncing quite nice. It needs to get to the 44.23s this week and hold, not just get there and fail for this to be a really good turnaround. The IWM, QQQ, QQQ is the index 100, invest QQQ Trust Series up almost 5 at 363.08. Nice rally from the 354 loyal Friday to the 363 level right now. We're looking at 364 is the resistance that we're going to monitor this week to 366. If it can break above that, that is really important. Looking at the IWM, the Russell 2000, not acting well, store the 200-period moving average down 50 cents at 184.15. Gold, oh, I never did gold in great detail in the show, I just said it for Larry. 1923 up 7. It's just trying to form some kind of a base because the dollar is kind of stalling here that 200-period moving average magnet is just dragging it down 103.29, it's down 8 cents. Looking at the TLT, we did this in great detail a little while ago plus my show, the Tiger Tenitions Hour, down $1.26 and $92.50. This is not good news for yields. Yeals are going much higher. So I should just mention I'll be doing a webinar Wednesday, four o'clock to 5.30 Eastern time for subscribers to open your call. You can become a subscriber, you can get your money back if you're unhappy about things because you'll be able to go through all those different archive webinars and the techniques that we use. Have a wonderful rest of the day, stay tuned, great program and I will see you first week tomorrow. The Reality