Below you’ll see an Ansible Cheat Sheet, curated by our team. This cheat sheet captures the basics + more so that you’re able to begin using Ansible. Enjoy!
The following Ansible specific terms are largely used throughout this guide:
- Control Node (Management Node): This is a system where Ansible is installed and configured to connect and execute commands on nodes.
- Managed Node (Target Node): a server controlled by Ansible.
- Inventory File: a file that contains information about the servers Ansible controls, typically located at
- Playbook: a file containing a series of tasks to be executed on a remote server.
- Role: a collection of playbooks and other files that are relevant to a goal, such as installing a web server.
- Play: a full Ansible run. A play can have several playbooks and roles, including a single playbook that acts as an entry point.
- Task: an action (invoked by Ansible).
Advantages to Ansible:
- Free, open-source, and backed by Red Hat.
- Minimal system requirements
- YAML Syntax (easy to read and understand for beginners)
- Developed in Python
- Strong community
How does it work?
- From the Control Node, Ansible connects and pushes modules to them. The modules are removed when they are done.
- The Control Node (often referred to as the Management Node) controls the playbook execution.
- The inventory file provides the list of hosts where the modules will run.
- The Control Node (Management Node) performs an “ssh” connection and executes the modules that will perform the steps defined in the play or playbook.
Below is a list of ad-hoc example commands you can invoke in Ansible.
Test Connectivity to Hosts
ansible <group> -m ping
Display System Information for Hosts
ansible <group> -m setup | less
Start a Service
ansible <group> -m service -a “name=docker state=”started”
Create a New User
ansible <group> -m user -a “name=newadmin password=<encrypted password>”
Remove a User
ansible <group> -m user -a “name=ansible state-absent”
Install a package (to latest version) if it is not present
ansible <group> -m yum -a “name=htop state=latest”
Ansible Sample Playbooks
Below are a few Ansible playbooks you can use to get started.
Download and Install Apache on RedHat, CentOS, Fedora, or Amazon Linux. Replace yum with apt if you are on Debian or Ubuntu.
--- - name: Download and Install Apache hosts: example_group gather_facts: False become: True tasks: - name: Download Apache yum: name: httpd state: latest - name: Start Apache service: name: httpd state: started
Remove Package (Ubuntu or Debian). For example, replace ansible.builtin.apt with yum for RedHat, CentOS, Fedora, or Amazon Linux.
--- - name: Remove htop hosts: example_group become: true tasks: - name: Remove htop ansible.builtin.apt: name: htop state: absent
Add a User
--- - hosts: example_group gather_facts: False become: True tasks: - name: Adding User user: name: example_username comment: example_comment shell: /bin/bash password: some_password
Common issues with playbooks:
- YAML Formating
- Missing quotes
- Unsupported Module (ex: running apt module on Red Hat)
Strategies for resolution:
- Log verbosity. Adding -“v” (up to 4x) at the end of your Ansible command will show verbose output.