Introduction to Ansible
A course by Matt Makai of Full Stack Python for software developers who want to learn the Ansible configuration management tool for managing servers, deploying web applications and performing DevOps tasks.
More
Most books and courses only walk you through the narrow happy path through the difficult programming forest. When you step off the path you can feel lost and frustrated because the instructor is no longer there to keep you on track.
This course takes a different approach where I show you the mistakes and errors that you will commonly run into when using Ansible, such as:
- Handling Python 3 instead of 2 as a default remote server installation
- Identifying and fixing typos in command line arguments and file paths
- Tweaking configurations for services that need to start in certain orders
- Upgrading privileges when permissions are denied in running tasks
- Working with Ansible modules that have specific Python dependencies such as psycopg2 for PostgreSQL
- Fixing shell script commands running within Ansible tasks
The best way to learn a new software development library is to pair program with a more experienced developer. That's why most of this course is live coding with explanations of what we are doing and why along the way. View the full course outline for more details.
Learn Ansible by configuring servers and deploying applications
Ansible is a stable, widely-used open source configuration management tool that works amazingly well for application deployments in any programming language, not just Python web apps.
During this course we will build several Ansible playbooks together so we can learn the tool's core concepts including:
- Modules
- Tasks
- Roles
- Templates
- YAML syntax
- Variables
- Encryption
We'll build playbooks that demonstrate these concepts and connect them together by configuring servers and handling deployments.
Who is this course for?
The ideal student for this course is someone with the ability to create web applications (even simple ones) who wants to learn Ansible and configuration management to automate working with servers and application deployments.
If you don't know any programming at all, you'll want to take a primer first. I recommend you take the free MIT course Introduction to Computer Science and Programming Using Python.
If you don't know Python, consider taking Michael's Python Jumpstart by Building 10 Apps course. You do not need to know Python to learn Ansible but a bit of knowledge will help understand some of the edge case issues we debug in this course.
Watch Online Introduction to Ansible
# | Title | Duration |
---|---|---|
1 | Welcome to the Course | 01:44 |
2 | Why Ansible? | 04:21 |
3 | Obtaining the Source Code | 00:33 |
4 | Meet Your Instructor | 03:23 |
5 | Working with Ansible | 03:26 |
6 | Thank you to our sponsor, DigitalOcean | 00:38 |
7 | Configuring Ansible on macOS | 02:53 |
8 | SSH Keys on macOS | 01:55 |
9 | Options for Using Ansible on Windows | 01:30 |
10 | Configuring Ansible on Ubuntu | 03:12 |
11 | SSH Keys on Ubuntu | 01:46 |
12 | Core Ansible Concepts Overview | 04:44 |
13 | Modules | 04:17 |
14 | Tasks | 02:09 |
15 | Running Ad Hoc Tasks | 02:35 |
16 | Roles | 02:19 |
17 | Playbooks | 01:18 |
18 | Inventory | 01:37 |
19 | YAML | 01:57 |
20 | Applying the Ansible Concepts | 00:43 |
21 | Writing Our First Playbook | 01:01 |
22 | YAML in the Playbook File | 01:49 |
23 | Sign up for DigitalOcean | 01:09 |
24 | Provision A Server | 01:34 |
25 | Create A New SSH Key | 02:24 |
26 | Creating Our First Role | 04:12 |
27 | Adjusting Output Verbosity | 01:52 |
28 | New Users with the group, user and authorized_key Modules | 03:34 |
29 | Reviewing Our First Playbook | 00:55 |
30 | Working with Data | 01:35 |
31 | Ansible Variables | 03:12 |
32 | Environment Variables | 02:28 |
33 | What are Templates? | 01:13 |
34 | Working with Templates | 03:38 |
35 | Encrypting Data | 01:09 |
36 | Ansible Vault | 03:02 |
37 | Using Data | 00:55 |
38 | Configuring Servers | 01:33 |
39 | New Playbook Scaffolding | 01:08 |
40 | Provisioning Two Servers | 01:11 |
41 | Our New Inventory File | 01:06 |
42 | Initial Configuration Playbook | 06:17 |
43 | Creating a Non-root User | 02:43 |
44 | Installing System Packages with the apt Module | 01:39 |
45 | Testing Our Playbook | 01:12 |
46 | Setting up Firewalls with the ufw Module | 02:20 |
47 | Splitting Web Server and Database Server Roles | 04:25 |
48 | Running Nginx | 01:42 |
49 | The template Module for Configuration Files | 02:32 |
50 | Installing PostgreSQL | 03:35 |
51 | PostgreSQL Management with the postgresql_db and postgresql_user Modules | 04:44 |
52 | Testing the Database Connection | 00:59 |
53 | Reviewing Ansible Modules for Server Configuration | 00:35 |
54 | Learning Ansible Modules by Deploying | 03:09 |
55 | DNS Configuration | 01:45 |
56 | Enhancing Our Playbook and Let's Encrypt | 02:46 |
57 | SSL Certificates with the shell and stat Modules | 05:42 |
58 | Enhancing the Nginx Template | 05:41 |
59 | Testing the Nginx Tasks | 03:02 |
60 | Deploy Keys on GitHub | 05:54 |
61 | Cloning Repositories with the git Module | 01:43 |
62 | Installing App Dependencies with venv and pip3 | 03:17 |
63 | Using the start-at-task Argument | 02:07 |
64 | Configuring Supervisor with the service and pause Modules | 03:51 |
65 | Solving Template File Name Issues | 01:27 |
66 | Fixing Our Nginx Configuration | 03:01 |
67 | Serving Static Assets | 01:02 |
68 | Updating Config Files with the lineinfile Module | 03:06 |
69 | Learning Ansible with A Deployment Recap | 01:11 |
70 | Course Recap | 02:30 |
71 | What to Investigate Next | 02:42 |