Introduction to Ansible Transcripts
Chapter: Configuring Servers
Lecture: Installing PostgreSQL
0:00 How are we doing so far on our steps to take a look at some of the modules that we use in order to configure our server?
0:06 We said that first we were going to provision a couple of servers off DigitalOcean, which we did. Create a non-root group and user
0:12 that'd be our deployers group and deployer user which are set as variables so we could change the names if we wanted to.
0:18 We want to harden our server against malicious actors. We took just the absolute basic steps of updating
0:24 the system packages, putting in some firewall rules locking down the root user so that no one can log in directly
0:30 whether it be a password or even with a private key. Under the root user they can only log in under the deployer user.
0:36 You likely want to take many more steps and do more research about how to secure a web server but those are just some of the basic steps
0:42 that you're always going to want to take. Next we stood up a web server, installed Nginx and we wrote the absolute simplest custom
0:48 web server configuration that we could easily expand. And which we will expand in the next chapter to include a security certificate
0:54 that we can have HTTPS connections. To round out the scaffolding for this chapter we're going to install and configure the Postgres database.
1:01 And we want to check the database connection just do some very basic set up. For example, creating a database and creating
1:06 a separate Postgres user for that database. Let's give this a try. We're back in the base directory of our server config project
1:15 and let's go under roles/database and then under tasks. Now we already have a couple YAML files here because we set up the firewall roles
1:26 specifically for Postgres access only on our database server. Go back under main.yml. And we're going to include a new file
1:34 we'll just call this one postgresql.yml Save that and now let's create this file.
1:51 We'll start out by installing the system packages that we need for Postgres and if we wanted to run a Python application.
2:05 We'll use the apt module again and remember and we're going to list out a bunch of system packages but remember these will only get installed once
2:11 because Ansible always goes and checks to make sure that those packages are installed and if they are already installed
2:16 it's not going to do it over again. So it saves time on subsequent playbook routes. The name of the package is specified as a token.
2:29 And the items that will populate that token are the following packages.
2:46 And we'll need superuser privileges in order to install this. One thing to take note of here it's really easy to make a typo in a package name
2:54 so always check to make sure that you've typed in the appropriate packages. I actually just realized I had a h where there should be a g
3:00 which would cause this task to fail. Now this looks good. We want the psycopg2 package. We could save this, should be ready to run.
3:07 Head back up into the base project directory. Let's give our playbook a try.
3:30 Looks good. We should have these packages installed and now we can customize our Postgres configuration.