Good morning. I know all of you are still getting in line here to get some goodies this morning, but I wanna welcome you to the first grand rounds of our Moran Eye Center, new academic year. And we always put on an update on the Eccles Health Sciences Library and the Bloomberg Library resources, and we also highlight the Moran Corps. Clinical Ophthalmology Resources and Education. And so this grand rounds is brought to you by not only our fantastic library committee, all the people on our library committee, I wanna thank them for all their efforts through the year, and but also from the Moran Corps editorial team. And so to start us off today, we're going to have Dr. Griffin Jardine, who is our editor of the Moran Corps to give us an update on what's going on with the Corps and some of the subsections. So Griffin. That feels pretty typical. I usually get one person to cheer for me. So really grateful to be here. Grateful to work with Kathleen on the Moran Corps. It's been just a wonderful experience and the library committee, which is such an incredible resource that we'll hear more from later today. We've got a few wonderful representatives from the Eccles Health Sciences Library. The, an overview of Moran Corps, we have formed this collaboration been ongoing now for several years between our department and the library here, the Eccles Health Sciences Library. And I think the goal is especially pertinent in the kind of the time we live. The last couple of decades, I think have been very interesting with the information age coming forth. And then now I think we live in what's, I consider the misinformation age, where there is just such an abundance of information that there's probably more bad information out there than there is good information. And I've been thinking a lot about how the Moran brand impacts this website. And I want to thank everyone here and kind of the many people who've contributed to building the Moran to what it is, because I thought branding was really a marketing tool. And what I've realized is that branding is all about trust. And I think in this, again, in this misinformation age, when you see the Moran Corps or the Moran brand on a lot of this information, it just, it garners trust in a way that, that people then can look to these resources and benefit from the great kind of clinical and surgical wisdom in them. And I think it's been just a huge impact internationally as we'll see later with the statistics that we'll have presented to us. And so thanks to everybody for kind of all your contributions to the website and how that is really impacting ophthalmology care worldwide. It's a, this is a digital library of our kind of education materials from many, many different sources. And it's completely free and open access. We actually have had in some parts of the world where internet is not as reliable. We've been downloading this in essentially the entire website onto a big hard drive and then giving it to these residency programs and parts of Africa and other parts of the world because there's just such great material. The section editors have been really heroes in helping produce content and go through the editing process and the peer review process. And so I've got a list of all the section editors here and want to thank them again. We have two new section editors with neuro ophthalmology. Megan C has passed a baton on to Sravak Guntan and Megan did such a wonderful job with that website and reorganizing it. So thank you, Dr. C. And then Caroline Craven who are so excited to have join us has taken over UVitis from Akbar and Akbar really just co-wrote and edited dozens and dozens of articles as well. So thanks to both of them. I'm not sure if Austin, I know Austin had surgery this morning, is Austin here? No, I'm here. He, I know he had a conflict come up. I'm here. So maybe what I'll have is I'll have Judith go first. So I just wanted to hear from a couple of our section editors and just give us some updates on what they're doing and some of their ideas. So I'll turn it over to Judith. Yeah, they're right here. You have a question about this. So before we began, Austin is here. We're gonna unmute him. Oh, okay. Oh, see, okay. So we have Austin. Thank you, Austin. Can you guys hear me or? Go ahead, Austin. Hello. Austin, we still can't hear you. I don't know if you can hear us. Well, we'll go back to Judith and then Austin. We'll give you, we'll come back to you if we can make it work. 18. So down at the very, very, very bottom there is quality improvement. If you click on that link, according to Griffin, you get to this page here, which is our quality improvement page. All courtesy of Anna Sikola, she's amazing and she's done all of this hard work. There are two major aspects of the online quality improvement information about Moran. One is right through the Moran website itself, which includes a lot of the statistics and information that we hear about at M&M, endoplamitis and cataract surgeries and things like that. But the quality improvement page on Core is obviously highlighting educational aspects of quality improvement, not only how quality improvement is taught here at the Moran courtesy of Luca Boy and the amazing videos that he's put together, which you can access there on overview, the introduction to quality improvement, value improvement, how to develop and implement a project and improving what we do. Those are all educational videos about how to do quality improvement, which are critical for the next step, which is the resident quality improvement projects. And we all get to hear about the quality improvement projects at the residence research day. And it's been in a variety of formats over the years, but most recently, I think we all remember the wonderful presentations that were given by the residents. And so what we do after that is we go around like those pay to publish stalkers and go to the residents say, hey, we wanna put your video on Core. And most of them say, does this take any work? And we say, yes, but it's all Ethan because Ethan's the one who edits the videos to make them acceptable. And then we also wanna have a little bit embargo. So if for instance, a resident is planning on submitting their QI work for publication, we wanna give them the opportunity to do that. Although I think as will be described, there are not really preventatives. You can still put something on Core if it's been published and vice versa. So you can see here that very, very recently, our amazing Core editor person put up the Utah Tele-Ophthalmology program, which was Sean Collins QI project and the feedback Friday, which I believe was Allie's QI project. And then it goes back for 2022. There's a bunch of presentations. They're actually gonna end up being listed like that per year, just so that there'll be some sort of organization to it. I send out an email to like the past 10 years of residents to see if anybody had still their video. I have this weird feeling that like my niece when she finished high school and she threw her desk out onto the street, that residents may expunge all of their teaching materials when they leave the Moran. Because I don't think anybody really came up with videos from past years, but we continue to search and Ethan has been diligently kind of going back and trying to find anything that we might have from years gone by. But this is definitely something going forward. And so something that everybody can be proud of. I'm not gonna click on any of the links because we all know what's there. But some of these are really some of the amazing work that was done with DIA MOX and the lubrication for ICU patients, et cetera. Really, really terrific work that has improved patient care exactly as we would hope. Thank you, Judith. Wonderful, so appreciative of your leadership on that. Let's even get Austin's voice and then Ethan maybe also wanted to navigate the website if we can briefly. Austin, do you want to try the audio again? Yeah, can you hear me now? Is it working? No. Yeah, it says talking, but we're not hearing anything. Oh. Okay. Oh, that may not work though. The, let's see. Let me, I'm gonna read it, then we'll just move on, which is okay. Austin, do you want to do a test again? Let's see if we can get this to work. Hello? Yeah, that's okay. Just know that it would have been mind blowing what Austin had to share. But we will move on. Sorry, Austin, we'll catch you at another time, but Austin, just to kind of summarize, Austin has been taken over the, just to back up here a little bit. He's our section editor for Lens and Cataract and one of the conversations that we've been having with Austin is, how do we streamline the process of recording surgeries and then converting that into something that we can put online? And Austin, I think has his own digital library of some of his surgical videos. And Ethan is remarkable in helping us with that process, but I'll just ask you, is there, I think that's really, the videos tend to have the most views and impact surgical videos. And that's, we all know that to be true from just our own searches on ophthalmologic care, but any thoughts on, is there a way in which we can involve some of our trainees here and obviously Ethan's great talent to streamline that process? Any thoughts on getting more of those great surgical and unique cases posted? Say yes, add it to what the residents already need to do. Oh, thank you. But incorporating that into a schedule, I think would be a way that you could count on a steady stream without adding, no, well, in a simple way. I love that, Jeff. I mean, what's interesting is when you look at a lot of the Iowa surgical videos, they seem to predominate, many of them are, the voiceover is a resident watching through the case and sometimes it's Tom Odding or somebody else, but that would be a great way to do it. And any other thoughts? I think we all know how valuable surgical videos are when learning surgery and teaching steps. And I do think we have an opportunity here to continue to capture that and then to share that with the world. So I believe is Sravakunta here, Dr. Vagunta. She may be online as well. I'm kind of striking out with the online presentations. So Dr. Vagunta and I were talking also about our mole lectures. I think one of the really interesting parts about converting to a flipped classroom model is that it doesn't lend itself quite as well to being recorded and posted and then viewed by other residencies and ophthalmologic trainees. But that's actually what we've had a lot of success with is those lectures, which is, it's kind of shocking, but they're, you know, these are hour-long lectures, but our statistics are showing that they're getting watched often in their entirety, again, all over the world. And so we're trying to find ways of incorporating or still capturing the mole lecture experience, maybe with, and Ethan can come in to help us do that. But that's something that we're working on too. I'm gonna, there's something in the chat here that is per nut C. So I think this is some great thoughts by Austin. Maybe I'll just read this off real quick while we're here. Austin, sorry, could someone read this please? We have surgical videos that are already edited for surgical video night. We have med students and trainees that can easily do the written portion of the article. We just need to figure out a way to streamline the voiceover process. And I love this. I encourage trainees to learn how to do this. I think this is such a great skill. This is exactly what Jeff said. And then Ethan, can I ask, Ethan, do you, the process by which if somebody wanted to schedule an appointment with you to do a voiceover recording, are more people doing that with you or people are just doing that on their own with their own recording devices? People have been doing it on their own if they have been doing it. No one as of recently has reached out to help with any voiceover work. You have all the recording equipment and a pretty high-quality microphone, I believe. Is that correct? That's correct, yeah. So if you do need help with that, and as a trainee, Ethan's just so wonderful to kind of get some of that audio-visual support and expertise-wise. So perfect. Thank you for commenting there, Austin. Lastly, I just want to talk about an update that we have in the actual library itself, which I don't know how many of you have been up to go to see this, but they have built an entirely new room off the library and moved some of the shelving to create this meditation room for the residents. And Barbara and our whole academic team have worked so hard on that. Barbara, do you have any comments about this and its purpose and the work behind it? I want to thank you, Griffin, Dr. Petty, Dr. Simpson, Dr. Venkantu, Vaguta. Thank you for all of their work and for listening to the residents and being concerned about their wellness. I think this is really an important step for all of us to understand the pressure you're under and to have this little room to use as a meditation room, I think is great. I want to thank Christy Jarvis and her team for going through all of our old books and reference materials and bringing that up to date as well. So it should be a really great process now. Thank you, Barbara. So I appreciate all you do as well. Okay, well, thank you, everyone. Again, just all the contributions you make to the brand core really do have a huge impact. So I'm excited to see more of that and then to hear from our wonderful library team. Thanks. Thanks, Griffin. Next is an update from Christy Jarvis. Christy is one of our really key partners with the Eccles Health Sciences Library. We work with her to get the correct journals. We work with her to get books into our library and we've asked her to come and give us an update on all the assets that are at Eccles Health Sciences Library and to answer all your questions for your library needs. Christy, thank you so much for being here. At least most of your questions. No, no, okay. Please download it, Vansom. Oh, no, it's okay. Okay. All right, good morning, everyone. I wanna just quickly run through some of the services that the Eccles Health Sciences Library provides because if you don't know we do something, you're not gonna ask us to help you do it, right? So in a nutshell, some of what we do is expert literature searching. Thank you. So the Eccles Library team can help you with literature searching for grant proposals, for manuscripts that you're working on. And under that umbrella, some of the things that we can help you do is identify appropriate databases. The library has access to over 350 of them and believe it or not, PubMed is not always the best one for what you wanna do. Help you identify search terms, search strategies, finding evidence-based information for clinical queries and patient care and assisting faculty, staff and student projects. And I put expert searching on there twice because that is probably the thing that will be most useful to you. What else we can help you do? Set up save searches and alerts. I'm gonna talk a little bit more about that in just a minute. Data discovery and management assistance, citation verification and management tools, citation metrics and research impact, NCBI databases and tools, public access compliance and copyright and scholarly publishing, which I'm also gonna go into in a little bit more detail. So most of you, probably all of you, participate in the scholarly publishing ecosystem in multiple ways. And I'm aware that many of you are probably editors, peer reviewers, but I'm gonna focus on your role as a reader of the scholarly literature and as a writer. So when it comes to reading, there's a lot out there. I'm old enough to remember my father who was a professor of genetics, getting print copies of Cell Magazine and he would sit down in the journal and he would sit down and he would read it from cover to cover. And that used to be an acceptable way to kind of keep current with what's being published in your field. Show of hands, anyone do that now? I'm gonna say no. And if you're trying, you're probably frustrated. And if you're trying, please just give up. Don't even go down that road. To give you some context, there are at present about 35,000 current English language peer reviewed journals in the biomedical field and about another 10,000 that are not English. So you've got about 45,000 journals that publish around three and a half million articles every year. So it's been estimated that for general physicians you would need to read about 120 hours a week to stay current and for specialists you would need to read about 90 hours every single week. Show of hands, anyone have a free 90 hours in each week to read? I don't think so. So what you have to do is work smarter, not harder. So I'm gonna talk about two tools that you can use to kind of manage that information onslaught. There's a third that I didn't put on the slide but I'm gonna talk about as well. These two are tools that you can use to identify the topics or the researchers or the areas that you want to be kept aware of. The first one is a tool called read. They build themselves as being a personalized medical and scientific journal. What it really is is an app that you can download either onto your device or your desktop where you can basically create a medical journal that's full of just the stuff that you care about, right? Pulling it in from other sources. So within read you can say, I want to see whatever is published about the effects of COVID on people's vision, right? And you are following that topic but what gets pulled into your read app are articles on that topic from all different publications. So you can have the read app on your phone and when you're waiting in line at the airport you can just open it and just kind of scroll through the things that have been pushed into your personal medical journal of the topics that you care about. You can set up read to use the library's subscriptions so that when you tap on an article what gets pulled into read are just abstracts but you can set it up to pull from our subscriptions if we have them. So you can kind of customize in one place the things that are relevant to you. Read allows you to track individual journals, topics, individual authors if there's a researcher that you want to follow. So that is one tool you can use to kind of narrow the universe of information that gets sent to you. The other one is PubMed where of course you can set up alerts. This is, how many people actually have PubMed email alerts set up? Something that many of you use, any of you use? Couple people. Okay, so PubMed you can as long as you are signed into your My NCBI account you can set up a PubMed search. And if you remember from the earlier slide the library can help you set up that search but you can get alerts, email alerts as frequently as you want them from PubMed when new articles that meet your search criteria are published. The reason that that is valuable is so that you don't have to remember periodically to go in and run a search. The reason I threw up this slide is if you remember a couple of slides ago when I said, oh, the library can help you set up searches. For people that set up PubMed searches when they haven't done, trying not to insult any of you here if you've done a crappy search, right? The alerts that you're gonna get aren't gonna be relevant.  Cause it's just noise in your email inbox. So you can, if you have a very narrow or a very specific thing that you want to be kept up to date on you can set up a consultation with someone in the FLS Health Sciences Library to help you build a search like this. Most of you probably are interested in spending an awful lot of time constructing a search like this but a librarian would love to help you build one of these, right, that will pull in really relevant data. And so you will get alerts about articles that are really on point for what you care about. And so they're actually worth opening your email alert to reading, to actually read the article. So that's something that you can do to help you just kind of narrow. Remember I said there's about three and a half million articles published every year. This will help you just find the ones that matter to you. So that's a, those are two tools that you can use to help you manage the information overload. The third one that I said that I did not create a slide for but I'm gonna talk about it briefly is a platform called, well, it used to be called Faculty of 1000. It has recently been rebranded as Faculty Opinions. Any of you used Faculty of 1000? I'm not seeing, okay. Faculty, now Faculty Opinions is kind of like a crowdsourcing approach to keeping up with the literature. So the faculty is made up of thousands of faculty members across the globe. And there are actually about 500 people who work at the University of Utah who are volunteer faculty for this service. And what Faculty Opinions does is you can create an account and identify a field that you want to follow, right? You can say ophthalmology. And other people, other faculty across the globe will identify things that this is like, hey, you should read this. And here is why. This is a novel drug target. This is a controversial issue. This is a confirmation of something that, and so it's other people, other experts in your field identifying, this is something that you should read, right? So it's not just on you. The other two tools I talked about this is, I know what I want to read. Send me what I want. Faculty Opinions is more someone else saying, you should read this. So that is a, you have less control over that, but you may have peers in your field recommend something that you may have missed otherwise, right? It's something of, this has practice changing implications or they have categories where they will say, this is important for teaching purposes. This is important for whatever reason. So you can kind of see, and several times, it's very often that the person who recommended it will write a short review, kind of summarizing the impact and why it's important. So that's another tool. Yeah, you have to be a member of an academic, you have to be a faculty member at an academic institution. So yes, good question. Okay, PubMed, something to know about PubMed is PubMed is a search engine that anyone on the planet can, well, anyone that has internet connection can use, right? But when you search general PubMed, you will see abstracts to articles and full text links that are provided by the publishers. And if you click on that link, the publisher is like, oh, I would love to let you read this article, that will be $79 please. The University of Utah has a special PubMed interface and there's the link for it right here, that you either want to use that link to PubMed or if you use your My NCBI account to sign into PubMed when you do searches, you can set up your My NCBI account so that when you search PubMed, you will see links to the University of Utah's subscriptions, not the publishers like here, Pay Per View option, but our subscriptions. So when you go either to that link or you sign into PubMed with your My NCBI account, what you will see in PubMed is the magic find it button. If you don't see that find it button next to every abstract in PubMed, you're not using the University of Utah's interface for PubMed. So the only links you will have to full text are the ones that the publishers, so there's that Elsevier link in there, that if you were to click on the Elsevier link and go to their website, that may not be the place where we have access to that article, and so you're gonna be prompted to pay for it. So that find it button is what you want to click on anytime you're trying to get an article in PubMed. The other option for people who like using Google Scholar to search, you can set up your Google Scholar profile, so you can go into your settings, go into your library links and click University of Utah, Get It at UU, hit Save, and then what happens when you do a search in Google Scholar is you will see a Get It at UU button link next to each article. So that's kind of the equivalent of that Get It icon that I showed you in PubMed. In both of those cases, whether you're in PubMed or you're in Google Scholar, when you say that I want to get it from the University of Utah, meaning show me what we have as a subscription, clicking on either of those things takes you here. Now, the reason that it doesn't just automatically give you the PDF when you do that is because you could just be a random person, right? My next door neighbor can click on that and get the full text PDF, but they shouldn't because they're not part of the University of Utah, right? So that Get It link in Google Scholar or in PubMed is going to take you into the library's catalog and show you all the places that we have access to that article because very frequently, the library has access to any one article in multiple places. So it's kind of like you saying, I want to watch last night's episode of Jeopardy. Well, you may at your house have multiple places where you could do that. Maybe you have it recorded on your DVR. Maybe you have the YouTube channel for ABC. Maybe it's on one of your streaming platforms, right? So the first place you go to get it, maybe you don't have it there, but that doesn't mean it's not available. You might just have to try one of the other platforms. So when you click on those Get It links and you're brought into the library's catalog, you will see options for where you can get that article. So in this case, we have this article both from Science Direct and on Clinical Key and either one will pull the article for you. Now, while we're on this screen, I do want to show you, there will be times where you may not see a hyperlink to the article because we may not have a subscription to it. Remember how I said there's 35,000 journals? We subscribe to a lot, but not everything under the sun. So if there's no link there for a full text article, now what? Now what do you do, right? What's your next move? Are you going to give up? No, because none of you look like quitters. What really you can do is if there's not a hyperlink up there, if you scroll down a little bit further, there is an option that, can't remember the exact words for the option, but it basically says order this article. So the library, like almost every academic library on the planet, we belong to a secret network. Every academic library pretty much across the globe participates in a service called intralibrary loan, where we send things back and forth to one another, not because it's fun, but we do it because you need the thing. So if you get to this page and you don't see a hyperlink to the full text of the article, down a little bit further, you have the option to order it. Basically when you click on that link, all of the information from this article gets ported into an intralibrary loan order page and you submit an order for it. And what happens when you submit that is our intralibrary loan team says, oh, Kathleen DeGree needs this article from a 1927 conference, right? And our intralibrary loan team goes out and contacts libraries across the globe to see who has it. And we will find, most of the time, we can find someone that has it. They will send it to our library and it gets sent to Kathleen. So just because we don't have it immediately doesn't mean we can't track it down for you. And our intralibrary loan team, they're really good. Most of the time, if the thing that you want is available electronically, you'll get it within 24 hours. If it's from the 1920s and we're tracking it down in print, it'll take a little bit longer, but most of the time they can find it. So those are your full text options. And actually before I, I'm gonna jump into this. Okay, so remote access, easy proxy. Something you should know is that every resource that the library subscribes to is authenticated by IP address. Meaning when you try and access the information from the content provider, they look to see, well, what IP address are you coming from? And is your IP address covered under the license agreement that the university is paying for? When you're in your office, when you're on the university network here, that's kind of a seamless thing, right? You navigate to the content website and the provider says, oh, you are at IP address, blah, blah, blah, blah. Yes, that is part of the university umbrella. Come on in. Thankfully, most of us don't live here. We go home and we're on our cell provider's network or we're on vacation or we're somewhere where we are not on the university network.  That is likely because the publisher has no idea who I am, has no idea that I'm part of the University of Utah network and I'm covered under a subscription. So you have to be on the university network when you navigate to any of the library's resources. You got two options for doing that. The first is specific to library resources and that is the library's proxy server. So this is the library's webpage. All of those little arrows show the various places that you could click on that will prompt you to log in to get onto the proxy server. The other option though is that all of those get it at UU links from Google Scholar, all of those get it buttons in PubMed. If you click on those, the first thing that will happen is proxy server will say, you don't appear, well, the link will say, you don't appear to be on a university IP address and you will get the university CIS login page, right? Put in your information, do a two factor and then you will be redirected to the site you were trying to reach but now you will show to the publisher that you're on a university IP space. So they will let you in. So if you're navigating to things from Google Scholar or PubMed, those get it links will force you to get yourself onto the university network before taking you to the publisher site, which is important because that's the only way the publisher knows that you have access rights to that information. So questions about any of that? Okay. If you go the proxy server route after you do your CIS login, it will redirect you to the site that you were going toward and you can verify that it worked because in the URL address bar, somewhere in that address, you will see that easyproxy.lib.utile.edu stanza that's been embedded. That's where the magic happens. That needs to be there before the publisher sees who you are or sees that you were part of the university of Utah. Your other option for getting yourself on the university network when you're not here is to use the VPN. The VPN is software that you would have to download onto your device. You'd have to have that set up ahead of time. So you'd have to download the software and then you would have to sign into the VPN on your device before you start navigating yourself all over the interwebs. The VPN keeps you connected. Once you sign into the VPN, you will stay on the university network no matter where you go while you're on that device. I think eventually the university kicks you off after 12 hours. I think that's about how long they like, but otherwise you just stay on it the whole time. The previous method that I showed, the proxy server, which again is only for library resources. If you connect through the proxy server before you navigate to a journal, you will stay on the proxy server and therefore on the university network for as long as your web browser session stays active. So if you were using Firefox and navigate to a journal and 20 minutes later you close your browser session, you are no longer on the university network.   Or again, I think 12 hours is how long they pretty much tell you. So two options to get yourself on the network when you're not here. Okay, I was asked to talk a little bit about copyright and copyright is one of those things that people kind of vaguely sort of kind of know what it is, but to just kind of drill down and specify. Copyright protects the creators of intellectual work and it gives them and only them the right to do five things. So when you see signs about copyright, all rights reserved, the rights that that statement is referring to is the person who holds the copyright is the only person who can reproduce the work, prepare derivative works, distribute, perform or display the work. Okay, so whoever owns the copyright to the thing is the only person that can do that unless they give permission to someone else. So it exists for the moment you create the thing. You don't have to do anything to obtain copyright. You don't have to file a paperwork to get it. It exists from the minute it exists in tangible form. All right, I'll hop into this. So when you create something, a manuscript, a video for Moran Core, you own the copyright to it and you are the only one that can do those five things. So if Kathleen creates a video, I can't go in and say, oh, I'm gonna modify that and turn it into something else. I don't have the right to do that. I can get permission potentially, but I can't just do it without asking. So there's another form of permissioning that exists which are Creative Commons licenses, which is where a person who creates some content doesn't necessarily want to hold tightly to all of those copyrights themselves, all of those rights. They're kind of like, well, I created this and I already know what I want people to be allowed to do with it. So I can license it using a Creative Commons license and upfront say, I will let you do certain things with this without you having to contact me to ask permission. So some of those Creative Commons licenses, many of you have seen some of these symbols attached to things where someone has created something and put it out there with one of these license terms attached to it. So again, instead of all rights reserved to the creator, they're saying, I may be retaining some rights, but I'm giving other rights upfront. And so they may say, you are free to use my work, but you have to give attribution, right? So that's one of the license terms. You're free to use my work, but you can't create derivative works from it. You're free to use my work, but you have to share it in the same manner in which I've shared it. So you can't take my work and then license it more restrictively, right? If I've shared it with you, you have to continue to share or you can use my work, but you can't use it for commercial purposes. So there are opportunities to license your work without being restrictive. So why I'm bringing this up is that for those of you who in your wearing your author hat as a member of the scholarly publishing community is not only are you reading content, you're often creating content, right? You're writing journal articles. So if you have, you know, sweated blood and tears and you've created this journal manuscript and your manuscript, you submit it to a journal, you as the creator of that manuscript have those copyrights, right? You're the only one that can do those things, distribute, create derivative works, et cetera. Up until the point at which you sign away your copyright and give those rights to someone else. Christy, why would I do that? You do it because the publisher makes you do it in exchange for them publishing your work in their journal, right? So that article that you just created and you submitted and Elsevier said, yes, we would love to publish it here, please sign this copyright transfer agreement form, which you usually do because you're like, I wanna get it published. I have an RPT review coming up. So you sign away your copyright, which now means you don't have the rights to do any of those things. Elsevier has the right to do those things. So you have just lost the right to distribute your work, create derivative works. All of those things Elsevier now has the right to do. So if you were planning on reusing some of the images in that article for a book chapter that you're working on, guess what? You're gonna have to get permission from Elsevier to reuse your images, right? So the author rights, those copyrights are yours as the author until you give them away. And what many people don't realize is that you don't have to give them away. Publishers, that's just their default. And most people just sign it because that's also their default because they wanna get it published. So if you transfer all those rights away, you're kind of up a creek. So one of the things that you can do is you can spend a few minutes before you submit a journal article or a manuscript thinking about what potential rights to some of that content or all the content you might anticipate needing going forward. So a good example is that if you know that you want to reuse the images in a book chapter that you're working on and you know that you're gonna use something in some other way, that you can negotiate those rights for yourself to retain them before you have your article published by Elsevier and have them take everything away. So I've completed a link in this slide. There is an author addendum form that you can use to communicate this information to a publisher is not required. You could just write a letter if you wanted but the form is something that publishers are getting more and more familiar with seeing. So it's a format that they're used to. So it's a thing that you can fill out and say, I would like to retain rights to my images and you can negotiate that with the publisher. Some publishers are more open to negotiating than others. I will tell you that regardless it will take some additional time and publishing is already a lengthy process. So just be aware it will slow down the process but you do not have to just blindly hand over all those rights to a publisher, particularly if you know that you have reuse purposes in mind, so question. If you've already signed the copyright transfer form probably. Oh yeah, so she asked if you've already had an article published, submitted. If it has not been published yet, no, you probably still could negotiate that. Yes, exactly. Yeah, I would recommend that when you get the acceptance notification that is the point at which you should say, here I'm submitting this form, here are the images I would like to retain rights to. Yes. I have a question for you. What do you think would be faster to do this negotiation or just go to the site and ask to reuse, which in my experience is something really easy to do and you don't pay anything. So which is faster the second, right? If you're trying to get it published quickly, negotiating is gonna take some time. If you've already had something published and you know you wanna use some images, some publishers are really good about granting permission for that, others you will be asked to pay for, so it kind of depends.  Well, at that point maybe you're up a creek, right? What are you gonna do? So it's not too late and some publishers have a very smooth process to get to ask permission to reuse. Yeah, I did this many times, I never had to pay anything. There was not one instance where they asked money for you, especially when it's your own work. Were you ever gonna reuse it in a textbook? Oh, I did many times, yeah. Because publishers tend to be more strict about requiring payment if you're going to reuse an image in something that is where there's commercial value, where you're gonna make money. I'd like to emphasize that you're going to put something in the brand for anyone in the image so that you own your image when you put it in. Correct, because if you published it in an article that was published by Wiley, you can't at that point then put it in Moran core. Again, going through the process of getting permission because it's not yours any longer. Which is a really twisted way to think about it, right? You created it, but yeah, it doesn't belong to you. Yeah, questions about that? Okay, these are some questions that I think Griffin, gathered from people who shared them. So I'm just gonna read these and address them to the best of my ability. So do we as faculty have access to an electronic company of the BCSE? The short answer is not any longer. AAO used to license the BCSE on a platform called Impelsess where the Bloomberg Library Committee paid an annual licensing fee and it was through a URL, anyone could access it. About two years ago, AAO abandoned that model and the only electronic access now to the BCSE series is through an individual subscription. So like I could pay for an online subscription to the BCSE but it's not something that can be shared with a department or with an entire university. So there is electronic access but it's not available in a way that is broadly accessible. That makes sense. Subscriptions for other educational purposes. The university and the library do not have Kahoot or OWL. Those kinds of educational resources are things that the Office of Software Licensing is interested in getting people to recommend for them to look at that they would license for the entire university but we do not have either of those. Could we as a faculty have access to the AAO question bank? That also works on the same model as the BCSE where an individual can get a personal subscription to the online bank but they do not or they have not up to this point offered an institutional or departmental online subscription. Resources for making a bibliography. Is this question dealing with like reference managers? Is that kind of, okay. So the university has, it's not free but they subsidize individual licenses for EndNote which is kind of the platform that the university prefers. That doesn't mean that you as a author prefer it but that is the one that the university has chosen. So you can get EndNote licenses from the Office of Software Licensing for I think it's $23. If you're interested, however, I would say wait because that $23 is for an annual license and it's not an annual license meaning one year from when you paid for it. The annual license every year starts it's like August 23rd for something like, it's like the last week of August. So don't buy it now because it would end. Your one year doesn't really, it's not one year from when you paid for it. It's when the license ends but pretty much the beginning of every academic year is the best time, academic year meaning August is the best time to get an EndNote license. There are free versions of both. So EndNote basic is available on the web you don't have to pay for. Zotero and Mendele you can use free up to a certain point. The free web based versions have fewer functions they're not quite as robust as the desktop version of EndNote. So that is what the university recommends. But if you're interested in having someone sit down with you and use one of the others like Mendele or Zotero or even EndNote, you can have a librarian sit down and show you how to set that up. Yeah, question. And so you can save that and then export the citations. Yeah, yeah. I mean, so that whole bibliography depending on how robust you need like you need to be able to export it in multiple different formats and all of that there are some decent free tools. Most of them have file size limits which is something to be aware of but don't give you as many options to manipulate the output as the desktop version of EndNote does. So that's something to look into. And then other resources for manuscript preparation I'm not sure is this again for citations or for actually doing the formatting of the manuscript. Yeah, there's not a universal one because different publishers have... More publishers are starting to publish templates that you can use like kind of Taylor and Francis has theirs where they say use our template because then the submission will begin the format that we want to see it in. So for residents, you do have access to the Graduate Writing Center. So you can get some actual writing assistance from writing mentors. So if you have a draft that you want to sit down and work with a writing specialist on the Graduate Writing Center faculty, sorry, you're a little out of luck on that one. So the Graduate Writing Center used to be physically located in the Eccles Library. They have moved now, I'm not sure physically where they moved to, but most of their appointments are virtual and Brian, can you pull up the URL for the Graduate Writing Center? While he's pulling that up, one last thing that I will mention to residents. The resident meditation room that Griffin showed is amazing and I anticipate most of you that is where you will spend time. But be aware that as a trainee, you have 24-7 badge access to the Eccles Health Sciences Library as well, which is a good option. I think if you are planning on being here like on a Saturday late at night, just because the library does have 24-7 security, there's our security guards that patrol. So you may just feel a little bit safer there. Plus I see a lot of residents in the library at like five o'clock in the morning using the treadmill desks or the bike desks going through email. So you have access to the building outside of our regular hours for everyone else. It's Monday through Friday, 7 a.m. to 6 p.m. But trainees do have badge access, which just as another option for, you know, when you're here late at night studying. Yep, okay. Yeah, I was just gonna say, we do have a Kahoot membership. It's not like through the library, but I have purchased it and we're taking the Netflix approach to Kahoot, which is I just share my username and password with whoever wants it. So it's probably not, it's actually designed to be shared by 50 people, but we haven't actually figured out how to grant that access. So anyone who wants to use Kahoot to help them with lectures, just ask me and I will give you my username and password. I think other faculty members have purchased similar type subscriptions to Q-Banks and we can apply a similar approach. Again, not probably fully legal, but we'll just keep it a secret, like sharing your Netflix password in exchange for like your Hulu and your Disney Plus. Yeah, I am aware that there are individuals. The reason I said there's not any, the Office of Software Licensing, if you're not aware, you have a place where you can submit recommendations of things that you want the university to evaluate to make them more legally available to a broader number of people. And I- Yeah, we do have the paid Kahoot. So I think actually it is legal, legal to share that username and password and same thing, someone has paid for access to Q-Banks. So if those are resources that you want, the academic team can kind of make those accessible to you guys as faculty. In our last two minutes, I'm going to introduce Brian Hall, who's our head of digital publishing. He took over for Nancy Lombardo, and he's just gonna give us really a brief update on the Moran core stats. Very brief. The Writing Center's website is writingcenter.utah.edu.  So I'm Brian Hall, I'm the new head of digital publishing. So if you're asking yourself, where's Nancy? Which I ask myself every day, quite a bit. It's me now. So I'm the project director of the Moran core project. So if you have questions about the functionality of the website or processes or anything of that sort, in terms of getting things up on the website, I'm the person to ask, that's my email. And so there were 101 items added to the core last year. So keep up the good work. On the bottom of the website, there is the guidelines for authors. So if you're submitting something like a case report or a video of your own, look there first. It'll give you a template. It'll give you the information that we need and that you can fill out that will make your life and our lives easier. So for the websites, really good numbers so far. And so this is just Moran core.utah.edu. So we're halfway through 2023 and we're basically on pace to double the numbers that we had last year, which is really good news because Google kind of changed the way that they counted things. So you can see a dip from 2021 to 2022, but the line is going up. So the impact and the eyeballs that are on the material is increasing. So that is good news. On the flip side, the YouTube stats are kind of plateauing a little bit, but this is still not a bad thing because there's millions of views, lots of hours watched, and the subscribers to the channel are increasing. So the benefit of having all the videos on YouTube is that it's essentially cross pollination. People can look at the material on YouTube and then go to the Moran core and vice versa. So it's just an easy way to kind of double dip on potential viewers. So again, if you have any questions about the core, ask me. If you have any questions about the library, you can ask me, but probably ask Christy. She'll be probably a bit more helpful than I am. So anyways, thank you so much and yeah, have a good day.


This is Michelle DePama, Principal Solutions Architect, and your host of the Data Services Open Data Foundation Office Hour. I am here with Daniel Park. Thanks for coming back. And special guest, Stephen Wilson. Hello, everyone. Hey, so this show's a little different than some of the other things we've talked about. So you guys wanna introduce the concept for today's show? Yeah, so the idea that we had is just sharing a little bit, how can we deploy ODF, no? That Data Foundation using a little bit like the GitOps approach, no? With the help of our GoCD as the tool to do the deployment and just compare a little bit the traditional way of deploying ODF with this new approach that could be using GitOps. And the idea was for Stephen to give a brief introduction into how we have applied GitOps to deploying ODF and doing also data operations. And then we have a demo where we can show a little bit how it works and give an explanation on the things that we have made, not just as an example really of using GitOps with ODF. Yeah, yeah, sure. Talk about the manual deployment method that we've traditionally used as well as will be infrastructure's code deployment method where we're using the GitOps methodology to produce the infrastructure that we're gonna run these workloads on, especially inside of OpenShift. Just recapping, most times the manual deployment involves deploying the ODF operator from operator hub and then we mainly go and we label and sometimes we tank the ODF nodes that we're gonna use. And then we also go and we either use the UI or the command line to add storage cluster to the OpenShift cluster. Well, with the GitOps method, we establish a desired state and then we use OpenShift GitOps or a GitOps controller, some type of controller to take that desired state and make it so in the cluster and we reach our final state is what we want. And that's typically managed by PRs and merges from different branches to main branch that the cluster uses to deploy the infrastructure that it's composed of. What that typically looks like is you usually bootstrap an OpenShift cluster and then we add in OpenShift GitOps more commonly called Argo CD. And we point that to a Git repository. And then from there, the Argo CD instance monitors the applications that we've deployed within the Argo CD deployment. And it monitors those and watches for changes and syncs the cluster with the changes that have been pushed into the Git repo. And management of the cluster from then on is either through pull or push PRs and making the cluster the desired state. And really that's it. And the good thing about that is everything's logged and tracked and it really helps with the security posture of the environment. So quick question. So the motivation for approaching it this way would be you would capture absolutely all the customizations that you've done and that you want done it repeatable. You can do this on any. So you've got it all maintained in your kind of GitOps Argo CD pipeline. You don't have to go back in and do anything later. So if you lose a cluster or you're migrating clusters or whatever you're doing with something fresh or you can go back to and restore this state. Is that correct? Because my initial thought was like, why would we do it this way? And I'm like, well, I guess you've got a million little things that you've actually changed to your ODF installation that you may want to keep track of. So, sorry. Go ahead, Jen. That's true. And then also at the same time from a security perspective, it allows you to see if the cluster is in line with what your desired state. So Argo CD allows you to see that, hey, this cluster is not in sync. And then you ask your questions, why is it not in sync? And then that's when you should have checks to constantly make sure that the cluster is in sync. And then if it's not somebody has done something and then you get security to work at it, to look at it and things like that. So that's another tracking mechanism as well as what you had said earlier about just managing the cluster through GitOps. Yeah, that's what I was going to mention. Because when you have this GitOps approach, really you have a repo, your GitHub repo that is the source of truth for the desired state of the cluster. And it can't be any other way. It has to be as you have it in that repo. And then automatically you are taking advantage of all the auditing and trailing that you have in Git, because you have a pull request where somebody has to say, okay, I want to make a change. And then somebody has to approve it and you're going to have the time that when it was approved, so you have a perfect audit trail of all the changes in your cluster. Now that is really a big advantage. Even as you said, Michel, because maybe there are not so many things that you can touch or configure when you're deploying ODF, but then with data operations, maybe you want to add more OSD, there's no more space to your cluster. You want to enable, I don't know, for example, Radar Skateway or certain changes, know that you want to do, then you can perfectly follow the trail of who has modified it, when and why, you know? How many times have we, something happened in the network or in the cluster and everybody's asking, what do we change? When do we change it? Who did this and who did that? And in the course, everybody's saying, not me, I didn't change anything. Well, that's why we got that get history to say, now you did increase the size of the ODF cluster and it wasn't approved. With a comment, no less. A reason why you did it. Yeah, as long as you got a good reason, you're good to go. Okay. Yeah. So, I think, yeah, go ahead. I was going to say, typically one thing going further with it, typically, when we implemented the solution, there's two really popular methods, using customized and using Helm charts to add these repos and manage the state of the cluster. And Daniel's going to go through and show you an example of those. And also the kind of structure, a recommend structure or one way of doing things for managing the cluster with the ODF cluster with the get-optimistic. Daniel, are you going to share your screen? Do you want to? Yeah. Okay. I will share my screen just a second. The full, this entire screen. Can you see that? Okay. Yep. Coming through Claire. Yes, perfect. Well, I just have a couple of slides, but it's really to explain a little bit what we're trying to achieve in the demo, that we're going to show today and that we're going to go through just to give a little bit of context to get us going. So the idea or the goal that we want to achieve in the demo today is get ODF deploy using the get-ops approach, as we mentioned, with the help of Argo CD that is going to sync the desired state of our ODF deployment. And then we want, as a destination, no, we want to deploy in two different clusters. We want to deploy ODF in a cluster that is production and in a cluster that is development. And we also want to have different configurations in each of these clusters, so that really when we want to apply those different configurations, we want to think or make different configurations is when, as Stephen was mentioning before, you have different ways in which you can render or generate or modify these objects that you want to apply to your cluster, not the desired state. In this case, we can see here in the left that we are going to have our source of truth as we explained, a Git repo, that is the one for Argo CD. And that Git repo, the contents of that Git repo is going to be a HELLM ODF chart, a HELLM application that we're going to go through in a second and I can show you a little bit how it is structured. And once we have our HELLM application, we are going to use Argo CD. And in this case, Argo CD application sets to get automatically deployed the desired state of our ODF deployments in both of our clusters, not the production cluster and the pre-production cluster. Just very briefly to mention, in Argo CD, we have the concept of an application, but an application has a source and a destination, but you can only configure one application per one Argo CD cluster. Now with application sets, the advantage that it has is that with an application set, you can configure several clusters. So you are going to deploy the same application on X number of clusters, using a template that we are also going to check in a moment. So it's very powerful and very easy to use and it's a really good tool to, from one single place, be able to deploy X number of clusters. In this case, we're going to deploy ODF. The last one, the last slide that I have here, and it's just to get you through a little bit what would be the workflow of the demo that we're going to follow, is first, we need to have Argo CD running, as you can imagine. No, we need to have the OpenShift KTOX instance up and running. I have already completed these steps for the sake of time. No, otherwise the demo will be too long, but I'm going to show you anyway, how, what it looks when it's running on the cluster. So we go through that. This is the part that we have here in the left and the steps that I have come through is really deploying the OpenShift KTOX operator. That automatically deploys an Argo CD instance. And when that Argo CD instance is running, we have configured a repo and a project that I will show you now. Now, the repo is going to be our GitHub repo, our source of truth, and a project is an Argo CD project where we define or we set certain rules for our source and destinations. I will show you that in a moment. And then I have also added the production cluster and the pre-production cluster to our Argo CD as clusters. So we can manage them and we can also configure applications on them. I will show you this in a moment. And then what we are going to actually do now during the demo is the actual ODF deployment. And we're going to go through these steps that we have here that I'm going to briefly mention as we go along. So do you have any questions or shall we begin going through the demo? No, dive right in. Yeah, let's jump right on in. Okay. So because we work with Git and Git is our source of truth, we need a Git repo. And I have already cloned the Git repo that we would also leave on the link, on the notes of this recording of this video. But you can see here that I have already cloned the repo and I have here... Can you make your font a little larger? Yeah. The visual paradigm. Thank you. Yes, that's a good point. Is this better or...? Yeah, I like that. Okay. Great. Thank you. Thank you for that. So let me just clear this. So here we have the ODF help chart or help application. We are going to use... And let me just show you a little bit the structure of this folder that is our actual application. Here we have a chart. Jamel file. This is a standard for Helm applications. In the chart you normally set metadata like who's the maintainer of the Helm application. If it maybe has any dependencies, prerequisites, some things like that. Then we have the templates. This is another folder. And inside the templates folder is where you have all of the objects that we want to apply to deploy ODF. So you can see here that, for example, we have the namespace, we have the operator. So all of these are the objects that are going to get applied. And then we have values files. These values files that I'm going to show you just in a moment and we're going to modify are where we specify the parameters that we want to set for each of our clusters. So let me go into one of these value files, for example, for development. Sorry, let's go. Set here ODF. And as I said, this is just an example chart that we have put together for the demo. To give an idea of what you can do, but it doesn't mean that you have to do something exactly like this or maybe even close to this. You can do whatever you like, depending on your necessities. But this is just an example that maybe can get people not going with this kind of example. So with this chart, the thing that we can configure, for example, is our version of ODF. We're going to use ODF 49 because our OCP is still configured in an OCP version 49 that I will show you right now just in a moment. We can also configure the requests and the limits for all of our ODF services that we're going to leave them as they are. We can also configure here if we want to have Radius Gateway enabled or disabled, Multi-Cloud Gateway, our Chef Tools. So let's, for example, because we have to make some changes now, let's, for example, enable the Chef Tools. Sorry, let's set this to true. And the Chef Tools is just a small pod that gets deployed. When ODF gets deployed, you get this small Chef Toolbox that you can exit into and it will give your shell into Chef that is really nice for troubleshooting issues. So let's say that we want to have that in development deployed. Also, in this chart that we have written for ODF, if you are running in AWS, you can select if you want to have dedicated ODF nodes. So if you set this to true, that we're going to do it in production, you will get worker nodes deployed for you. So using a matching set, an OCP matching set, you will get three worker nodes deployed and they're going to be used as dedicated worker nodes for ODF. Now, when this is enabled, let's say that for pre-production, we want to save resources. So we're just going to use our standard worker nodes that we have running and we don't want to enable dedicated nodes. And here we have the configuration of the storage cluster. So the number of OSDs, if encryption is going to be enabled, the number of replicas, this is the storage class that we're going to use. So this is a storage class from which our OSDs and our persistent volumes are going to be created from and also the disk size. Let's say that we are running a development cluster. We want to save resources and we're going to use only 512 gigs for our OSDs, not as a size. So that would be the configuration that we have for our development cluster. And let's go a moment into production. Can I ask you a quick question? So are there, I mean, that's from what I remember, that pretty much looks like everything you do on install when you go through the operator kind of UI path. Is there anything missing? Are there any limitations to doing it this way? No, not really. That's a good question. There's no really limitation. It depends on how much effort you put into your hands, let's say. So this is something that we have for the example. It's quite, you have quite a lot of options. Maybe there are some things missing here, like for example, deploying with a logical storage operator, deploying with LSO that could be added. But you can get as creative as you like and everything is going to work so that you are not going to miss anything. The only thing is depending on the effort that you put on your Helm chart, to be as rich as possible. Yeah, and I would say that's the benefit that Helm has over the customized version, is that within the Helm chart you're able to make decisions based on what the current cluster looks like, as well as decisions that you're able to make through the variables that you instantiated, like Daniel said, the decision could be if you're on AWS, then use these variables, if you're on vSphere, use these variables, and all of that is in the Helm chart. And Michelle, there's also a great benefit also that the CLI has over the UI, and that is there are some parameters that we're able to change on the CLI that you're not able to change within the UI. Right, right. The toolbox, I think maybe made my information all the things like the toolbox are always CLI, right, and what have you. The toolbox, the different sizes of the disk that you use, you can change that from the CLI, whereas in the UI you have the three different options that you have, but yeah, there's a lot of changes that you can make just like Daniel's showing here, the memory request and the limits that we have, you can change that on the CLI, and then also some of the components that you do not want to deploy like he had enabled is true for some things like he's showing here now the multi-cloud gateway being enabled or not enabled, those are things that you would change on the command line in your storage cluster CR that eventually gets deployed by the Helm simply engine and usually what that looks like at the end of the day is simply an OC apply. Okay, so quick question around this and I don't want to get too much into it because I know you have good stuff to show us. So let's say is there a convenient way to dump this state so that I can then put it in getups and follow this? Is there an easy way to do that or are you going to end up going through the command line looking at this and looking at that and those parameters? Is there any transition path there? For you know what I mean? If you were looking at something you didn't know what was going on because you didn't set it up so you want to know what's the fast path to this? Yeah, you have like I think ways of going around that. No, you could go and and look the actual chart that we are looking at here and then you have all the options and you have the latest version because you're going to go to get and you're going to get the latest commit that is available and you can also render the file. So I will show you that afterwards but what we are doing here is we are setting a certain parameter certain values that then they're going to be pushed into the actual object to deploy to deploy multi-cloud gate whatever. So even if someone gets a little bit lost with this parameters there's a way that you can do a dry run and you can render all of the parameters and you can take a look and see what they actually look like and then you could take a look at that and in the other hand we're also going to show you afterwards you can take a look on the different parameters and you could also check from there that we can see in a moment also. Okay, awesome. And also OC Describe is your best friend. I was just thinking because the ODF it has a lot of parts you have to get into all the parts so continue please. So I went into the production I will just at the moment we did pre-production so we have let's say that we want to apply for our development cluster already now we are going to modify production now that we want to let's say change certain things like for example let's say that because it's in production we have more resources and we want to set the limit for our OSDs higher because they're going to give us better performance not just as an example let's say again let's enable the test tools that it's always a good idea and then here I wanted to use the dedicated nodes again this what it's going to do is going to get a matching set and it's going to deploy three nodes for us in AWS and it's going to label them and it's going to get them ready for use with ODF the only thing that I need to do here just a moment is get the cluster ID from the cluster so let's just run this command are you just going to call it yeah here we go okay so we go back into our file and I just have to change this cluster ID because it needs it for the for the matching set to work the region and the AMA file it's exactly the same so we don't need to change that let's say that encryption is true we can leave that set and as you can see we are using bigger drives because we are working in production and let's say that we need more space here okay so we have modified our files let me clear this for example if we do a get status we can see what has been modified for the moment now that we have modified these two files the development and the production cluster so now what we need to do is actually push them to our our get repo so I'm going to this is a standard get commands now I'm going to do where we can set a commit with a comment like you just mentioned before where we say values or obf for example and now let's push this to our upstream repo so this is going into into get hub and into the upstream repo okay so we have made our modifications they are in the upstream now the next thing that we want to do it's actually work with Argo and create the Argo CD applications now with this Helm chart that we have just let me show you a moment where are we running so you can see here I'll see get cluster version so as you can see this is like a 49 OCP cluster and we have an instance of Argo CD already deployed so the only thing that has happened here is that the operator has been deployed and it has configured an Argo CD instance as you can see here we have a controller for the application and also for the application set so we have Argo CD running and then I have also I'm going to use for this part the Argo CD CLI but you can we are also going to see how you can do it on the UI but just let me show you this Argo CD that we have created a project this as we mentioned before when we are going through the slides an Argo CD project is not an open shift project this is a part of Argo CD and really what you define in a project is like you are trying to set limits on the on the destinations that the destinations can be on which clusters on which namespaces I can deploy an application and also the sources that are available or that are permitted for this project and in this case you can see that we are using our github repo okay so that's the project that is ready we can check that we don't have any applications deployed for at the moment and the other thing that we did is add the clusters so as I mentioned before you can see here that we have the development cluster where we want to deploy ODF and we have the production cluster with the URL not to the API already configured into Argo CD next what we need to do is use an application set to actually get our applications no Argo CD applications deployed for that normally when we run this with automation it will normally all of it get deployed but I wanted to automatically but I wanted to run it manually so you can also take a look at it looks like no so going into what we were mentioning before when we said that we could render the files no this is the command with Helm that you can use to render all the variables that we have in values into the actual objects that we have inside the templates so what I'm going to do right now is render our Argo CD and you're going to be able to see it because this really generates files for us in this folder what we're going to need because there's some strange space there so let's go manually through it here it is and really what I wanted to show is the application set that gets created no so this is the our application set and this is the application set already rendered for us no so when you were mentioning before Michelle if there's a way to see what the state looks like you can use the Helm template command that I just run here and you will get the render version as I said normally this will be done also through Argo CD the creation of the application set but I wanted to just run it manually so we can do an OC create and see it will be instantiated just like regular template in general templates okay here with application sets how more or less the idea behind application sets is that you have a generator and you have different types of generators here we're using the the simplest one the easiest one that is really a list of elements that we want to get deployed or defined in our template but I will go through that now in a moment but if you take a look we have a list of elements and what we have in our list is the clusters to which we want to deploy our application so this is just a list where we would enumerate all of the clusters where we want to deploy as you can see here we have cluster pro and cluster def that are the same clusters that we have configured already in Argo CD as we mentioned before so what you have is a generator this list of elements and then that list of elements is going to be applied on this template so really what is going to go through is in a loop and it's going to apply wherever you have the cluster variable is going to apply what is defined in your list of elements so really here we are generating Argo CD applications on the fly so let's say that from the template onwards we are generating Argo CD applications on the fly and what's an Argo CD application as we explained before is a source of truth in kit and a destination where Argo CD has to automatically sink the state and as you can see here I need to jump real quick how do you want to handle it will you be able to come back I will you can jump off and then come back when you're ready okay same place for you perfect yeah so what I was mentioning also you have the source really and a destination the source is where is our github repo what type of application that we are using so as you can see here we have source the kind of application that we are using is Helm what is going to be our value files that as you saw before our value files is really where we are configuring all of the parameters that we want to use where you can see here that we have values and then the variable is going to be applied for each of the ones that we have in this list that if you remember and we take a look here I can just very quickly show you here are go github f so as you can see here the value files that we have here is going to convert it into this one and this one so that's really why we have that defined in so so quick question so just make sure that for everyone listening to get this straight so we are using Helm to then we're going to deploy a Helm chart which is going to configure our go CD to have a project that's going to have a destination of whatever we put in the list there and then go and apply all of the values that we like to hold all of this information we have that in a github repository yep that's all right just checking because I'm not a github person yet so I just want to make sure I have like the right the whole workflow then I'm like okay so go on yeah you can do this in many different ways because there are let's say that there are there are people that use different repos one for our go CD and the management the same repo but then use folders you can have everything in the same repo but then use branches for different things so there are many ways of going around this in this case we're using the same repo but we're using different paths so we have a path that is ODF where we have our Helm chart our ODF Helm chart but then we have another path that is bootstrap where we have all the information about our go CD from the other because by the path but there's not there's not a good way of doing this now everyone can choose how they prefer to go around this and it's perfectly fine so as we were mentioning we have a source that is our source of truth with our repo our path as you can see here and also if we have a branch that is the target revision in our case we also have the application set branch but this is our the state of the application that we want to define and all of this is in the source and then we have destination that is what you were just mentioning before Michelle that is where do you want this apply you have to tell me where do you want to apply this and as you can see here we are going to go through the list of elements and we are going to change the destination name to cluster there one in the development cluster the only thing is that because it has specific values the the advantage that we are going to get is that we are going to get different configurations for each of our clusters okay so let's just do a standard let me make sure that we are in the right project in the right name space open shift go the application set and what is going to go what is going to happen here if we maybe to take a look we can check as you can see we have a controller for applications and a controller for application set so we can take a look at the logs for the application set and see if actually did this job and as you can see I just wanted to mention in case people have issues when trying to debug this that we talk to the application set controller you get quite a lot of information as an error here everything went fine and as you can see we have a cluster pro ODF application deployed and a cluster ODF I'm going to show it with the actual algo cd case command where you're going to see it much better so what happened really with our application set basically it deployed two applications one is called def ODF and the other one pro ODF the big difference that it has is that it's going to be deployed to two different clusters not to different destinations that I'm going to show you just in a moment the other thing that I wanted to mention is as you can see the state of the application is out of sync why is it out of sync because we have a state ready and waiting for us on a helm chart and it hasn't yet been applied to our destination clusters so our destination cluster and the source of truth our github repo are out of sync you can configure this to as soon as the application gets created you can configure it to start syncing but here maybe because in production for caution you want to leave this disabled and do it manually maybe not automatically set here we have it we have to press the button automatically so I could also show you the UI when it starts the sync so let's move into the UI now I will make it bigger let me get the password just a moment here what I'm doing is I'm extracting the secret from the github cluster secret that is inside the namespace and I'm going to start with the open shift github you have the deck server that is able to authenticate using open shift user so we could perfectly login via open shift and use a user from open shift from our actual ocp cluster let me make this bigger otherwise is that better can you see that okay so again this is just the same view that we had in the CLI we have our dev application and our production application as you can see the big difference the destination one is dev and the other one is pro so we have our two clusters let's go ahead and sync this one thing that I wanted to show you before I started syncing is what we were speaking before about the audit trail as you can see here is mentioning that it's out of sync and it's saying the source of truth is this commit from our github repo if I press here it will take us directly to our github repo and we can perfectly see that it was me if something goes wrong it was my fault that 14 minutes ago I made two changes to the development cluster values file and to the production cluster and we can also see what we actually change here in this part so as you can see it's great also for seeing who made changes when and what did they change okay so let's give this a sync here we have syncing actually says go apply these differences right that you're actually kicking it off okay and you mentioned that could be done automatically but in this case because you want to show us we're doing it manually okay that's yeah that's completely right this the step that I'm doing now that I'm pressing synchronize you can do you can set that when you're defining the application to be automatic and then you wouldn't have to do this step so as soon as the application gets created or as soon there is a change on your github repo it's going to be applied to your application no okay and once I fire it off as you can see here where it's really starting the the deployment no the first thing is going to go and start the ODF operator and it's going to go through all the steps no that you will normally go to deploy to deploy so just I just remembered from before oh maybe it was it has to grow is that the production cluster yeah that's a good that's a really good point yeah I wanted to mention that so it's a really good question and as you can see here that's the main difference no that you can see that we have here the matching sets objects that we didn't have in in development no so we have that ready to to get deployed here so we have that listed as a dependency somewhere like wait until these are I don't remember okay that's another that's another really good question and you're really we're going to speak about that because that's a little bit and if we or a little bit complicated way of doing things and I will go let me sink it and once we start sinking because it takes a while we can speak about about that because it's a really good question what you just mentioned I wanted to take a little bit deeper but as you said you can see here that the first thing that needs to get deployed also our machines know that are going to be the workers that we're going to use for our dedicated ODF workers so going into the topic that you just brought up that is a great topic how do we orchestrate all of this because really if we have a small application where you have I don't know a deployment and some ports and it's something easy to manage okay that's fine you really don't have to go into all of these if you're working with something complex like it can be like ODF for example where you have an operator we're also deploying infrastructure as you can see here that we're deploying new machines before deploying our actual ODF so there are a lot of steps that need to follow an order otherwise they're not going to work and let's say that Argo CD provided us with tools to work with this so you can give an order to which we apply and I'm going to show you that straight away how we do that while that gets deployed so we have this is the same repo that we were working for before now and we have ODF that I mentioned before and if we go just show you this let me just do it here so you can see a little bit better so what we have is sync waves they're called sync waves and it's just a way inside Argo CD to give an order on how our objects are applied so how it really goes is that is an annotation that you set in each of your objects and then you give it an order no the negative numbers are the ones that go first and then we go onwards so for example here you can see that with minus one we have the matching sets no they have to go first then we also see for example with number zero that we have our operator so we have the the actual ODF operator that I was looking at the subscription to get the operator deployed then on an extra step for example we will get actually our storage cluster now that this is when Seth gets deployed so as you can see there is a way to give an order to how you want all of these objects applied so the order is kept in sync wave in AWS this is how I make a I'm just being sad that was I know you showed it already but I just want to no I didn't it was brought up by Stephen that he mentioned that and let me show you an example because I just let me show you where we have an if we deploy with a gateway maybe here I have an if yeah so just as an example because I'm not sure it because this hand chart that I have right here is I yes I know where I'm going to show you but as you say how you work with these templates is you have your normal object no like your this is a normal Kubernetes or OCP object and then like you will do with your ginger templates you have all kind of ifs when else so you can modify or do all the things that you could need to give it a little bit of logic inside the templates no okay so that but that's your helm templating part making those decisions helping you okay I'm just trying to separate it in my mind like so for decisions you're going to work the helm templates and then for order you've got the sink wave piece and okay all right okay yeah that's perfectly done I'm using the actual object and as you can see what I'm really have here no in my helm chart is if in our values file we have dedicated enable then go ahead and deploy the matching sets no so it's really how this is this is done at the helm level so Argo CD doesn't take part in this Argo CD the only thing that it does is that it's able to render all of these values that to understand them and then do the rendering to actually apply the object in the end but as you can see here for example the cluster ID that we got no and that we set on the variable is also set here so it's really kind of a ginger template approach that you will follow okay thanks and then you're going through stuff that I think I've done manually more times than I can count you know it is because I because as you know we have like our HPDS here in Red Hat where you get an AWS lab for example but you get it for four days five days and then you have to give it back and deploy another one and in the end you're deploying all the time around so that's also what I use I normally use this to deploy ODF and I don't have to touch anything on you get as you said no your matching sets you get your labels everything in place also a good fit for that as well the last thing that I wanted to mention is even if we have sync waves everything is not as pretty as it seems with sync waves because let's say that Argo CD is going to give the object as a health okay once it has been applied and it has responded with this health check of okay no so for example you have health checks where the board is running but for different let's say CRD you know that you want to use like for example the matching sets let's say that Argo CD once it has applied and the matching set is created it's going to say okay I have finished moving to the next into the next step but your machines are still getting deployed they're being provisioned they have to be added to your OCP cluster so there are still some steps that is missing and what I have done that is not pretty to get around that is using what we call called like wait-bots so let me show you one just a second so here for example so this is a wait-bots that make sure that the ODF operator is running and what I do is using sync waves I put the wait-bot in the middle of let's say the deployment of the operator and the deployment of the cluster we want to make sure that the operator is ready and really what I have here is an OC wait that is checking that all of the bots that are needed for the ODF operator are up and running before continuing into the next step so that's why we're using wait-bots as I say maybe this is not the prettiest thing to do there are other ways to work around this for example you can use custom ROCD health checks where you could say the actual health check and say for this object don't move forward until this and this condition is met but that's a little bit more complicated you can perfectly do it but it's using Lua scripting that is quite complex in that sense so that's another way of going around it in this case we're using wait-bots and the other thing that maybe we could do that I haven't explored yet is really using like a pipeline or looking at ROCD workflows where you could say okay first in the first step deploy all my infrastructure deploy all my machine sets now when that's finished send an event send a notification or maybe if it's a pipeline just go into the next step and then deploy the ODF operator and go like that and give it an order using maybe decked on pipelines for example or something like that but I haven't gone or explored that deeply but I would like to check if it will fit no to use it like that it's interesting okay so that's definitely going to be I could see using something like that when you've got like big pieces of infrastructure that you actually have to deploy is there do you have wait-pods down the line anywhere is it just for the machine set I have two of them said no I have one for the machine set that we can see here no for machines let me just make this a little bit so we can see it better that's not good okay I have this one for machines and I have this one for the operator those are the only two that I have no because afterwards afterwards once you have the ODF operator installed then everything else you have already your CRDs and everything else can be deployed at the same time we don't have to actually have to wait for anything else okay I will just bring it up just in case somebody also has this issue it's this is going a little bit deeper than more deeper than we wanted no but I will bring it up anyway let's say that Pargo CD when you do the first sync we press the button it's going to check all of your objects and it's going to do like a dry run and see if it can actually apply all of the things that you do before it actually starts syncing and if it can't do something because maybe an object doesn't exist it's going to give you an error and it won't move forward okay and that gives you suddenly you have an issue because let's say that when you deploy the ODF operator that is going to create the custom resources for you but if I'm doing the sync before I have a plate operator those custom resources don't exist and I'm going to get an error and then when this option comes in when you say a skip dry run it's going to do so really you're telling him if this resource is not available just skip it during the testing at the beginning and continue with the sync so this is what we are mentioning here okay so let's take a look and see how this is the production this is cluster pro right and then okay yeah where are we let's let's check on the development that should go a little bit faster as you can see here there's a good thing that we have right now that it says that it has been able to sync what it means when it has been able to sync is okay I have got the desired state that I have in my github repo I have now that state on the destination cluster no it's done sync here means finished right there's no more work for it to do okay the only thing is that for him he has finished let's say you are still waiting for all these to go up no or something like that he has already applied that object so for him he's synced and everything is ready but we can check very quickly and see how the development cluster is going so let's do this and let's let's set cluster it has to be open shift oh yeah so this one has finished now our pre-production cluster created successfully it's okay okay yeah let me just make sure that we did things right and we have a 512 gig oh I always forget about the main space so as you can see here for the pre-production we have 512 no that is what we selected so everything is looking good let's go into production this one takes a little bit longer because we're using the matching sets that we mentioned but let's see how it's going so it's configuring safe months no so it's still it's still working let's just a pod so we can see how it's being deployed okay so it's looking good it's doing its work slowly but steadily it's going along so it's working with monitors after monitors we have the OSDs and then it's going to finish I wanted to show you I don't know how we're going with time because I wanted to show you if we had time how to do let's say a day-to-operation that is for example adding rados gateway can you do it in like 8 minutes to be quick yeah yes I think I think I can let's try anyway if we we will leave it running anyway so let's say that we want to make a change again to production because for example we have a new requirement that we need to have powerful signals and we want to deploy rados gateway that the rados gateway is sets S3 compatible endpoint no and we also want to use SSL because I see that there's production and also let's go ahead and say Okay I'm running out of space let's add OSBs to our production cluster so we have to make these changes again this is on my local repo I have to get that in to our up a stream repository and also I have to again add commit, let's say here adding RGW just so we do it quickly and we do a push. Okay, so this is a new push, we are going to have a new commit, a new version and if we go into the production cluster, we can see this takes a little bit of time, we can hit refresh or if not, it will actually check by himself that there's something different, but what has happened here? I have made a change in my GitHub repo and then the cluster is saying, okay, I'm out of sync, there's something different going on here and as you can see the new object that is out of sync is for example our safe object storage that we just mentioned before. So now if I press sync, it's going to go ahead and deploy our radius gateway and it's also going to deploy our new OSDs, not that we selected. The only thing is that before I actually apply this change, we need for the cluster to finish, so let me make it work. Yeah, I can ask you if we can do that. Okay. Yeah, so this is production. No, let me just check that we're in production. Yeah, so everything is running fine. Let me just very quickly. I'm going to go into our safe toolbox now. So we can actually take a look. Well, let me run the sync and then we can go into the toolbox. So this, let's fire this. So it starts deploying radius gateway and our OSDs and now let's go into the toolbox again. Open G. All right. Okay, so at the moment, we have a new, the cluster now, we can see that the health is okay. And for the time being, radius gateway hasn't been applied here, no? So we can imagine that it's here it goes. So we can see now the difference that now we have radius gateway deployed and it would be available now for object storage use. This was before. Okay. Did you add an OSD? What else? You did something else too, right? The radius gateway and something. Yeah, I didn't, as you mentioned, I didn't know it's these. No, so let's say that we were running out of space and that we needed more more OSDs. I really, adding more OSDs is adding more raw space to our cluster. No, so as you can see here, what's going on is that currently we have three OSDs. So in each of our hosts, we have one OSD. But here you see that with the change that we applied, no, the stuff is working or let's say that Rook or ODF is working on adding three new OSDs. This, the only thing that this takes a little bit longer. Let me just check with the status. Okay. But your dependency set up in sync ways still have to be obeyed, right? No matter if you change something that then everything gets followed. Okay. Yeah, yeah, yeah, that's right. Each time that you press sync, it will go through the full tree to check everything. So the only thing that the things that are in sync won't be modified, but it always follows the full tree of the wave sync that you just mentioned. Okay. And how does the, what is the Argo CD, the dashboard show, oh wait, they're up. Now they're done already, right? Okay. I was just wondering like it shows a different icon or something in the UI when something's progressing, right? Yeah, you can see that it's blue. So for example, we were a little bit late, but when something is out of sync, it goes yellow. When something is, when it's working, knowing and getting something ready, you can see that the lines are blue. When something is in an error state, it goes red, no? So when you, if you get an error that you can also perfectly get an error, it will go red. So with the colors you have here, no? In this course, you can see what's going on. There's many nice things in the UI, no? We don't have time to explore, but for example, you can have a look at the location of all of the boards that have been deployed or the objects in the different worker nodes. So there's some really cool things to check here. You can also filter to whatever you want to actually see. No, because there are loads of objects, but maybe you want to see X, Y and Z that are more important to you. You can also go through that. But yes, as you mentioned, our OSPs are up and ready. We can see that they are ready to use. So we would already have more space for our developers to use and everything will be fine and ready. So that's more or less what we had and more or less on time, no? Yeah, perfect. So that's amazing, actually. I'm really impressed. Like, and certainly how you would manage a real production cluster and make your life easier. So are there some links that I need to get so I can drop them in the description of this video? Maybe templates and things like that? Yeah, I think I will send you the repo that I'm using. Again, this repo is just an example. It doesn't mean that people have to follow it, no, as it is just, but maybe to get it started is a good point. So we can certainly share, no, in the link, the GitHub repo that will get you started. All right. OK, so it's the top of the hour. I just thank you so much for coming back and I hope to have you again. We'll come up with something new. And I want to thank Stephen Wilson if he couldn't join us again, but that's OK. He'll forget all this going. And I'll drop the links in the description and take any questions from chat when this goes live. Thanks so much. Thank you. Thanks so much, Jen. Bye, bye. Bye.