Introduction to Ansible Transcripts
Chapter: Deployments
Lecture: Installing App Dependencies with venv and pip3

Login or purchase this course to watch this video and the rest of the course contents.
0:00 We now have our source code on our web server but nothing is running. So, what we want to do in the next step
0:07 is install our application dependencies with pip into a virtual environment, which provides dependency isolation for Python applications, and then
0:15 stand up our WSGI web server gateway interface server. Once that's done, we can also test out our NGINX configuration.
0:22 Make sure we didn't make any other mistakes there. We should be able to serve up static assets like JavaScript, CSS, images, those sorts of things.
0:29 Let's take the next step to create our virtual environment install our dependencies with pip and then we'll be ready to set up our WSGI server.
0:38 Head back up into roles/webserver/tasks. Modify main.yml. We're ready to create a new file dependencies.yml.
1:01 Now, we want to make sure we've got a couple of packages installed. One of them Python pip should already be installed
1:06 but we'll add it to our list here, just in case. So, there's no harm in adding a package name as a check to see if it should be installed
1:13 and if it already is installed, it'll just be skipped over. So, we're going to go back and use the ebt module. We need superuser privileges.
1:38 All right, now we want to create a virtual environment. We're going to check to see if it's already created. If it is, we'll avoid this step.
1:57 Now, if it's not created we will create a directory for it. We'll run the command to create a virtual environment.
2:13 And we'll create a new variable for VM directory. Then finally, with our virtual env in place we can use the pip3 command to install the dependencies
2:28 that our application lists into our virtual environment.
2:51 Okay, let's add a venv_dir to our variables. And this will be outside of our git repository directory.
3:09 Okay. Those should be the new tasks that we need our web server to install the application dependencies for our application.

Talk Python's Mastodon Michael Kennedy's Mastodon