Install Ansible on AlmaLinux 8 Easily with EPEL
By Luca Berton · Published 2024-01-01 · Category: installation
Learn how to install and maintain Ansible on AlmaLinux 8 using the EPEL repository. Follow this simple guide to set up Ansible efficiently on your system.

How to install Ansible in AlmaLinux version 8.
Today we're going to talk about the easier way to install and maintain Ansible inside AlmaLinux 8 using the EPEL repository. I'm Luca Berton and welcome to today's episode of Ansible Pilot.See also: How to install Ansible in AlmaLinux 9 - Ansible install
How to install Ansible in AlmaLinux 8
• use Extra Packages for Enterprise Linux (EPEL) additional packages for Enterprise Linux: Red Hat Enterprise Linux (RHEL), AlmaLinux and Scientific Linux (SL), Oracle Linux (OL)Today we're talking about how to install Ansible in AlmaLinux 8. The easier way to install and maintain Ansible inside AlmaLinux version 8 is using the Extra Packages for Enterprise Linux (EPEL) additional repository. This repository is maintained by the Fedora Special Interest Group and manages a high-quality set of additional packages for Enterprise Linux: Red Hat Enterprise Linux (RHEL), AlmaLinux and Scientific Linux (SL), Oracle Linux (OL).
Links
• AlmaLinux website • AlmaLinux wiki EPEL## Playbook
Install latest Ansible release in AlmaLinux 8.
code
• Install-Ansible-AlmaLinux8.sh#!/bin/bash
sudo yum install epel-release
sudo yum install ansible
execution
$ ssh devops@almalinux.example.com
[devops@almalinux ~]$ sudo su
[root@almalinux devops]# cat /etc/redhat-release
AlmaLinux release 8.5 (Arctic Sphynx)
[root@almalinux devops]# cat /etc/os-release
NAME="AlmaLinux"
VERSION="8.5 (Arctic Sphynx)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.5"
PLATFORM_ID="platform:el8"
PRETTY_NAME="AlmaLinux 8.5 (Arctic Sphynx)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:almalinux:almalinux:8::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-8"
ALMALINUX_MANTISBT_PROJECT_VERSION="8.5"
[root@almalinux devops]# hostnamectl
Static hostname: almalinux.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: 2125d84a5a894596a126819adab153e8
Boot ID: 6a16f6345f3442e78a3c4814e24f479c
Virtualization: oracle
Operating System: AlmaLinux 8.5 (Arctic Sphynx)
CPE OS Name: cpe:/o:almalinux:almalinux:8::baseos
Kernel: Linux 4.18.0-348.2.1.el8_5.x86_64
Architecture: x86-64
[root@almalinux devops]# uname -a
Linux almalinux.example.com 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@almalinux devops]# dnf install epel-release
Last metadata expiration check: 0:50:44 ago on Tue 07 Dec 2021 09:26:05 AM UTC.
Dependencies resolved.
===================================================================================================
Package Architecture Version Repository Size
===================================================================================================
Installing:
epel-release noarch 8-10.el8 extras 22 k
Transaction Summary
===================================================================================================
Install 1 Package
Total download size: 22 k
Installed size: 32 k
Is this ok [y/N]: y
Downloading Packages:
epel-release-8-10.el8.noarch.rpm 251 kB/s | 22 kB 00:00
---------------------------------------------------------------------------------------------------
Total 36 kB/s | 22 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : epel-release-8-10.el8.noarch 1/1
Running scriptlet: epel-release-8-10.el8.noarch 1/1
Verifying : epel-release-8-10.el8.noarch 1/1
Installed:
epel-release-8-10.el8.noarch
Complete!
[root@almalinux devops]# dnf search ansible
Extra Packages for Enterprise Linux 8 - x86_64 3.2 MB/s | 11 MB 00:03
Extra Packages for Enterprise Linux Modular 8 - x86_64 1.2 MB/s | 980 kB 00:00
================================== Name Exactly Matched: ansible ==================================
ansible.noarch : SSH-based configuration management, deployment, and task execution system
================================= Name & Summary Matched: ansible =================================
ansible-collection-ansible-posix.noarch : Ansible Collection targeting POSIX and POSIX-ish
: platforms
ansible-collection-community-general.noarch : Modules and plugins supported by Ansible community
ansible-collection-microsoft-sql.noarch : The Ansible collection for Microsoft SQL Server
: management
ansible-collection-redhat-rhel_mgmt.noarch : Ansible Collection of general system management and
: utility modules and other plugins
ansible-doc.noarch : Documentation for Ansible
ansible-freeipa-tests.noarch : ansible-freeipa tests
ansible-pcp.noarch : Ansible Metric collection for Performance Co-Pilot
ansible-test.noarch : Tool for testing ansible plugin and module code
centos-release-ansible-29.noarch : Ansible 2.9 packages from the CentOS ConfigManagement SIG
: repository
python-sphinx_ansible_theme-doc.noarch : A reusable Ansible Sphinx Theme
python3-ansible-lint.noarch : Best practices checker for Ansible
python3-sphinx_ansible_theme.noarch : A reusable Ansible Sphinx Theme
vim-ansible.noarch : Vim plugin for syntax highlighting ansible\'s common filetypes
====================================== Name Matched: ansible ======================================
ansible-freeipa.noarch : Roles and playbooks to deploy FreeIPA servers, replicas and clients
==================================== Summary Matched: ansible =====================================
ara.noarch : Records Ansible playbooks and makes them easier to understand and troubleshoot
paternoster.noarch : Allows to run ansible playbooks like ordinary python or bash scripts
python3-ara.noarch : Records Ansible playbooks and makes them easier to understand and troubleshoot
standard-test-roles.noarch : Standard Test Interface Ansible roles
[root@almalinux devops]# dnf info ansible
Last metadata expiration check: 0:00:19 ago on Tue 07 Dec 2021 10:17:11 AM UTC.
Available Packages
Name : ansible
Version : 2.9.27
Release : 1.el8
Architecture : noarch
Size : 17 M
Source : ansible-2.9.27-1.el8.src.rpm
Repository : epel
Summary : SSH-based configuration management, deployment, and task execution system
URL : http://ansible.com
License : GPLv3+
Description : Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
[root@almalinux devops]# dnf install ansible
Last metadata expiration check: 0:00:29 ago on Tue 07 Dec 2021 10:17:11 AM UTC.
Dependencies resolved.
===================================================================================================
Package Arch Version Repository Size
===================================================================================================
Installing:
ansible noarch 2.9.27-1.el8 epel 17 M
Installing dependencies:
libsodium x86_64 1.0.18-2.el8 epel 162 k
python3-babel noarch 2.5.1-7.el8 appstream 4.8 M
python3-bcrypt x86_64 3.1.6-2.el8.1 epel 44 k
python3-cffi x86_64 1.11.5-5.el8 baseos 238 k
python3-cryptography x86_64 3.2.1-5.el8 baseos 558 k
python3-jinja2 noarch 2.10.1-3.el8 appstream 537 k
python3-jmespath noarch 0.9.0-11.el8 appstream 45 k
python3-markupsafe x86_64 0.23-19.el8 appstream 39 k
python3-pip noarch 9.0.3-20.el8 appstream 19 k
python3-ply noarch 3.9-9.el8 baseos 110 k
python3-pyasn1 noarch 0.3.7-6.el8 appstream 126 k
python3-pycparser noarch 2.14-14.el8 baseos 109 k
python3-pynacl x86_64 1.3.0-5.el8 epel 100 k
python3-pytz noarch 2017.2-9.el8 appstream 54 k
python3-setuptools noarch 39.2.0-6.el8 baseos 162 k
python36 x86_64 3.6.8-38.module_el8.5.0+2569+5c5719bc appstream 18 k
sshpass x86_64 1.06-9.el8 epel 27 k
Installing weak dependencies:
python3-paramiko noarch 2.4.3-1.el8 epel 289 k
Enabling module streams:
python36 3.6
Transaction Summary
===================================================================================================
Install 19 Packages
Total download size: 24 M
Installed size: 127 M
Is this ok [y/N]: y
Downloading Packages:
(1/19): python3-ply-3.9-9.el8.noarch.rpm 671 kB/s | 110 kB 00:00
(2/19): python3-cffi-1.11.5-5.el8.x86_64.rpm 1.3 MB/s | 238 kB 00:00
(3/19): python3-pycparser-2.14-14.el8.noarch.rpm 1.6 MB/s | 109 kB 00:00
(4/19): python3-setuptools-39.2.0-6.el8.noarch.rpm 1.8 MB/s | 162 kB 00:00
(5/19): python3-cryptography-3.2.1-5.el8.x86_64.rpm 1.5 MB/s | 558 kB 00:00
(6/19): python3-jmespath-0.9.0-11.el8.noarch.rpm 679 kB/s | 45 kB 00:00
(7/19): python3-markupsafe-0.23-19.el8.x86_64.rpm 617 kB/s | 39 kB 00:00
(8/19): python3-pip-9.0.3-20.el8.noarch.rpm 639 kB/s | 19 kB 00:00
(9/19): python3-jinja2-2.10.1-3.el8.noarch.rpm 1.8 MB/s | 537 kB 00:00
(10/19): python3-pyasn1-0.3.7-6.el8.noarch.rpm 2.0 MB/s | 126 kB 00:00
(11/19): python3-pytz-2017.2-9.el8.noarch.rpm 1.1 MB/s | 54 kB 00:00
(12/19): python36-3.6.8-38.module_el8.5.0+2569+5c5719bc.x86_64.rpm 506 kB/s | 18 kB 00:00
(13/19): libsodium-1.0.18-2.el8.x86_64.rpm 1.6 MB/s | 162 kB 00:00
(14/19): python3-bcrypt-3.1.6-2.el8.1.x86_64.rpm 1.7 MB/s | 44 kB 00:00
(15/19): python3-paramiko-2.4.3-1.el8.noarch.rpm 1.7 MB/s | 289 kB 00:00
(16/19): python3-pynacl-1.3.0-5.el8.x86_64.rpm 1.3 MB/s | 100 kB 00:00
(17/19): sshpass-1.06-9.el8.x86_64.rpm 670 kB/s | 27 kB 00:00
(18/19): python3-babel-2.5.1-7.el8.noarch.rpm 2.8 MB/s | 4.8 MB 00:01
(19/19): ansible-2.9.27-1.el8.noarch.rpm 3.5 MB/s | 17 MB 00:04
---------------------------------------------------------------------------------------------------
Total 3.7 MB/s | 24 MB 00:06
Extra Packages for Enterprise Linux 8 - x86_64 1.6 MB/s | 1.6 kB 00:00
Importing GPG key 0x2F86D6A1:
Userid : "Fedora EPEL (8) <epel@fedoraproject.org>"
Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : python3-setuptools-39.2.0-6.el8.noarch 1/19
Installing : python3-pip-9.0.3-20.el8.noarch 2/19
Installing : python36-3.6.8-38.module_el8.5.0+2569+5c5719bc.x86_64 3/19
Running scriptlet: python36-3.6.8-38.module_el8.5.0+2569+5c5719bc.x86_64 3/19
Installing : sshpass-1.06-9.el8.x86_64 4/19
Installing : libsodium-1.0.18-2.el8.x86_64 5/19
Installing : python3-pytz-2017.2-9.el8.noarch 6/19
Installing : python3-babel-2.5.1-7.el8.noarch 7/19
Installing : python3-pyasn1-0.3.7-6.el8.noarch 8/19
Installing : python3-markupsafe-0.23-19.el8.x86_64 9/19
Installing : python3-jinja2-2.10.1-3.el8.noarch 10/19
Installing : python3-jmespath-0.9.0-11.el8.noarch 11/19
Installing : python3-ply-3.9-9.el8.noarch 12/19
Installing : python3-pycparser-2.14-14.el8.noarch 13/19
Installing : python3-cffi-1.11.5-5.el8.x86_64 14/19
Installing : python3-cryptography-3.2.1-5.el8.x86_64 15/19
Installing : python3-bcrypt-3.1.6-2.el8.1.x86_64 16/19
Installing : python3-pynacl-1.3.0-5.el8.x86_64 17/19
Installing : python3-paramiko-2.4.3-1.el8.noarch 18/19
Installing : ansible-2.9.27-1.el8.noarch 19/19
Running scriptlet: ansible-2.9.27-1.el8.noarch 19/19
Verifying : python3-cffi-1.11.5-5.el8.x86_64 1/19
Verifying : python3-cryptography-3.2.1-5.el8.x86_64 2/19
Verifying : python3-ply-3.9-9.el8.noarch 3/19
Verifying : python3-pycparser-2.14-14.el8.noarch 4/19
Verifying : python3-setuptools-39.2.0-6.el8.noarch 5/19
Verifying : python3-babel-2.5.1-7.el8.noarch 6/19
Verifying : python3-jinja2-2.10.1-3.el8.noarch 7/19
Verifying : python3-jmespath-0.9.0-11.el8.noarch 8/19
Verifying : python3-markupsafe-0.23-19.el8.x86_64 9/19
Verifying : python3-pip-9.0.3-20.el8.noarch 10/19
Verifying : python3-pyasn1-0.3.7-6.el8.noarch 11/19
Verifying : python3-pytz-2017.2-9.el8.noarch 12/19
Verifying : python36-3.6.8-38.module_el8.5.0+2569+5c5719bc.x86_64 13/19
Verifying : ansible-2.9.27-1.el8.noarch 14/19
Verifying : libsodium-1.0.18-2.el8.x86_64 15/19
Verifying : python3-bcrypt-3.1.6-2.el8.1.x86_64 16/19
Verifying : python3-paramiko-2.4.3-1.el8.noarch 17/19
Verifying : python3-pynacl-1.3.0-5.el8.x86_64 18/19
Verifying : sshpass-1.06-9.el8.x86_64 19/19
Installed:
ansible-2.9.27-1.el8.noarch libsodium-1.0.18-2.el8.x86_64
python3-babel-2.5.1-7.el8.noarch python3-bcrypt-3.1.6-2.el8.1.x86_64
python3-cffi-1.11.5-5.el8.x86_64 python3-cryptography-3.2.1-5.el8.x86_64
python3-jinja2-2.10.1-3.el8.noarch python3-jmespath-0.9.0-11.el8.noarch
python3-markupsafe-0.23-19.el8.x86_64 python3-paramiko-2.4.3-1.el8.noarch
python3-pip-9.0.3-20.el8.noarch python3-ply-3.9-9.el8.noarch
python3-pyasn1-0.3.7-6.el8.noarch python3-pycparser-2.14-14.el8.noarch
python3-pynacl-1.3.0-5.el8.x86_64 python3-pytz-2017.2-9.el8.noarch
python3-setuptools-39.2.0-6.el8.noarch python36-3.6.8-38.module_el8.5.0+2569+5c5719bc.x86_64
sshpass-1.06-9.el8.x86_64
Complete!
[root@almalinux devops]# ansible --version
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.6/site-packages/ansible
executable location = /bin/ansible
python version = 3.6.8 (default, Nov 9 2021, 16:02:49) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
[root@almalinux devops]# dnf info ansible
Last metadata expiration check: 0:01:21 ago on Tue 07 Dec 2021 10:17:11 AM UTC.
Installed Packages
Name : ansible
Version : 2.9.27
Release : 1.el8
Architecture : noarch
Size : 96 M
Source : ansible-2.9.27-1.el8.src.rpm
Repository : @System
From repo : epel
Summary : SSH-based configuration management, deployment, and task execution system
URL : http://ansible.com
License : GPLv3+
Description : Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
[root@almalinux devops]#
before execution
# dnf info ansible
Last metadata expiration check: 0:00:19 ago on Tue 07 Dec 2021 10:17:11 AM UTC.
Available Packages
Name : ansible
Version : 2.9.27
Release : 1.el8
Architecture : noarch
Size : 17 M
Source : ansible-2.9.27-1.el8.src.rpm
Repository : epel
Summary : SSH-based configuration management, deployment, and task execution system
URL : http://ansible.com
License : GPLv3+
Description : Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
after execution
# dnf info ansible
Last metadata expiration check: 0:01:21 ago on Tue 07 Dec 2021 10:17:11 AM UTC.
Installed Packages
Name : ansible
Version : 2.9.27
Release : 1.el8
Architecture : noarch
Size : 96 M
Source : ansible-2.9.27-1.el8.src.rpm
Repository : @System
From repo : epel
Summary : SSH-based configuration management, deployment, and task execution system
URL : http://ansible.com
License : GPLv3+
Description : Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
See also: How to install Ansible in CentOS 8 Stream - Ansible install
Conclusion
Now you know how to install the latest version of Ansible in AlmaLinux using the EPEL repository.
Related Articles
• using ansible.builtin.template effectively • role variables and defaults in AnsibleSee also: How to install Ansible in CentOS 8 - Ansible install
Post-Installation Configuration
# Verify Ansible
ansible --version
# Test local connection
ansible localhost -m ansible.builtin.ping
# Create a basic project structure
mkdir -p ~/ansible/{playbooks,inventory,roles,group_vars}
# Create inventory
cat > ~/ansible/inventory/hosts.ini << EOF
[local]
localhost ansible_connection=local
[webservers]
# web01 ansible_host=192.168.1.10 ansible_user=admin
EOF
Install via pip (Latest Version)
EPEL provides a stable but sometimes older version. For the latest:
sudo dnf install -y python3-pip
python3 -m pip install --user ansible
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
AlmaLinux 8 vs AlmaLinux 9
| Feature | AlmaLinux 8 | AlmaLinux 9 | |---|---|---| | Python | 3.6 (default), 3.8/3.9 via module | 3.9 (default) | | Ansible in repos | Via EPEL | Via EPEL + AppStream | | End of life | May 2029 | May 2032 | | Recommended for new installs | No | Yes |
Automate Ansible Installation
---
- name: Install Ansible on AlmaLinux 8
hosts: almalinux8
become: true
tasks:
- name: Install EPEL repository
ansible.builtin.dnf:
name: epel-release
state: present
- name: Install ansible-core
ansible.builtin.dnf:
name: ansible-core
state: present
- name: Install useful dependencies
ansible.builtin.dnf:
name:
- python3-pip
- sshpass
- git
state: present
FAQ
Why use EPEL for Ansible on AlmaLinux 8?
AlmaLinux 8's default AppStream repository doesn't include Ansible. EPEL (Extra Packages for Enterprise Linux) provides community-maintained packages including Ansible.
Is AlmaLinux 8 a good choice for an Ansible control node?
Yes. AlmaLinux 8 is RHEL 8-compatible with support until 2029. For new deployments, consider AlmaLinux 9 for longer support.
Can I manage RHEL hosts from AlmaLinux?
Yes. AlmaLinux is binary-compatible with RHEL. Ansible modules work identically on both.
Category: installation
Watch the video: Install Ansible on AlmaLinux 8 Easily with EPEL — Video Tutorial