 I guess the time is up so let me begin okay so let me introduce myself my name is Martin Pavoli and I'm of the of the couple of developers here who are working on a managed IQ while we have a big goal we like to control all the things I guess everyone here has come into contact with some cloudy thing someone the guy before me presented heat I guess is there anyone here who did not use Amazon EC2 can you can you give me your hands who has not used Amazon EC2 okay so most of you did I guess there must be people here even who use VMware is there someone who uses VMware here VMware Rebem great OpenShift cool so so as you can imagine there's really a bunch of things those cloudy things in the infrastructure area or in the cloud area and now we have even those containers and well it's a it's quite a bit of a mess but well you can find some common denominators well most of the things have something in common and I would say that the most important thing that in the end there are some users and that wants to deliver some service so the goal of our project is to like let's say make sense of all of this and make it easy for for companies to deliver services on top of all these technologies to their end users so on the next slide I would like you to show some of the some of the pieces of software that we already integrate in cloudforms so I've mentioned OpenStack you probably know that Red Hat has acquired Ansible recently so that's another piece of software that we integrate of course VMware while Red Hat is now friends piece so with Microsoft so we also integrate Windows Azure we work with SCVMM we have we have contribution from the community in the form of basic support for Google compute engine we have all weird basic everything you you can sing off we have it in one form and or another in the product so so as you can imagine there are so there are several roles that that came into contact with our product and each of the roles has very very different needs so basically let's say the most important persona for us is the system admin that has to do the most stuff with with our product well system admin is responsible for things such as resource management configuration management then a capacity and utilization has to figure out if he has all the resources that he needs not only now and also tomorrow has to plan resources has to has to check the capacity has to track changes has to analyze has deviations from the desired state such as using our feature called drift analysis has to has to deal with multi-tier deployments either using heat or using any other tool out there that allows you to the loud allows you to do some orchestration and of course no one can understand all the different technologies the differences between orchestration using unseable or orchestration using using heat or or using easy to or whatever other tool that is available so what we do is try to abstract away these differences and provide let's say one way to deal with all of these things so another type of user that we that we that we have in the system is of course the end user on the let's say there's a sharp contrast between the end user and the system admin user because the end user does not care at all about all of these all of these details the end user basically wants to get his VM or environment up and running or wants to have his application running he does not care about any of the details he does not care if he's running in a cloud or on premise or if he's running in a container or or in a VM or instance he just wants to have the his application up and running kind of wants to have it now so and user would care about some let's say self-service with cataloged of items that he can order such as new development man machine with post gray or or pearl or new instance of machine that will that will deliver some cashier software to people working at the front office of a banger or I don't know where anywhere selling selling terminal stuff like that and then we have let's say the third most important person in our system that would be the that would be the management and management would care about compliance with different policies while you have you have policies dictated by the by the country where you where you do your business such as European Union might have some regulations regarding where the data is located such as you can't take certain data to us because well you don't know what might happen there with the data they care about also about planning because they need to they need to plan what hardware to buy they they care about about reporting on the status of their of their their stuff that they bought for their money they they need to plan expansion of their data centers so they care about cat capacity and utilization to they want to have fancy reports and to them create a custom reports that that will show for example for example money spent in terms of computing time and storage stuff like that they wouldn't have delivered regularly for their meetings so there's a completely different different set of requirements that you have that you have for for the management persona and many Shaq you tries to tries to let's say satisfy all these needs by providing services in four different areas the first first first area is inside basically you need to know what you have on your network or in your data center you need to discover all your revamp machines or your VM verus or your open stack instances or your open shifts and you need to track performance of those stuff like that so that's the that's the area of many Shaq that is called inside once you once you have all the data in the database you know what you have and you can you can click on the relationship relationships between between between things such as where where where a particular VM is running on which node in your cluster and what snapshots are created for the VM and what storage is connected what networks that stuff is connected to then then you might want to go a step further and use the control part of our product where you can do all those funny things with with security you can check for you can check for updates if you have all your software updated in all your VMs you can check if you're if you comply with the rules that you have encoded into the system rules such as I said the location of your data or the rules might be might be in a form of policy that prohibits you of having SSI SSH route access to machines without without with password or you can you can you can have a policy that a certain version of operating system is not allowed to be running somewhere stuff like that and once you have control well you might want to automate everything there was a presentation in the morning here showing how automation is important in basically all areas it's it's important for for for for the repeatability of of the operations that you do it's important for saving time so again one of the one of the let's say very frequently asked features of manage IQ is the ability to to deliver stuff quickly and that's done by automation if you have for example if you are a bank and to you have some processes regarding regarding regarding deployment of new machines in it might be a very long process from the from the initial requirements that you form let's say as a development team of internal application to the point where you actually get the resources that you want from your RT department it might take weeks it might take even even months and and with this manage IQ you can automate all that and get it down to hours or or days dependent of depending on your on your processes so another important part of manage IQ is the integration part obviously if you are a company with thousands of computers you you already have a bunch of systems running and you don't want to change everything just because you you started using our products on the contrary you want our product to integrate with whatever you have so so manage IQ offers a nice rest API that basically covers most of the stuff that you can do in the UI it has many integration points where every single manage IQ is built around state machines and those state machines can be customized customized to include steps to do integration with your systems such as you might have some some IP address evidence system and during the provisioning of a VM you might want to let's say record a new IP address to get together with some information in that system that you have or you might have you might have your process management tool that you use internally to let's say do all the improvements so you can hook hook that into the into the automation engine of manage IQ and have have that integration done and have your approvals done by your application that's also handling other kinds of improvements for you so let me show you what the application looks like I will try to show it here so this is this is like the main screen of the application as you can see the menus are pretty complex there are so lot of items everywhere it's that's that's that's for the that's for the sysadmin sysadmin guide to find a sense in this so this is not something you want to show to your end user for sure fortunately fortunately you don't have to so there's there's a very strong capability in in manage IQ that allows you to utilize access control to actually decide who can do what so there's like a one dimension of permissions in the system that allows you to specify what what product features a particular role can use so on the right side you can see three corresponding to the menus there if you click in that tree you will see a bunch of very small features the granularity is very high that you can assign to particular role and then you can you can use a system that we have in the in the product that's called tagging basically you can tag everything from a VM to snapshot or network whatever and you can use it as a second dimension in the permission system such as you can have a guy who will be able to administer all the stuff tagged as DB and he will only have access to infrastructure VMs and that guy can be called DB admin so he will have the he will have the ability to for example restore all the DB servers and if you put that together with automate from our product you can have for example all the all the servers that happen to have some DB server installed automatically tagged as tagged as a DB servers and have those permissions automatically applied and the DB guy will will have his his access his access to the system I will just quickly try to show you around some some areas in the product I have only like a couple of minutes so I will try to show something so as I said the first first bit of the product is the is the inside so you can actually see the stuff that you have in the waiting for locals that you have to in the in the product and you can you can see the relationship between things I would like to show that but it's not showing so I will show it here so this is like the this is like the view at the details of a VM on the left you can see that we have discovered a bunch of stuff we have discovered an open stack and two revamps clusters in different versions and we have some VMs stuff like that and on one of the revamps I'm showing a particular instance running and you can see all the relationships and properties of of of such such a VM so if I would be if I would click somewhere on the right I could see the disk so I can see attached storages I can see attached networks I can browse through snapshots created etc etc so this is another view on the on the same data basically I will check if the application is actually working yeah so it started working for me so I can show it live here so you see we have a list of VMs that we have that we have in the system not depending on not depending on the technology I can try again to click on something and see if we get this is the stuff that's running under our vSphere and if I select particular particular bit then I get all the details and I can start clicking around looking at the cluster that is running on I can check the status of of that so that's like part of the inside and if I if I would quickly browse to other parts of the product then I can for example show you show you automate customization I spoke about this is the place where you can where you can do all the speed ups by automating tasks for example here you can see a custom defined dialogue that allows you to to provision something in Microsoft Azure another way to customize our the product is by for example creating a report there's a bunch of predefined reports for basically everything and you can also you can you also create our own reports and you can if everything works then you can even add different charts to those reports so you can have those reports sent to you haven't created on some schedule stuff like that so so so we might have noticed that the stuff is pretty complex and as I said you probably don't want to show that to your to your users so we have also this this is what we think that you should show to your users this is like a shopping shopping catalog where the end user ordering the services can actually can actually order pre-configured items that the system admin persona has created for him or her and this way you can serve the staff so serve the services of your IT department to your users and you as you see here there's no notion of I don't know cloud provider or or instance versus container and nothing like that you are just you are as the end user you are just ordering ordering some services well these services are pretty technical but well you could have something like account accounting system in there or or or let's say a development environment with Perl or Postgre and when you when you click on such item you fill in all the all the details that you that you need to provision all the all the things that are needed to get the service running it might be a multi tiers multi tier stuff where you where you need to spin like five five different VMs to actually get all the things going it might be just a simple container as the end user you don't care what what it actually is so you just care about having it having it available for you to use so because we are developers here mostly and well I would like to welcome new developers for our team I would like to tell you a couple of things about the tools that we use all of the stuff that we that we do is written in Ruby the front end is written in Ruby on Rails we are using Postgres as our database running on top of Centos or Fedora for the for the for the community version of our our thing we are using for example memcache in our team there's quite a lot of developers contributing a book to bunch of different projects starting with Ruby on the top Ruby on Rails pattern fly bundle and many many gems because we have quite a big core base and then if you look at the contributions to Ruby all Ruby on Rails that are done by people in our team those are basically basically performance related things such as make all the Ruby libraries using bundle load faster stuff like that so we are constantly higher hiring so I would if any students are here I would like to invite you to to our to our internship programs so we basically have like two rounds each each year the main main being before the summer holidays so and we have very we have quite quite quite a few guys on our team who started us as intents and we would like to let's say carry on with this also we we can help you get your bachelors easy something like that on the product so you might be working on something that actually gets gets used by by people in the real world so that's it from me I now would ask my colleague Milan to tell you about Automate okay thank you so my name is Manzan Azarevitz I'm also one of the Manage IQ developers based here in Abno and in the second part of this session I'm going to be speaking of speaking about automation with Manage IQ what it can do and how it can make your life in cloud easier so what are the most common use cases for automation in Manage IQ and Manage IQ can for example serve as a as an integration point during a host or VM provisioning meaning then that for example you can customize your provisioning process so that before any new virtual machine is deployed it can request for example new IP address from your some from some management pool file a ticket with a help desk or well you can integrate pretty much with any business management thing you can have in your company you can customize your infrastructure to do automatic power on off based on your office hours another interesting use case is automatic tagging based on the content on the file content of your virtual machines and probably the most interesting use case for automation in Manage IQ is automatic infrastructure scaling based on utilization so for example you can have multiple hosts one of them is being loaded high CPU usage storage what have you and you can customize the automation so that when this happens a new host is automatically added or virtual machines from the loaded host can be automatically migrated to a new machine okay so let's start the basics the very basic building block of automation Manage IQ is automation data store so this is what it looks like in in the UI when you navigate to automate an explorer you're going to be presented with a three structure that is the automation data store and I'm going to briefly explain all the important items that you can see here so like I said it's a three structure directory like structure with items or several types domains namespaces classes instances and methods automation domain is the top level folder which contains well pretty much everything and important thing about about this is that every new Manage IQ installation will come with a default Manage IQ domain which already contains all kinds of automated magic which you can use the default Manage IQ domain is read only it's locked so you cannot really modify it but what you can do is you can create a copy of every automation method you like or instance or class and customize it in any way you want so next item is automation and namespace this is really just a container for everything else and you you can model it in model it any way you want and this is really just to have things nicely nicely organized automation class is in fact the most important component of the automation data store this is in fact where all the magic happens every automation class is defined by its schema and this is where you say okay this automation class is going to have these methods these attributes these states and these relationships automation class instance is nothing but an instance of the class you define previously for your specific use case so it is an instance with the actual fields filled in an automation method finally is the actual code which is going to be executed when you run automation this in fact is Ruby code Ruby code that you're gonna have to write from scratch or you can like I said you can modify the existing existing code that we provide so back to the screenshot that I showed you before the top level you can see the top level domain then couple of namespaces cloud orchestration VM some classes placement naming email the placement class has in this example has one has got one instance called default and two methods best fit Amazon best fit open stack okay to show you how this works I'm gonna demonstrate this with this very simple hello world example not very realistic but it will do this example does nothing more than it is going to print hello world into automation lock automation lock is lock file which lives on your manage IQ server and it contains while locks for automations so first we have to create a class schema before that I created a new custom domain example comb under which I have the simple stuff simple stuff namespace and then I created a hello world class on the right side you can see that that is actually the schema definition of the class it says this class is going to have only one method the placeholder name is called execute next we create class instance on the right side it says in this instance of the class we're going to use hello world method the name of the method that we're going to use is hello world so in the next step we create a hello world method that is the actually what we call that we're going to execute it's very simple just two liner first line is going to be the the log line hello world and then we exit we're done how do we run this stuff so the the easiest way to run automation is through simulations so what do you do in your UI you navigate to automate and simulation at the top you have to feel feeling all kinds of magic but this this stuff at the top basically says simulation is going to create in create an instance of a class which class that is that specified at the bottom you say namespace class instance you submit and this is the result this is the result in automation log so you can see the hello world okay so in the example I just showed you you saw that you could see that I was using this dollar EVM thing to log hello world into automation log so what is this dollar EVM thing it is this EVM variable is is a way for many JQ automation to provide access to the data that you're going to need during the automation process that is the data that came with the automation request or from the automation event and this this thing also will provide you access to all the data in your many JQ that many JQ database so this dollar EVM thing it's quite complex it has lots of lots of methods and I'm not really gonna explain this too deeply because it's kind of boring and the thing is nicely documented in the many JQ documentation so I'm just gonna show some examples this is how you log things info warning error and this is how you for example will access the data in your database so dollar EVM route will contain the will provide access to your many JQ database to approach machines users requests hosts storages clusters etc the content of EVM route in fact will always depend on the type of automation that you're running so for example if it's VM related you're going to go into work with EVM route VM if it's host related you're gonna have EVM route host pre-filled with the actual data so one the first way of entering or triggering automation in many JQ is with simulation but that's not really what you want to do there are other ways of how you can trigger the automation run one is through custom buttons then through management policies alerts and finally with REST API so next I'm gonna show you how to how to execute or how to customize your automate automation using custom buttons so one thing that you can do in many JQ UI is that you are able to create all kinds of custom buttons for for example hosts VMs clusters etc and these buttons will eventually show up somewhere in the UI for example if you create buttons for hosts they will show up in a tab where you when you click on a specific host interesting thing about custom buttons is that you can attach all kinds of functionality to it you can attach custom dialogue to it so that for example you click on a button dialogue is presented to you fill in some values for example name of virtual machine and you can pass all kinds of other data attributes and values to the automation method that you want to execute so for example one way to use custom buttons with automation is that you're going to have one generic automation method which you're going to which is going to take some arguments and parameters and you're going to pass different parameters to this automation method with different buttons okay simple example with custom buttons so in this example we're going to create custom buttons for a VM host and what these buttons are going to do they're going to delete idle machines we're going to have three buttons one is for machines which are idle more than seven days then for more than 14 days and then for 30 days so what we're going to need again new class instance and methods next thing we are going to create new automation entry point all those this part is not really needed but we're going to create anyway and finally the custom buttons so again new class I created a new class called idle VMS on the right it says there is going to be just one method next new instance again I incidentally I named it idle VMS this instance is going to use idle underscore VMS method and finally the interesting part this is the Ruby code that you're going to put in into your idle underscore VMS method this is where all the magic happens so the most interesting part or the most important part is the first first line where you collect the data that was passed to you from the custom button this is how you do it through EVM route and the the other interesting part is EVM host this will contain the object representing the VM host for which you triggered the automation so you clicked on a specific host and on the on the custom button that we created and this is going to be the host so we go through all its virtual machines we look at the power state if it's off and if it's been off for that many days we just added to a list of idle VMS next we're going to create a ticket we construct a body of an email and finally we're going to send an email to to Wow helpdesk at example com so in fact we're not deleting the machines we're just notifying our help desk okay these machines need to be created finally we exit with MIQ okay we're done next entry point like I said this part is not really needed we can execute this this method the same way we did in simulation but this is really just to make our life easier here we on the right we created a relation to to the instance we created before so this basically says whenever you enter automation through this entry point you're going to instantiate this class so as a last thing we're last thing we're going to create the three custom buttons first button for seven days as you see here at the bottom seven days another button for 14 days and another button for 30 days this is where the buttons will show the UI so you navigate to the specific host and you are presented with these three custom buttons click on it magic happens okay so another way to trigger automation event is with control policy action and management alerts it is pretty much the same way as with custom buttons except that with custom buttons you have to go somewhere in the UI and click on some click on some button for the magic to happen with control policy actions something magical has to happen in your cloud infrastructure for example new VM is started VM is cloned VM host is running out of space something like that some even has to happen and the manage IQ server will catch this and you can customize the automation so that whenever this happens automation happens so for example the VM host is loaded you can customize the automation so that new host is added or VMs from the loaded host are migrated somewhere else and finally state machines in the examples that I showed you today all the automation stuff was really just one Ruby method it will do it's very simple but in the real real life the real life is more complex and what you really want to do in real life is for the automation run to be a sequence of steps or states so what the automation schema allows you to do is to define a bunch of states in your in your class and with the automation method you will define transitions between these states so effectively what you're modeling is a state machine so the exit so the automation that us is around is a sequence of steps with state state machine what you can do you can make sure that each step is successfully completed between before next step can continue or you can for example retry the step that failed or for example set a timeout on a successful completion of a state but otherwise things are the same you can trigger it with the other button simulation or custom action or REST API of course yeah so the default manage IQ automation schema come the automation data store comes with all kinds of state machines already predefined host VM instance provisioning retirement etc VM migration so the most commonly used is the VM provisioning and this is like I said by default you cannot modify the default automation code but code but what we can do you can copy it out your own domain and you can customize the VM provisioning in any way you like questions for me or my colleagues do we plan to enable versioning writing a code yes actually there's a jit integration already in place so so you can have your you can have your methods exported as jit repo and you can work with VM or whatever tooling you use and use jit no yeah so the question was if if many check you somehow helps you to migrate your stuff from one one cloud provider and to another or let's say from in front of cloud or from cloud in front something like that and the answer is yes it's quite commonly used use case but by our customers well it's not like clicky clicky but well you have to use the Red Hat engineering services consultancy services something like that I don't know and they will create it for you and to prepare it so that then you have such a custom button and that you click that and magic happens unfortunately we are out of time if you would like to ask something you can do it outside of this room so thank you gentlemen one for you and who was asking the question about jit so may I may I ask the gentleman who was asking the question about you to take his scarf scarf I guess you can there is the chair so you can sit down standing table some sort of standing table is very very low