 So, thank you. I am a bit sick, so if I die in the middle of the talk, just take me to the closest hospital. Okay, we have 30 minutes. I'm going to talk about... First of all, how are you? Fine? Are you tired? No. No? Okay, perfect. So, let's continue. We are going to play today. So, basically, I'm going to talk about easy full stack deployments. We are going to talk about deployments, basically. So, my name is Alvaro Guerre, as you hear. So, I work for the ALMA project. Do you know the ALMA Observatory project? Okay, this is an observatory located in Chile. It contains, formed by 66 antennas. So, this is our hardware. Unfortunately, I'm not going to talk about this today. But, as you can and now, we are very worried about our deployments, right? So, I'm also a co-founder of the Python Chile Group in Chile. Python Group in Chile. Yeah, it's more fun than what you see in the pictures. Okay, let's start. First of all, we need to talk about the ways to build software. We have different ways to build software. So, if you see here, we have an example, a PHP example. This is some basic form that is submitted and stored in the database. Is this right or not? It depends, right? And probably it depends on the context, right? So, we have a different way to build software, since we have a different way to build software. And here we have, this is the Java way to build software. Have you seen this? Have you used Java in the past? So, this is the enterprise way to build software, right? It's very useful. So, try to use a basic form with this. So, okay, we need a lot of layers. So, I copied this from the Science Python conference. I saw this in Twitter in some place. And it's important that the concept that we see here are very important because we used to say that we use Python because to maintain, right? On the other hand, we have something that we call black box deployments. Black box deployments are, for example, when you have a button and you want to, okay, press the button and get all your flexible or get all your production environment ready to be used. There are a lot of commercial solutions that use this approach, right? For example, I don't know if VMware is part of this. It's a sponsor of the Python conference. But, for example, if you have used VMware or Bicenter, you have something that we call black box deployment because you don't have the control of your deployments, right? So, but what about deployments? If we have patterns for software, we have patterns to build software, we should have also patterns to build our applications, I mean, to create our deployments, right? So, we should try to do something to follow a pattern or a way to keep all our deployment under control. So, what we are going to see today, is this approach. We want to install a Pyramid application. Any of you have used Pyramid in the past? Okay, just two people, okay. And we want to use build out. Any of you have used build out? Okay, well, Ansible? Okay, and Docker? Okay, more people. So, I'm sorry. Basically, what we are going to do today is the same thing that we did yesterday during the training. So, this is going to be interesting. Basically, my mom told me that please don't do life coding. So, what happens if we all do life coding? We all do life coding today. What can be wrong? Do you like to do that? Okay, if you have your computer, please take your computer and we try to do something. If it works, okay, we work. If it doesn't, it doesn't. So, let's go to this web page, okay? Okay, okay. What you will see there, okay. Everybody have taken, isn't this URL, right? Okay, please go to this URL and we will do the following today. In that URL, you will find something like this, right? So, we have 100 machines to connect to, right? What we want to do is each person here has to connect to each machine here. So, we are going to start from here, right? My machine is the number one, right? You are 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17. Can you continue from here? Okay, okay, okay, okay. Okay, faster, faster. Okay, okay, okay. 27, right? 28, okay, 29, yes. 32, okay, okay, perfect. We will work a bit under pressure, so we will try to do something. Okay, what we want to do is just connect to one of these, connect to your machine. If you don't have a machine just for a computer, don't worry. You can see everything that we are going to do here. So, as has been explained here, what we want to do is a full deployment of our application using, first of all, Pyramid, build out, asable and docker in different layers, right? So, I'm going to connect to my machine here, which... Ah, okay, this is important. You see two columns. The first column is to access to your machine, obviously, and the second column is to see the application running, right? So, we are going to connect to the machine. Ah, I forgot, I don't know if you saw this, but the password to each machine is 123456, right? We are connecting to Amazon Web Service Machine, which has a lot of docker containers inside it, right? So, I'm going to connect. Actually, I'm currently connecting to a docker container that has everything. You can do everything what you want, but please be careful. So, because you have root access, so if you want you can install things, but please don't do that. Please follow the training. Inside this, inside the container, you have six labs. The purpose of this style in the same way that was the purpose of the training yesterday is that you can get to your home a full implementation, a full running course that you can test at home, basically. If you check here, you can download, if you do docker pool slide IP to 5550, you can download all these labs in your computer if you have already docker installed. If you don't understand about this command, we'll see something later. And you can follow the slides at this URL. If you connect to that URL, you will see six labs, but we are going to do five today. We pretend to do five labs today. And in each lab, if you go down, you will see the details about what this lab is for, right? So, because we don't have a lot of time, actually we have just 15 minutes, is your responsibility to go to these labs if you want to follow, or if you are, or you can follow me here. Okay, we are going to connect to lab one. Lab one, in lab one, we are going to, it's important that you activate the virtual environment in each lab and deactivate the virtual environment once we finish, right? So, I'm going to activate the virtual environment. If you haven't, do you know about virtual environments? Okay, virtual environment is a way to isolate your Python, so we are using this in order to prevent, to install things in the machine, right? So, what we are going to do is basically we are going to create our Pyramid application. We are going to run, set up this to get all libraries or dependencies installed, right? And finally, we are going to run our Pyramid application. This is a very basic Pyramid application. You see that it's running in that port, but in order to see this application, you have to use the port that was here, right? The web port. So, if I reload page, I see the Pyramid application. So, this is a basic installation. So, what we want to do is this, right? We want to do now an installation using build out. Okay, what is build out? Build out is a way to package all your packages, your libraries, or your Python libraries to create a project. Most of the times, you will use different software products to run your application. In the real world, probably you will have a lot of dependencies, or even your company, different teams will work using different software, Python software. So, build out is a way to install all the dependencies in organized ways. So, we are going to deactivate this to, and you will see there that we have a build out to install Pyramid and our application. If we run build out, we don't need a virtual environment here because build out works as a virtual environment. We have to run this command. This O parameter is to run this command in offline mode to internet to get all the packages. And if we, we should see now our application running, but now installing using build out, right? Okay, if you don't believe me, it is running using build out. Okay, if we go to lab three, now we have a different build out. You can see this in the slides. Now, the application is downloaded from GitHub. If you go to that URL, you will see the application is under my GitHub account, right? So, this is basically the same thing. So, we have to do this. You will see that the application is not running. Okay, and we see our application running. Okay, perfect. So, now, you can see in the slides that we are using, we want to use Ansible. What's Ansible? Basically, Ansible is a way, it's a tool to install, to deploy our products in different hosts, right? So, we have this configuration. The idea is that from a client machine, we can install using a specific configuration five, or the specific Ansible project, we can install the same machine, sorry, the same application in different hosts or different machines, right? So, under the lab four folder, you see three folders. One is Ansible, the other one is the app folder where our application will be installed. And, finally, we have the virtual environment that we need to activate, right? So, we are going to activate this environment. Here, we have different files that Ansible used to deploy our application. We have variables for different global variables. We have a host file. With this trick, we are able to install our application locally, but if you see on the top, we can have different servers or different machines where our application will be installed in parallel. If we go to the task folder under the roles, okay, maybe we have this. This is the main file to run Ansible called plain where we call different roles. Each role represents, in this case, an application. So, in this case, our MyApp application, right? So, we have roles, we have something that I really like about Ansible is that you can have all the instructions like a book, so you are able to read all the instructions that you need to install your applications. This is a very basic application, but Ansible creation files can be more complex than this. So, in this case, we are doing, okay, we are copying our build-up files. We are copying our versions file, which is used by build-out. We are copying our boost-up build-out. We run boost-up, which is the base to run our build-out, our application using build-out, and finally, we run build-out, right? And we create a notification to start our application. So, if we go to roles, a sort of event which is called or is notified when we run build-out, when we run Ansible. So, we are going to execute this, check if our application is not running. Okay, there is running. So, finally, you should see your application. So, using Docker, we're going to activate this, we are going to left five, we're activate, and you see that we have Docker running. We don't have any Docker container. Unfortunately, we can't explain all Docker commands, but you can find everything in the slides. We have different Docker images, but because most of you know about Docker, you see that we have our application running. So, if you go to the slides, first of all, we need to stop, you should see our application running, but now using Docker. So, I think we are ready. But, basically, the idea that you can get from this is that we need to install our applications, or we need a basic concept to install our applications. It's not just use the best tools, but we need to understand or we need to know how to recover, for example, our application, for example, our Docker containers are not working, or even build out is not able to connect to the PyPy repositories or something like that. So, okay, this was a talk. It was very fast. You can download everything, what you need to run these examples with more code and get the slides from here, and if you have questions, you can contact me from there. So, thank you very much.