Ansible CheatSheet for DevOps

Welcome to the Ansible Cheatsheet which contains a list of the most common commands and scripts that you can use to get started quickly with Ansible, Ansible Playbooks and Ansible Roles.

Note: if you are new to Ansible we recommend checking this article: Ansible Playbook Example for beginners

Ansible CheatSheet

Install & SSH set up

sudo dnf install ansible

ssh-keygen

ssh-copy-id USER_NAME@HOST_NAME

Ansible Inventory File

# Localhost 
[localhost]
127.0.0.1

# Matches from server01 to server20
server[01:20].example.com

# Group named 'webservers' with two servers
[webservers]
webserver1.example.com
webserver2.example.com

# Nested group  'backend' under the 'webservers' group
[webservers:backend]
dbserver.example.com

Execute command

ansible <host-pattern> -m shell -a "<command>"

Browse Inventory

ansible-navigator inventory

Sample ansible.cfg

[defaults]
inventory = ./inventory
remote_user = someuser
ask_pass = false
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false

Run Playbook

ansible-navigator run  -m stdout ping-all.yml

Playbook Dry run

ansible-navigator run -m stdout webserver.yml --check

Pass variables to a Playbook

ansible-navigator run main.yml -e "package=jboss"

Encrypt file

ansible-vault create secret.yml

View Encrypted file

ansible-vault view secret1.yml

Check Service Started

ansible <host-pattern> -m service -a "name=<service_name> state=started"

Playbook Structure

---
- name: Playbook Name
  hosts: <host-pattern>
  become: <true/false>
  tasks:
    - name: Task Name
      <module>: <arguments>

PlayBook Variables

---
- name: Playbook with Variable
  hosts: localhost
  vars:
    my_variable: "Hello, world!"

  tasks:
    - name: Print Playbook Variable
      debug:
        msg: "{{ my_variable }}"

Capture output

---
- name: Capture output
  hosts: all
  tasks:
    - name: Install the package
      ansible.builtin.dnf:
        name: httpd
        state: installed
      register: install_result

    - debug:
        var: install_result

Conditional execution

---
- name: Conditional Execution
  hosts: all
  tasks:
    - name: Ensure a directory exists
      file:
        path: /path/to/directory
        state: directory
      when: ansible_os_family == "RedHat"

Loop execution

---
- name: Playbook with Loop
  hosts: all
  vars:
    packages_to_install:
      - vim
      - git
      - curl
  tasks:
    - name: Install required packages
      yum:
        name: "{{ item }}"
        state: present
      loop: "{{ packages_to_install }}"

Handler

---
- name: Playbook with Handler
  hosts: all
  tasks:
    - name: Ensure a file exists
      file:
        path: /path/to/file
        state: touch
      notify: restart service

  handlers:
    - name: restart service
      service:
        name: myservice
        state: restarted

Init a Role

ansible-galaxy init my_new_role

Use Role

---
- name: Playbook with Role
  hosts: all
  roles:
    - webserver

Role from Requirements

ansible-galaxy role install -r roles/requirements.yml -p roles

List Roles

ansible-galaxy list

Search Roles

ansible-galaxy search 'wildfly'

Info Role

ansible-galaxy-info 'role'

Jinja2 Template

---
- name: Playbook with Jinja2 Template
  hosts: all
  tasks:
    - name: Render Jinja2 Template
      template:
        src: path/to/my_template.j2
        dest: /path/to/output/file
      vars:
        variable_name: value

Loop

{% for item in my_list %}
Item: {{ item }}
{% endfor %}

Conditionals

{% if ansible_os_family == 'RedHat' %}
RedHat specific tasks
{% endif %}

Use Facts

Ansible OS: {{ ansible_facts.os_family }}

Variables

My variable value: {{ my_variable }}

Happy automating with Ansible !

ansible cheatsheet

Conclusion

With this Ansible Cheatsheet, you now have access to a concise and well-structured guide that covers the essential commands, syntax, and functionalities of Ansible. Whether you are a sysadmin, a developer, or simply curious about this powerful Ansible Automation tool, this Ansible Cheatsheet will empower you to streamline your scripting workflow, automate tasks, and boost productivity.


Recommended Articles

Provision and Update WildFly 32 with Ansible Playbooks: A Comprehensive Guide

Learn how to provision and update a WildFly 32 application server using Ansible playbooks. #Ansible #WildFly32 #DevOps #ConfigurationManagement

Mastering Ansible Ad Hoc Commands: A Comprehensive Tutorial

Learn how to use ad hoc commands in Ansible for efficient infrastructure management and automation. #Ansible #Automation #CloudNative

Skip Sudo Password for Ansible Playbooks Using Variable and File Methods

Learn how to securely skip sudo passwords when running Ansible playbooks with variable or file methods.

Create Basic Ansible Playbook to Write Message to Remote Server Text File - Java and Cloud-Native Tutorial

Learn how to create a basic Ansible playbook for writing a custom message to a text file on remote servers. #Ansible #Java #CloudNative