Getting started with Ansible

Ansible automates the management of remote systems and controls their desired state. A basic Ansible environment has three main components:

Control node

A system on which Ansible is installed. You run Ansible commands such as ansible or ansible-inventory on a control node.

Managed node

A remote system, or host, that Ansible controls.

Inventory

A list of managed nodes that are logically organized. You create an inventory on the control node to describe host deployments to Ansible.

Basic components of an Ansible environment include a control node, an inventory of managed nodes, and a module copied to each managed node.

Ready to start using Ansible? Complete the following steps to get up and running:

  1. Install Ansible. Visit the installation guide for complete details.

    python3 -m pip install --user ansible
    
  2. Create an inventory by adding the IP address or fully qualified domain name (FQDN) of one or more remote systems to /etc/ansible/hosts. The following example adds the IP addresses of three virtual machines in KVM:

    [myvirtualmachines]
    192.0.2.50
    192.0.2.51
    192.0.2.52
    
  3. Verify the hosts in your inventory.

    ansible all --list-hosts
    
    hosts (1):
      192.0.2.50
      192.0.2.51
      192.0.2.52
    
  4. Set up SSH connections so Ansible can connect to the managed nodes.

    1. Add your public SSH key to the authorized_keys file on each remote system.

    2. Test the SSH connections, for example:

    If the username on the control node is different on the host, you need to pass the -u option with the ansible command.

  5. Ping the managed nodes.

    ansible all -m ping
    
    192.0.2.50 | SUCCESS => {
      "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": false,
        "ping": "pong"
        }
    192.0.2.51 | SUCCESS => {
      "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": false,
        "ping": "pong"
        }
    192.0.2.52 | SUCCESS => {
      "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": false,
        "ping": "pong"
        }
    

Congratulations! You are now using Ansible. Continue by learning how to build an inventory.

See also

Ansible Demos

Demonstrations of different Ansible usecases

RHEL Labs

Labs to provide further knowledge on different topics

Mailing List

Questions? Help? Ideas? Stop by the list on Google Groups

Real-time chat

How to join Ansible chat channels