Ansible is an open-source automation tool sponsored by Red Hat. It is written in Python and makes it easier to configure systems and deploy software on multiple servers from the central server. Ansible is cross-platform and primarily intended for IT professionals for application deployment, server updates, configuration management, and many day-to-day tasks.

In this post, we will show you how to install Ansible on Fedora.

Step 1 – Install Ansible

By default, the Ansible package is included in the Fedora default repo. You can install it easily using the following command.

dnf install ansible -y

Once Ansible is installed, you can verify the Ansible version using the following command.

ansible --version

Output:

ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.5 (default, May 14 2021, 00:00:00) [GCC 11.1.1 20210428 (Red Hat 11.1.1-1)]

Step 2 – Setting Up SSH Key-Based Authentication

Next, you will need to set up an SSH key-based authentication between the Ansible host and a remote host. First, create an SSH key pair on the Ansible host with the following command.

ssh-keygen -t rsa

You will see the generated key in the following output.

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:aPKqkVGXq7wmohJ/nCCZon730+x5Wrxeo+3K091Sr4o root@fedora
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|       .         |
|    . o          |
|   . . o         |
| o. . + S        |
|* .+ =    .     .|
|o+ooo.. o  o.o..o|
|+ oo=+ . o++=.o.o|
|=oo=+ ..o+E*=+.o |
+----[SHA256]-----+

Next, copy the generated SSH key to the remote host with the following command.

ssh-copy-id root@remote-host-ip

Output:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.200.200 (192.168.200.200)' can't be established.
ED25519 key fingerprint is SHA256:qBNfJ6Vud/6TCt9bHOa1JwouYDrVuU5g/JhfAxfu3FM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Step 3 – Configure Ansible Inventory

Next, you will need to edit the Ansible inventory file and define your remote host IP address and SSH username.

nano /etc/ansible/hosts

Add the following configuration at the end of the file.

[fedora]
server1 ansible_host=remote-host-ip ansible_user=root

[all:vars]
ansible_python_interpreter=/usr/bin/python3

Save and close the file, then verify your added configuration using the following command.

ansible-inventory --list -y

You will see the following output.

all:
  children:
    fedora:
      hosts:
        server1:
          ansible_host: 192.168.200.200
          ansible_user: root
    ungrouped: {}

ansible --list-hosts all
  hosts (1):
    server1

Step 4 – Use Ansible to Manage Remote Host

At this point, Ansible is installed and configured to manage the remote host. Now, let’s get our hands dirty with Ansible.

First, check the connectivity between the Ansible host and the remote host using the following command.

ansible -m ping all

If the connection is successful, you will see the following output.

server1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

To verify the operating system version of the remote host, run the following command.

ansible -m shell -a "cat /etc/fedora-release" fedora

After the successful command execution, you will see the following output.

server1 | CHANGED | rc=0 >>
Fedora release 34 (Thirty Four)

To install Nginx on the remote host, run the following command.

ansible -m shell -a "dnf install nginx" fedora

To verify the Nginx installation, run the following command.

ansible -m shell -a "nginx -v" fedora

Output:

server1 | CHANGED | rc=0 >>
nginx version: nginx/1.20.2

To check the uptime of the remote host, run the following command.

ansible -m shell -a "uptime" fedora

Output:

server1 | CHANGED | rc=0 >>
 04:15:35 up  3:53,  2 users,  load average: 0.24, 0.14, 0.05

If you want to check the disk space of the remote host, run the following command.

ansible -m shell -a "df -h" fedora

Output:

server1 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G  124K  3.9G   1% /dev/shm
tmpfs           1.6G  664K  1.6G   1% /run
/dev/sda1       160G  4.0G  157G   3% /
tmpfs           3.9G  168K  3.9G   1% /tmp
tmpfs           796M     0  796M   0% /run/user/0

Conclusion

In this tutorial, we showed you how to install Ansible on Fedora. Then, we explained how to configure Ansible to manage remote hosts with hands-on examples. You can now use Ansible to manage and monitor multiple servers from the central place. You can try Ansible to manage multiple servers on dedicated server hosting from Atlantic.Net!