Introduction to Ansible Transcripts
Chapter: Ansible Core Concepts
Lecture: Modules
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
We see how each of the Ansible core concepts relates to each other and fills a specific need for how to handle configuration management.
0:07
Now, let's take a look at each of these concepts individually, give them a clear concise definition so that we know what we're working with
0:13
and to take a look at some examples so that in the next chapter when we write our first playbook we at least have enough of an idea
0:19
of why we're working on each step. The first concept is modules. Modules are code provided by Ansible. Now, they're typically written in Python
0:26
and in fact, the core Ansible modules that are provided with the Ansible project when you install it, are all written in Python.
0:33
So, more advanced topic but they don't actually need to be in Python. You could write a module in Java or a module in JavaScript, or Ruby.
0:39
There's a standard way to call Ansible modules. But for our purposes in the introduction just think about this as Python code
0:45
that Ansible provides you to perform a specific action you want to take. What do we mean by specific action?
0:51
Well, for example, if we want to clone a Git repository. For working on a web application we want to clone it to our development server
0:57
where we're going to do a dev deployment. There is a Git module for handling that task. If we want to enable an operating system's firewall
1:04
and configure various settings on it there's a module for working with firewalls in various operating systems. If we want to send notifications
1:12
let's say, e-mail or text message, or Slack message there are notification modules. The creators and maintainers of the Ansible project
1:19
have done a fantastic job of providing modules for almost any purpose you can think of. And as you can imagine, that's a whole lot of modules.
1:25
So, if we look at the Ansible modules documentation it's listed by category. It can get overwhelming very quickly.
1:32
And as I mentioned, there's notification modules. So, if you click on notification modules in the Ansible documentation
1:38
it's going to list them all out for you. If you're ambitious enough to list all of the modules you will be inundated with everything
1:44
that comes with Ansible. However, I would say this is a really bad place to start. I have never used all of these modules as we scroll through
1:53
we're barely past the modules that come with Ansible that start with C. I strongly recommend against trying to memorize all the modules.
2:00
Instead, throughout the course we'll introduce the most important modules and then you can branch out from there
2:05
depending on how your deployment needs and your configuration management needs require various modules.
2:10
At least you know you can search for all modules on the all modules page. For know, let's say we want to accomplish an action.
2:18
Typically, what I do is go to the specific module. If we want to send a message in Slack/Slack notification we can click on the Slack module
2:26
it'll give us any required parameters and it will give us examples. This is typically where I copy and paste
2:33
start playing with the module that I've never used before and start using it. We'll cover how to use the modules when we go over tasks.
2:38
But I have to commend the Ansible core developers and contributors for all the great documentation that they provide.
2:44
I strongly recommend keeping the documentation up so we know that when we want to accomplish an action in Ansible
2:49
there's a documentation list by category. There is also the code on GitHub. Everything about Ansible is open source
2:55
and reading the source code is really helpful when you're working with modules. So, on GitHub, github.com/ansible/ansible
3:03
we've got the code for Ansible and you're going to want to look under lib/ansible and this is where the modules directory lies
3:10
and all of the modules underneath. So, when we took a look at the notification modules if we click on notification this is where the source code
3:17
to each one of the modules lives if we look at slack.py, we can reference the source code for sending messages to Slack.
3:26
So, we've got Ansible documentation so as we start writing our first playbooks we're going to want to accomplish one or more actions
3:32
we'll use the module's documentation and the module's source code how to use each module properly and philosophically, Ansible modules work well
3:39
because they abstract all the low-level complexity the previous automation systems like Bash Shell scripts and have really hard time of containing.
3:47
One of my first jobs out of college before there were any configuration management systems we used Bash scripts to automate our whole deployment
3:53
and those scripts were littered with conditional statements if we're deploying to dev, take these steps
3:58
if we're deploying to staging, to test, to production for deploying one version or another version Ansible modules work well because
4:04
they abstract that low-level complexity. So we know where to look when we want to use a module but how do we actually use them?
4:10
They are invoked by writing Ansible tasks. So, let's take a look at how to create our tasks.