 Okay, I think it's time for we start it Okay. Hi guys. How's your summit? great Good I'm recalling and I'm the chief open-stack technologies in from the English tech For those guys who didn't know who you mistake are we are the service consultant provider from Basic from Taiwan and we just got our gold membership. Yeah, like last day. So yeah, congrats So today's topic is about heat up your steak So I try to count I will in this session I'll try to convince you guys that you should use heat to orchestrate your steak and you probably will tell me that you already have your heat running and running well a service stop But are you really using it? Okay, I guess nobody Yeah, but that's a problem here because heat is designed for managing your cloud there but you should know how to use it as a No matter what operators or developers Okay, so we will start by point out a question here point out a problem here and At first I was I would like to show you this is like the normal Open-stack architectures for you guys, right the computer node control nodes and storage, you know, sometimes Network node well depends and there will be a high available tools like keep alive pacemaker on top to make you this hard Like a hard way of playing architectures and then you have the open-stack on top This is a service of open-stack on top. Well, it's a very complicated and The service is a lot of functions there And this is a resource on top Well, it's a lot you create a resource for all kind of purpose here For all different users here and it's a mess It's a totally mess and you you were thinking about it created for all kind of a recent stare But you're not really managing it and why because your resource here is like a sleepy puppy So yeah, it's cute. I love I like puppy. I really like puppy. Just promote and The resource likes because it is sleeping is stay there your instance your resource is stating there But you don't know why like you you're always you're always thinking that oh, okay That instance may be created by somebody else, but everybody think of that. So they probably will have an instance code like a A server these were these were one there and everybody think okay. It's running. It's running. Well, but nobody know what is doing So your resource should look like this Okay, it's a it's not scaring at all. And it's a you should you should your resource should like a fleet like a team They know the dependency which are each other's they knows what they can do with each other's and they are going to help each other's So this is all about making you Make your cloud decision fast and right so making it fast and making it right. That's the point, right? So we were talking about where he can can him so first to in order to Find a red lines. I'm not sure. There's a red light between the dogs if you guys see it Finding the red light there for your resource. So you must know first. What is the red light? So what is each other? What is each resource doing? So he'd provide a lot of resource list there We really try hard. Well The heat team will try hard to make it happens there. So Most of your resource in your open-stake clouds. You can find it like flavors rows alums So everything will have a heat resource layer and it is a lot of function there So we'll explain later. So redefine your old resources to the heat resources That's the first step. So the sleepy puppy will become a big dog So the first step, okay, the first step is to create a stake So we was talking about finding the red lines here. So first step is create your stack for your default resources So what is default resources? The default resource is for those resources. You just fill in it. It will be good It will be nice to be there like like a little flavor medium large kind of stuff and not only for the global environments, okay? The default resource also point for those project or for each users For example, if you are a user you are always going to using the images Maybe some cross images there that that is exactly the default resource you should put into your stack first So the stack is going to make sure that your resource always there and it's running. So you should organize it then to become Stake here. So that's what the heat promise to make you happens So that's the default resources. Then there's a more red lines here Okay, there's also the authorization and authentications. So most of the users they are really just making the Authorization and authentication by default, right? You guys probably have the role for the mains and the members And that's all that it should not be this way So the if you really running your open-seq cloud Authorization and authentication will be much more complicated and when you reach that complicated point You really need to organize your resource on a heat stick because his take will make sure you can understand all the dependencies all the Topologies of your entire resource layer. So we are talking about authorization and authentications because it is the basic securities for your clouds because you you create the authorizations For for make your users can operate it and you create authentication to make and can look into the project So whatever whatever the user can do is you give into them? So you are keeping in mind and another is your network topologies here So I I met a lot of operators, but they're not really using the Heat kind of ways to manage their network topologies. So their network topology is totally mass so if I crap if I are if I pull down your network I To I return back Network subnet can you find it? No, because you you didn't even know where the map go wrong so There's a network always a very complicated stuff So if you're using stack here, you will just have a very clear version of the entire map. I even more you can you can rebuild it if we see if it is wrong and Even let's even go further. There's a instance. So why instance need to be in the stake? Because instance is very complicated even just for the instance Server itself. So instance got a bunch like a ten of hundreds operate Parameters layer. So whatever go wrong, you'll probably know it When is when the instances crash? So that is the point of the entire stake your resource thing because Instance to matters because your applications on top. So care for your for Be careful for your applications. So make sure you have an instance map later. So if everything went right, you probably have a lot of resource build on the stakes and So I pretty sure most of the use cases is just like those those example layers, right? I'll somebody knock their head. Thank you. So There will be a lot of resource. So don't worry. There will be miss moment So why is it? What's it at the bandage for us? What is good for us that you can reduce your operate operations? that's the first step and for example, if we create a stake here, you probably cause like eight of course horizon did did a lot of a Easy wait for you, but we were talking about managing your cloud there So you probably won't just have the horizon to running to build your instances Well developer a lot of developer developers don't use horizon at all. So Is it will be better if they had a ways to managing the resources? so the applications was reduced and The more operations you give the more mistake you will get you will get you will make and See how many operations here to build this Drop this structure, of course, you're not build it at one time Of course, nobody do that, but from time to time from user to users. Do you have bunch of you? So you are running a cloud for your for your companies there so Somebody will do the wrong decision. Somebody will make the wrong resource in it. So you need to have abilities find it out and There's a more advantages for the steak steak lights or everything's the migrations Okay, the migration do happens no matter what we're not just talking about the big migrations for your entire one stack We're talking about maybe a small migration like you have maybe a user is not there anymore He's a relegated and those resources he created need to be Pull back or need to be transferred to others and how you're going to do that So if you're using the steak You just have to withdraw the resources just by deleting the steak. It's simple. It's clear. So No zombie resources there everybody's happy because zombie resources really kill your management cost it is a lot of management cost there for if you have like zombie resources there you are Maybe probably you have a lot of space for those zombies, but eventually the zombies Will crush you down if you look out if you cloud went wrong once then crush it now and We are talking about relegated So the resource can be transferred if you are using the stakes here Now the stakes here can have make sure in general can make sure you have the same Resource spec resource structure in Buy another way by another users there or by the same users no matter what so it just by the Writing the correct template there. He will make sure their entire resource is there is a totally another fleet another teams running up So the new new users will you will be very happy there? so the steak itself can be See a lot of our resource topology like this only only horizon there So you can very easily to see what the lines between were Very really very easy and he has an event and the logs for your resource there So whatever went wrong to your resource You don't necessarily to go to the servers and grab the log and wish you luck that no not not necessary so Now you can just if you're using the horizon You can just say very clear what something went wrong Which is resource went wrong and you can just rewrite the template and it will help you to replace the entire resource map layer So you won't need to always draw a bit a point of resource back and create a whole thing together and Stake is updatable Where I say updatable means that if you have a stake running and maybe we're wrong or something You will like to wish to replace part of the steak. You won't necessarily to Withdraw entire steak and put it back. You just have to Fix or modify part of your steak template And you are very easy to help you to replace the resource layer. So I think it's a very very fascinating and We're talking about some functions. You can writing your templates here One of them is get file. So We try to write those templates for your sticks, right? And we want to make sure it is clean. It's very clean So a lot of a script like a configuration script We should put it in the like using a get file put it in another files there and in this way you just import the file there and It's really simple. You can try it is a really simple ways. It will work or totally work And the best part is he will you will have a very clean like a flow control map for your resource here, so You have a really great structure now. You have a really clean template now. So everybody's happy and depends on the depends on is a resource to make sure the dependencies there. So we have a lot of users Questions about how to make sure the dependency of rich resource. We're talking about make make land in the same topologies, right? So the dependency matters. So you can decide a dependency for each other So for example, you wanted the instance one create The first one and the instant to the second one. Well, you can down You can get it down by this way. So just set the dependency on and Don't worry about what while we're running in the back that he will totally handle it for you. It works and the get resource and the get attributes here is it will read another resource in your in your state topologies there and it will Refer reference by the other resource here. So you can just maybe get a single attributes from another resource here So it's very handy used because right now you can for example, you will create like one instance there you can get the attributes inside and put it to the another input for another resource here Yeah, maybe this is a little Tricky so this is It like the depends on but it is a implicit depends on so if you set it that way it will also depends on the other resources here So yeah, the dependency will be fine and again your your resources now can be a very complicated structure here because now now you can you can have the For example, you can have the instance resource on the same template and the instance resource on the same templates here So every every resource you need it. You just have to create it when you want to use it. So simple and Another is a nasty stick. So nasty stick is a very interesting idea here because I I think a lot of what we're talking about to make sure you have a very easy Templates, right? I mean not easy but very clean for the controlling for the template so you really can just import another template import another Stakes there. So It's more recommended to have like a nested stick here for example, you have a lot of resource just for one instance and Now you can just like the get file way you can just put it out and put it in another another stick there and when you want to use it you can just like the reference the resource there you can just Reference it in this state. Just make sure the the YAML file is there and everything will work And the next the best part of the next is nasty stick is a the management of nested stick Nasty stick is very easy. So you just like a reference another resource there So we talk about talk about how to manage in your current resource in your old OpenStake, right? And the resource on your OpenStake can be replaced by the heat resources Which which is still still is you are all resource there, okay? So nothing changed for you guys just you create a topology map on top that way Just like what we show for horizon you can clearly see the dependencies the topology is there You can see what went wrong. It's very easy for you to manage it. Now your cloud is manageable. That's the cloud That's what cloud beautiful. So we're now talking about a lot of Infrastructure layer and what about the applications on top? Now the applications on top like what we show in the in the instance there probably will have a Moronal and it's running. I love moronal. It's very fancy, but But we will I will try to talking about using heat directly to config your Your applications here. So heat has a resource like software config and software deploy you can control your resource here and For heat you just have to write the software config here and it probably will be a Ansible script and in that Ansible script You can just using the K file to import it here and say hey, this is Ansible script here Don't make it wrong and In the in your server server is an instance In your server layer, you can just write there is a software config under format and that's it so The third resource and the final resource here is a software deploy and the software deploy is like a bridge To your config and to your service there. So from the from the software config you have a controller like for example this is basically the Ansible right and You can make the Ansible script running on top of your server layer your instance there and I will I will show the details there how you work just for making you guys know that there's a Way to make the applications on top of heat so you don't really necessary to Maybe do a write another new resource for for heat you can't just using the software deploy and config for your applications and It is a it's very cool and For example the step now I used to trying to write a resource for self and hope the heat team will accept it But unfortunately it can be a separate why because we have the software config and software deploy layer and it's a really handy to use so you can just you can just have the same Ansible script I Just pull from the repository and you work totally work blaming From the repository directly and a controller script you can just put in in the software config, okay? And for the rest of the library script you put it in the in the in your instance there, so when you trying to Using the software deploy ways there the software deploy will bring the software config to your server and say hey, this is your software config it is safe deploy script inside and I give you a parameter here your role is It's safe monitor here. So knock yourself out and Let instance there will totally know what we are talking about because we have some hook on top I will talk about it later and Then it works. So Your service was already inside and you said we'll be running and you can like trigger like 10 instance there We were talking about next Tuesday So you can trigger 10 instance there and make sure that oh this guy's always the disguise is save monitor at his career is a I don't know what he's doing, but it's a web server Maybe so you can totally work everything together what you want and what you wish that is your application topologies So that is a front heat space of perspective. There's a very easy very Clear version of your applications. So Whatever in by create body heat is a clear topologies here That's a very big advantage And the use case it can be more a lot of ways here So not just a save there's a currently a lot of a deploy script outside, right? You probably have writing your own a lot of the developer has their own people is great by answerable by puppet by shoot So whatever you want, whatever like there's a lot of a Hook there like the souls screen. Maybe only the screen can work too So you even can write in your own hooks there and it's very easy It's just just a few lies there. Just call him to like a ansible playbook. So It's a very very easy way to write it your hook So what are you talking about to make it fast and make it right? So if we have this kind of stick here, you probably will have if you don't have it You probably will have to create an instance and then you can fake your script on top and maybe something went wrong I mean, this is a really a menu manually Configurations there. So if one of the instance went wrong You will probably I will have the entire safe cluster just crush there because you don't know which which instance went wrong there You probably grab log and wish you luck That's a very pain pain point here. So right now there will be only one operations here If something went wrong here, you can clearly see it in from the heat stick and We were talking about the software config and software deploy here, but how you work Let's give it a little a little diving here. So we so we're talking about make the configurations to and using the deploy to put it in your servers now if we have some some tools on top of the server, of course It will which is directly Created in your images. So like always collect collect config or refresh config and the the apply config flows is created by the triple project and The triple is using it. So it's it's a very stable tools and the always collect config is like a Agent there it will pull it will pull back the meta data from your Nova meta data server and It will it will call the refresh config to make sure your configure your configuration deployment on a specific order and the refresh config will call the apply config here and Apply config will replace those Those so-called we have right in the control flow in the in your for example the answer for configurations, right? and the answer both script layer will have a lot of different Calling there like calling the library calling others and that's what the apply config will help you to replace those those turns into the really run executable sweep Controlling script and the refresh compute will keep calling the heat config and The heat config will see we haven't writing that group right in your software config now The heat config will read that group parameters for example the sbo So he will trigger the sbo hook and Ansible hook will trigger the sbo playbook which just to commentize here very easy So we are talking about a hook and an sbo Playbook here. So the hook is very easy just trigger the configure trigger As for playbook everybody can write it right and then the answer for playbook will Will escape the sbo files which include include those as opposed creeper you you you put in the images here and now if everything running correctly the heat config and Will tell the a heat is Obviously everything is ready and you will give you even give you some output of your resource here and Tell you that everything is working and you see here is the output. It's success happy So we are talking about the convergence here Now the convergence here is a very fascinating idea. It really came from users The convergence is because the clouds are noisy Every convergence document style in this line here cloud are noisy But cloud are noisy because you have a lot of service goes and run goes and back and Maybe by the power failure ways reasons, so it really should make we really should make the stake process more more handy to use and more stable for every users there for every stake from a small size stake for the big size stake so We were trying to make sure that low stake can running Concurrently right we we're talking about you using the state to manage your entire cloud here So what if you can you can running concurrently? I mean you can have the 10 stake they are going to run together and they won't they won't be a problem at all and Everybody will run very fast and go grab it back fast. You will know your resources assist there So you we want to trigger the convergence here So you can just write this convergence agent engine in your configuration Heat configuration file and restart your heat service and it will it will start to be a convergence way now the convergence here We in order to compare with the old we will like to write it all Low all workflow here. So this is all original workflow The water workflow will be a template work will push to the heat API here and by the maybe by the state create API call and Heat API will using the NQP's to call to send it to the heat agent and heat agents will handle the entire stick and Make sure the database has the stake Data and it will tow tow back to your user say your stake is ready That's what we're talking about originally, but now the convergence up and is running is under the beta release now and the The ideal design of the convergence here Is that and you go through your heat engine now your heat engines will tell your There's a will be with workers here and the observers here now You will tell the workers. Hey, this is one resource in my in my steak if you go to create it and tell me if it's ready and the workers will will handle the creation part and then it will ask the upper servers to to see if the The resource is on the correct. I mean really correct status, right? Make sure it really running not just sending an API layer and we should good luck. No, we don't want that So the upper server even if you make sure it's right the engine when the engine will eventually knows it now The entire stick it will be running. So whatever the resource goes the resource will be created, right? so that's the ideal design for the convergence But the we have mentioned the convergence still under the beta release here So that means that we have a little part here is still under developing under implemented But it's still really working right now because we already implemented workers here But we didn't have the upper server here. So the workers don't know who the upper server is but Also another difference here is that current design that we put the entire stack to one workers to let the workers do the entire state creation. Well, there's a good there's a pros and cons here But I think there's also work here because one workers can handle the entire stick and he can really handle it very fastly So we don't have to deal with a lot of network issues here. So that's the current design So how the convergence worker interact with each other's we're talking about making it concurrently, right? And how you interact there? We have the traversal scrap now the traversal graphic here We'll have the same point for its resource and inside the same points There will be a traversal ID Which is the traversal for this creation process and it's a random you ID here and the stake ID is for the stake I don't know the risk stake for the resource on top and the entity ID is for the resources So the resources will have an entity ID to make sure it is identical and In the you can your traversal graph here You will have the lines here to make sure the dependencies working So the lines here is about require and required So you you can see which resource is required by others So no no if the resource are required by nobody the resource will be the leave resource and the leave resource makes Just the first first level resource that makes makes you can easily create it and Don't don't need to worry about the dependencies because it's on top So in order to make sure you guys knows about the really convergence is let's trace a little bit showy This guy just keep nothing inside. Thank you. Love you, man really love you Now we trust it and the template go to the heat API, right? We'll talk about it that go to using the NQP API codes to Go to the trigger the heat engines now the heat engines will have the Like the original ways that but there will be a triggers for conversions So it will check if you have enabled the convergence engines Configurations if you you and it will trigger it you will stop by a totally different process here and create your convergence stick Now the heat engine knows it it first will calling up your Traversal graphic in your database. Why because you probably have a mistake already running in and It used to be running and it's finished, right? You may be doing the stick update here So you will make sure that your current traversal graph is the newest one. You're not using the old traversal graph so make sure that you have the correct traversal ID correct the resource graphic here and Then it will create a new graphic for you right to see what kind of resource here in your stake template and make sure you have the exactly the Redist our Relative Sync point map there, which are sure on the top and they will the heat engine now will send a NQP and a MQP code to the to the engine workers topic there and who will receive it the workers one of the workers will receive the request there and you will start to Looking at the traversal map in the database and then you will find the leaves there Now the leaves there we were talking about it can create it first, right? No pamphons No, it should be created first is what it is for so it will it will create it first So the first one like this example will be the resource a so resource a created You just a triggered and If the current traversal is correct with the stakes You know, I mean we have talking about a traversal ID, right? You will make sure the current traversal of the stake is current to send the current traversal for your resource Make sure you are on the correct traversal here. No, not other not by the other workers there So a is a now is a trigger is loaded and trigger the process here The first day will check leave for the update Failed or check the lock check make sure you have the resource you you have the lock make sure you can create it Just for prevention and then you can you can check at a step six to Make sure the action is create if the action is initial or not. It will be update or others Yes, and the step seven you will Check you will trigger a scheduler and the schedule here will help you to do the creation processes Eight you create you you trigger or create handle create which is for every sources There will be a handle create action there and it was specific writing by for that resource and then the handle create will be trigger now and it will it will directly using the Python library layer and using the identity you gave it and running using the library to create a true resource here Just like in this step just like what you create your resources Just we have a lot of step there to make sure your your Mechanism there is correct. So that's what he's doing for you. So the eight now is created in the in the database now and It was and there's will be be will be the leaf here with we keep the state five to nine to the entire process here and The step four will be loaded next resource, right? So we will keep in doing it that way and even more fascinating we have talking about concurrence So the stake now the workers now is very concurrently so you can have another stake on other workers here and you won't you won't need to worry about the Block here. So no block point here So out if you want workers busy a lot of workers will rise up and Handle the state creation job for you and we'll keep going there until everything's finished and when it's finished you will mark it as a completed and and purge your database and get rid of Resource on top get rid of the template resource on top and so what if we conflict we're talking about making it concurrently But what if one of the resources one of the stake is a conflict with another? So now there's a two workers trying to update the same the same stake, right and We don't really need to worry about it because the Stake itself will see the traversals and the traversal We have talking about is a random uid for each each traversal action there So if you not get the correct traversal ID here means that another another stake here is Doing the creation or other actions there and you won't workers won't get any longer. So won't get actually actions Won't get keep actions. So not a problem for concurrency So we have talked about making it fast and making it correct So what about there's a you have a mass application to point out? I mean everybody should have mass application on top your open-stake, right? Unless you just trying to demonstrate you just trying to have a little operation a little open-stake there and making fun So no you have applications on top. Of course. That's what you care So now you can have a lot of operations like maybe like if 50s also a small I must say is also a small application to point it is So you can reduce 50 to one operations and we're talking about making it fast So we can reduce from 100 minute one 100 minutes to less than 20s That is just for a basic Setting here for I have tried it is a really fast net because you have a nasty stick late, right? So all your resources will go concurrently. So it's cool. Okay so I guess I run out time and this is the other feet session here and We also have the user and operation session of the design Sami will come to join us and we'll have a talk more later So let's go to the questions and in question. Yes Sorry here is your microphone, excuse me Is not That's your lesson the lesson Timers from for myself for myself Okay, maybe you can just ask and I'll repeat it Pardon Yes Status of a resource yes, the resources yet the concurrent yes I mean get the data's okay Yes, maybe there's a missing point here the resource you're running will have the output for in your stake now The output in your stake will make sure that you make sure that you have you can print some output for your resource here If you want to customize these see what the resources doing now So if you you don't the resource of course will be you will see it Completed on the map layer. You will see the resource is correct You will you will see it by the horizon there. You will see the green Button there that means the resource is created. That's the status and we're talking about the resource Maybe you need a sound customized, right? You need the recently some customized The checkers to see the resources working So there is a output in your template and The output in your template will make sure you'll grab the output of the resources you can customize it and see The exactly the read the information you want it you wanted to see so you can check the exact exactly what the resource resource attribute you wanted and and see if the resource is Excavated by you by your idea. Yes, so let's answer your questions Yeah, okay. Don't worry. We can talk about more later. Yes, I mean, I think he was I could be wrong But I think he was asking It's not a matter of the the stack writer Checking that the resource was properly created, but heat doing that itself So I think I think you were asking about how heat implements Knowing that it is able to legally traverse to the next state in the graph Okay, so we were talking about making it do like the updating, right? Okay, so when it's trying to updating there, it will make sure that the update is on the status correctly Correct status. Okay, so there's a for example Resource created and it's completed and that's the updatable status So what what happens when you created when you can't create it? We will have the triggers. We will have the Update replacements there. So whatever went wrong in your update process here We can help you to our to using the old template and to cover your news new stick here, so Whatever happens when we're wrongs, you you will stay your resource will be the same and the The resource will will not affect The answers your questions Kind of don't worry. We can talk about you later. Actually Okay, I Can probably give you a bit answer. It's basically it depends on the resource type. So like for some resources you It will do the open-stack call and that will say success. It's done and then you can go straight to done for something like another server it has to pull it until it goes to active or whatever and For something like a software deployment It waits for the signal back from software deployment to to move it to Yes Here's a Zen here. He's a very senior developer in the heat team Okay, so a lot of questions here because we're all I think we're running out of time here No, okay, then that's it. Thank you everybody to show me the session here. We should have a great sessions