Install Ansible Automation Platform on RHEL 9 using RPM

|
Published:
|
|

In this guide, you will learn how to install Ansible Automation Platform on RHEL 9 using RPM packages. Red Hat Ansible Automation Platform (AAP) is an enterprise-grade automation solution that provides a comprehensive framework for implementing automation across your entire IT infrastructure.

Install Ansible Automation Platform on RHEL 9 using RPM

What is Ansible Automation Platform (AAP)?

Ansible Automation Platform (AAP) is Red Hat’s enterprise-ready automation solution designed to help organizations scale, secure, and govern their automation workflows across hybrid and multi-cloud environments. Built around the power of Ansible, AAP provides a comprehensive suite that includes Automation Controller (the direct successor to Ansible Tower), Automation Hub for curated and certified content, customizable Execution Environments for consistent automation runtimes, and Event-Driven Ansible for triggering automation based on real-time events.

How does AAP compare with AWX and Ansible Tower?

While AWX serves as the upstream, open-source community project where new features are developed and tested, AAP takes those innovations, hardens them for enterprise use, adds official support, security patches, lifecycle management, and integrates them into a cohesive, production-grade platform. Similarly, Ansible Tower was the original commercial UI and control plane for Ansible, which has now fully evolved into Automation Controller within AAP.

In short: AWX is the community version, Tower was the first-gen product, and AAP is the modern, full-stack enterprise automation platform that supersedes both, offering scalability, governance, and support for mission-critical operations.

Key Components of Ansible Automation Platform (AAP) 2.5

Red Hat Ansible Automation Platform (AAP) 2.5 is designed as a modular, enterprise-ready suite for scaling automation across IT environments. Each component has a clear role, and together they provide a consistent, secure, and event-driven automation experience.

Here’s a breakdown of the key components:

  • The Platform Gateway: It provides a single entry point into AAP. It handles authentication and authorization, and serves the web user interface (UI) for the entire platform. Instead of logging in separately to different services, users and systems connect to the gateway on one address. This centralization simplifies access, improves security, and makes scaling deployments easier.
  • The Automation Controller (formerly Ansible Tower): It is the central management layer for automation. It provides a web-based UI and REST API, along with job scheduling, execution history, and detailed role-based access controls. Administrators use it to manage inventories, credentials, workflows, and securely delegate automation across teams.
  • The Event-Driven Ansible (EDA) Controller: It enables automation that reacts to real-time events instead of scheduled tasks. By connecting to monitoring tools, security platforms, or IT service systems, the EDA controller listens for events and uses rulebooks to trigger automated responses. This ensures faster, more consistent, and resilient operations.
  • The Automation Hub: It serves as the official repository for trusted Ansible Content Collections. It provides certified and supported content from Red Hat and its partners, ensuring that automation building blocks are secure, reliable, and enterprise-grade.
  • The Private Automation Hub: It allows organizations to host their own internal repository of automation content. Teams can mirror Red Hat’s certified collections, upload their own, and integrate with external sources such as Galaxy. This is especially valuable in disconnected or restricted environments that require strict control over automation content.
  • The High Availability (HA) Automation Hub: It is designed for large-scale or mission-critical environments. Multiple hub nodes run in parallel behind a load balancer, eliminating single points of failure and ensuring the hub service remains resilient and scalable.
  • Ansible Galaxy: It is the public community hub where automation content is shared freely. While not supported by Red Hat, it is often the starting point for building automation projects. Many of the certified collections later available in Automation Hub originate in Galaxy.
  • The Automation Content Navigator (ansible-navigator): It is the command-line and text-based interface for developers and operators. It simplifies building, testing, and debugging automation content locally, and ensures a smooth workflow from development to production.
  • Automation Execution Environments: These are container images that package everything needed to run automation, including Ansible Core, Python, required collections, and dependencies. They replace the older system-Python model and guarantee consistent automation execution across all environments.
  • The Automation Mesh: It is the networking layer that connects AAP components such as controllers, gateways, and execution nodes. The mesh securely distributes workloads across datacenters, regions, or edge sites, while handling latency and rerouting around failures. It enables flexible scaling of execution capacity independently from the control plane.
  • PostgreSQL Database: It is the persistent storage backend for the platform. PostgreSQL stores automation data including job templates, inventories, credentials, and execution history. In production deployments, PostgreSQL is usually external for resilience, performance, and easier scaling.

Understanding AAP Installation Methods and Deployment Topologies

Red Hat Ansible Automation Platform (AAP) 2.5 supports multiple installation methods, each suited to different infrastructure and operational models. Each method supports one or more tested deployment topologies, designed for scalability, performance, and supportability.

⚠️ Red Hat Support Policy
Red Hat does not fully test topologies outside of published reference architectures. Red Hat recommends using a tested topology for all new deployments and provides commercially reasonable support for deployments that meet minimum requirements. Therefore, if you choose to deploy a non-standard architecture (e.g., a single-node installation), you are responsible for validating and testing that setup to ensure it meets your operational requirements.

Red Hat Ansible Automation Platform (AAP) 2.5 can be installed using three different methods, depending on your infrastructure and operational preferences:

  1. RPM Installation
  2. Container-Based Installation
  3. Operator-Based Installation (on OpenShift)

Each installation method supports one or more tested topologies such as Growth and Enterprise designed to ensure proper performance, scalability, and supportability.

1. RPM Installation Method

Installs AAP directly on RHEL using RPM packages on virtual machines or bare metal, giving you full control over the operating system and infrastructure lifecycle.

Supported Topologies:

  • Growth Topology
    • Components are deployed across six virtual machines without redundancy.
    • Suitable for development, testing, and small-scale production.
    • Minimum per-VM requirements: 16 GB RAM, 4 vCPUs, 60–100 GB storage, 3000 IOPS
    • Component layout:
      • VM1: Platform Gateway + Redis
      • VM2: Automation Controller
      • VM3: Private Automation Hub
      • VM4: Event-Driven Ansible Controller
      • VM5: Execution Node
      • VM6: PostgreSQL Database
  • Enterprise Topology
    • Redundant, scalable deployment across 11 or more VMs.
    • Includes 2x Gateways, 2x Controllers, 2x Hubs, 2x EDA Controllers, external PostgreSQL DB, and HAProxy load balancer.
    • Designed for high-availability and large-scale production environments.

2. Container Installation Method

Runs AAP components in containers using Podman on RHEL (on VMs or bare metal), offering portability and simplified deployment while still requiring you to manage the underlying infrastructure.

Supported Topologies:

  • Growth Topology
    • All components run as containers on a single RHEL VM.
    • Useful for labs, proof-of-concept, and testing only.
    • Not supported for production due to lack of redundancy.
  • Enterprise Topology
    • Components are containerized and distributed across multiple VMs.
    • Offers redundancy and better resource scaling.
    • Suitable for production environments.

3. Operator Installation Method

Deploys AAP on Red Hat OpenShift using certified Operators, providing automated lifecycle management in a Kubernetes-native environment.

Supported Topologies:

  • Growth Topology
    • Runs on Single Node OpenShift (SNO).
    • Suitable for evaluation or small-scale use cases.
    • Not recommended for production workloads.
  • Enterprise Topology
    • Deployed on a multi-node OpenShift cluster.
    • Supports external services and full redundancy.
    • Designed for production-grade, scalable automation.

System Requirements

This guide follows Red Hat’s supported Growth Topology for deploying Ansible Automation Platform, where all core components are distributed across six dedicated virtual machines. Each VM hosts a specific AAP component: Platform Gateway, Automation Controller, Execution Node, Private Automation Hub, Event-Driven Ansible Controller, and the Database; to ensure better performance, scalability, and alignment with Red Hat’s reference architecture. This topology is recommended for production environments, as it supports high availability (with further scaling) and allows independent scaling, management, and troubleshooting of each component.

Key Prerequisites

  • Root access via sudo
  • umask set to 0022
  • NTP client configured

Minimum Hardware Requirements

Minimum hardware requirements for each of the 6 virtual machines:

ComponentRAMvCPUDisk IOPSStorage
Platform Gateway16 GB4300060 GB minimum
Control Nodes16 GB4300080 GB minimum
At least 20 GB must be under /var/lib/awx
Execution Nodes16 GB4300060 GB minimum
Automation Hub16 GB4300060 GB minimum
At least 40 GB must be under /var/lib/pulp
Database16 GB43000100 GB minimum Allocated to /var/lib/pgsql
Event-Driven Ansible Controller16 GB4300060 GB minimum

Minimum Software Requirements:

  • OS: Red Hat Enterprise Linux 8.8+ or 9.2+
  • Architecture: x86_64, AArch64, s390x, or ppc64le
  • Database: PostgreSQL 15
  • Ansible-core: Version 2.16+

Network Requirements

Key ports that must be open between components:

Port NumberProtocolServiceSourceDestinationDescription
80/443TCPHTTP/HTTPSEvent-Driven AnsibleAutomation Hub, Automation ControllerHandles HTTP/HTTPS communication from Event-Driven Ansible to Automation Hub and Controller.
80/443TCPHTTP/HTTPSAutomation ControllerAutomation HubHandles HTTP/HTTPS communication from Automation Controller to Automation Hub.
80/443TCPHTTP/HTTPSPlatform GatewayAutomation Controller, Automation Hub, Event-Driven AnsibleHandles HTTP/HTTPS communication from Platform Gateway to other components.
5432TCPPostgreSQLEvent-Driven Ansible, Platform Gateway, Automation Hub, Automation ControllerDatabaseDatabase access for all components to the PostgreSQL database.
6379TCPRedisEvent-Driven Ansible, Platform GatewayRedis NodeRedis communication for Event-Driven Ansible and Platform Gateway.
8443TCPHTTPSPlatform GatewayPlatform GatewayInternal communication within Platform Gateway.
27199TCPReceptorAutomation ControllerExecution NodeReceptor communication for automation execution.

The installer will open the respective ports on the respective nodes on firewalld. Be sure to verify after the installation is done:

sudo firewall-cmd --list-services
sudo firewall-cmd --list-ports

For more details, refer to RPM topologies page.

Repository Requirements

Enable only the following repositories before installing Ansible Automation Platform:

RHEL 9 repositories:

  • rhel-9-for-x86_64-baseos-rpms (BaseOS)
  • rhel-9-for-x86_64-appstream-rpms (AppStream)

AAP RHEL 9 repository:

  • ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms

You will to ensure that all the nodes for deploying AAP components have the repositories enabled.

Read more on system requirements page.

Required Licensing for Ansible Automation Platform

To install and operate Red Hat Ansible Automation Platform (AAP), a valid Red Hat subscription is required. AAP is built on open-source components like Ansible, which is licensed under the GNU General Public License v3, but the full AAP platform itself requires a commercial license for use, support, and updates.

Red Hat offers free trial licenses through the Red Hat Product Trial Center. Trials allow users to evaluate the platform but do not include official support. A valid license is still required, even for trial use.

Preparing RHEL 9 Nodes for AAP Installation

We have deployed 6 RHEL 9.6 vms on our KVM for deploying AAP.

Sample OS release version:

hostnamectl
 Static hostname: gateway.kifarunix.com
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: 3c414936340f4f0da2709fbf25779847
         Boot ID: 904c2bad7d8b4c2495d0789044204d45
  Virtualization: kvm
Operating System: Red Hat Enterprise Linux 9.6 (Plow)     
     CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos
          Kernel: Linux 5.14.0-570.44.1.el9_6.x86_64
    Architecture: x86-64
 Hardware Vendor: QEMU
  Hardware Model: Standard PC _Q35 + ICH9, 2009_
Firmware Version: 1.16.2-debian-1.16.2-1

RAM allocated:

free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       517Mi        14Gi       4.0Mi       237Mi        14Gi
Swap:          2.0Gi          0B       2.0Gi

Disk allocated:

df -hT -P /
Filesystem            Type  Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs    47G  2.9G   45G   7% /

Number of CPU cores:

nproc
4

Confirming drive IOPs:

sudo dnf install fio -y

Check the IOPS:

fio --name=randrw --ioengine=libaio --direct=1 --bs=4k --rw=randrw --rwmixread=70 \
    --size=1G --numjobs=4 --runtime=60 --time_based --group_reporting

Sample truncated output;

fio-3.35
Starting 4 processes
randrw: Laying out IO file (1 file / 1024MiB)
randrw: Laying out IO file (1 file / 1024MiB)
randrw: Laying out IO file (1 file / 1024MiB)
randrw: Laying out IO file (1 file / 1024MiB)
Jobs: 4 (f=0): [f(4)][100.0%][r=229MiB/s,w=99.2MiB/s][r=58.7k,w=25.4k IOPS][eta 00m:00s]
randrw: (groupid=0, jobs=4): err= 0: pid=2767: Tue Sep 16 04:48:00 2025
  read: IOPS=58.7k, BW=229MiB/s (240MB/s)(13.4GiB/60001msec)
 ...
  write: IOPS=25.2k, BW=98.4MiB/s (103MB/s)(5905MiB/60001msec); 0 zone resets
...

Result: read: IOPS=58.7k, write: IOPS=25.2k against required 3k!

Checking Umask Setting

Umask is set to 0022 as required. Confirm by running the command below.

umask

The resulting umask value should be 0022. If it differs, you can update the default system-wide value in /etc/profile, /etc/bashrc, or /etc/login.defs, depending on the shell and login context.

NTP Time synchronization

Also, ensure all the nodes time is synchronized.

chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 192.168.122.110               3   6    17    14  +4889ns[  +11us] +/- 4361us

Ensure external DNS Resolution works

dig goole.com +short

Attaching Red Hat Ansible Automation Platform Subscription

Before installing Red Hat Ansible Automation Platform (AAP), it is mandatory to have a valid subscription attached to all the relevant nodes. This ensures access to subscription-restricted content such as:

  • Repositories required for AAP packages
  • Certified Ansible collections
  • Updates and support (if applicable)

In this guide, we’re using a trial license, but the steps apply to both trial and full subscriptions.

Depending on your environment, there are two primary methods to attach the AAP subscription to your nodes:

  1. Register Directly with Red Hat CDN
  2. Use Red Hat Satellite with Subscription Allocations

Register the Nodes Directly with Red Hat CDN

For standalone systems with direct Internet access, use this method if you’re not using Satellite, or want to attach the subscription directly via the Internet.

Register the system:

sudo subscription-manager register --username=<your_redhat_username>

Find AAP subscription pool ID:

sudo subscription-manager list --available --all

Note that:

  • If your subscription is allocated to the Red Hat CDN, it will appear in this list.
  • If it is allocated to Satellite or another manifest-based allocation (for disconnected installs or Cloud Access), it will not appear here. In that case, use a Satellite activation key or import the manifest instead.

Attach the subscription using the pool ID (Note: If Simple Content Access (SCA) is enabled for your Red Hat organization (which is the default in most cases), you do not need to attach subscriptions manually, you can skip this step):

subscription-manager attach --pool=<pool_id>

Ensure that the AAP repos are enabled:

sudo subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms

And of course the RHEL 9 BaseOS and AppStream repos:

sudo subscription-manager repos --list-enabled
    Available Repositories in /etc/yum.repos.d/redhat.repo
+----------------------------------------------------------+
Repo ID:   rhel-9-for-x86_64-baseos-rpms
Repo Name: Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)
Repo URL:  https://cdn.redhat.com/content/dist/rhel9/$releasever/x86_64/baseos/os
Enabled:   1

Repo ID:   rhel-9-for-x86_64-appstream-rpms
Repo Name: Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)
Repo URL:  https://cdn.redhat.com/content/dist/rhel9/$releasever/x86_64/appstream/os
Enabled:   1

Repo ID:   ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
Repo Name: Red Hat Ansible Automation Platform 2.5 for RHEL 9 x86_64 (RPMs)
Repo URL:  https://cdn.redhat.com/content/dist/layered/rhel9/x86_64/ansible-automation-platform/2.5/os
Enabled:   1

Use Red Hat Satellite with Subscription Allocations

If you’re managing Red Hat Ansible Automation Platform (AAP) through Red Hat Satellite, you need to ensure that the AAP subscription is available via a Subscription Allocation in the Red Hat Customer Portal.

Therefore:

  1. Log into the Red Hat Customer Portal.
  2. Navigate to Subscription Allocations.
  3. Either:
    • Create a new allocation for Satellite (if one doesn’t exist), or
    • Open an existing allocation you already use with Satellite.
  4. Add the AAP subscription to that allocation.
  5. Depending on the scenario:
    • If you created a new allocation:
      • Download the manifest .zip file.
      • Import it into Satellite via Content > Subscriptions > Manage Manifest.
    • If you’re just updating an existing allocation (e.g., by adding the AAP subscription to it):
      • You do not need to re-download or re-import the manifest.
      • Simply go to Subscriptions > Manage Manifest in Satellite and click Refresh.
  6. Enable the relevant AAP repositories in Satellite:
    • For example:
      • ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
  7. You can do this via the Web UI:
    • Content > Red Hat Repositories
    • Filter by “Ansible Automation Platform”
    • Check the appropriate repository and enable it.
  8. Sync the enabled repositories:
    • Web UI: Content > Red Hat Repositories > Sync Status > expand the Red Hat Ansible Automation Platform repos check and > Synchronize Now.
  9. Add the synced repo to a Content View:
    • Edit your existing content view (or create a new one).
    • Include the AAP repository in the view.
    • Publish and promote the content view to relevant lifecycle environments (e.g., Dev, Test, Prod).
  10. Ensure Activation Keys include the AAP subscription and repo access:
    • Go to Content > Activation Keys
    • Edit the Activation Key used for AAP systems.
    • Under Subscriptions, attach the AAP subscription (or use Simple Content Access if enabled).
    • Under Repositories, make sure the relevant AAP repositories are added.

This ensures the new AAP entitlements are visible in Satellite and can be used with Activation Keys or attached manually to registered systems.

Thus, register your AAP node to Satellite using the correct Activation key:

This ensures your system trusts the Satellite server’s SSL certificates. Replace <satellite_fqdn> with the actual FQDN of your Satellite server (e.g., satellite.example.com).

sudo rpm -Uvh http://<satellite_fqdn>/pub/katello-ca-consumer-latest.noarch.rpm

Use the subscription-manager tool to register the system using your Organization and Activation Key.

sudo subscription-manager register \
  --org="YourOrg" \
  --activationkey="aap-activation-key"
  • Replace YourOrg with your Satellite organization name.
  • Replace aap-activation-key with the actual activation key name.

Check that the system is registered and has received its content access.

sudo subscription-manager repos --list-enabled

You should be able to see the required repositories in place; RHEL 9 BaseOS, AppStream and AAP.

For more guides on Red Hat Satellite, check our site.

Installing Ansible Automation Platform on RHEL 9

Step 1: Run RHEL OS Update

Before you can proceed, ensure the OS is already on the latest minor version. Hence:

sudo dnf update -y

Check if OS requires a reboot after update:

sudo dnf install yum-utils -y

The command below checks if a system reboot is required, and if so, automatically reboots the system.

needs-restarting -r || sudo reboot

Step 2: Defining Resolvable FQDNs for AAP Deployment Nodes

You need to define unique fully qualified domain names (FQDNs) for the various AAP services. These FQDNs must resolve to each server’s IP address to ensure proper communication between components. If DNS is not available, this resolution can be achieved by configuring the /etc/hosts file accordingly.

We will define unique FQDNs for each AAP service component listed below (Replace the domain name, kifarunix.com, with your domain name). The services and their hostnames are:

  • automationcontroller: controller.kifarunix.com
  • execution_nodes: exec.kifarunix.com
  • automationhub: hub.kifarunix.com
  • automationedacontroller: eda.kifarunix.com
  • database: db.kifarunix.com
  • gateway: gateway.kifarunix.com

If you want, you can also use your own naming convention. Just be sure to define the correct names on the inventory file.

Here is how we have defined the FQDNs in the /etc/hosts file:

cat /etc/hosts
192.168.233.151 controller.kifarunix.com controller
192.168.233.152 gateway.kifarunix.com gateway
192.168.233.153 hub.kifarunix.com hub
192.168.233.154 exec.kifarunix.com exec
192.168.233.155 eda.kifarunix.com eda
192.168.233.156 db.kifarunix.com db

Step 3: Choose Your Installation Method

Red Hat AAP 2.5 offers three RPM-based installation methods for RHEL 9:

  • RPM Direct installation: In this method, the AAP installer is delivered as a standard RPM package such as dnf/yum, which automatically pulls all dependencies from enabled repositories. Cleanest method for connected production environments.
  • Bundle installer: The bundle installation is designed for disconnected or air-gapped environments. The archive (about 4–6 GB) contains all RPM packages and default execution environment images, so no internet is required once it has been downloaded. Use this method if you cannot access the internet or want to avoid pulling dependencies from external repositories.
  • Online Installer: The online installation is smaller to download (~100–200 MB) but requires reliable connectivity throughout setup. Packages are fetched in real time from Red Hat repositories, making it the better option for connected environments without strict security restrictions.

We will focus on the RPM direct installation method in this guide.

Install AAP RPM Installer

Login to your chosen installer node. We are using controller node in this setup as our installation node.

So, depending on whether you’re subscribed to the Red Hat CDN directly or using a local Satellite server, ensure that the Ansible Automation Platform (AAP) repositories are enabled.

Then run the following command to install the AAP installer package along with its core dependencies on the installation node:

sudo dnf install ansible-automation-platform-installer -y
Updating Subscription Management repositories.
Red Hat Satellite Capsule 6.16 for RHEL 9 x86_64 (RPMs)                                                                                                                        77 kB/s | 4.0 kB     00:00    
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)                                                                                                                      141 kB/s | 4.5 kB     00:00    
Red Hat Ansible Automation Platform 2.5 for RHEL 9 x86_64 (RPMs)                                                                                                              163 kB/s | 4.0 kB     00:00    
Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)                                                                                                                         161 kB/s | 4.1 kB     00:00    
Dependencies resolved.
==============================================================================================================================================================================================================
 Package                                                   Architecture               Version                                Repository                                                                  Size
==============================================================================================================================================================================================================
Installing:
 ansible-automation-platform-installer                     noarch                     2.5-17.el9ap                           ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms                     3.6 M
Installing dependencies:
 ansible-core                                              noarch                     1:2.16.14-2.el9ap                      ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms                     2.5 M
 mpdecimal                                                 x86_64                     2.5.1-3.el9                            rhel-9-for-x86_64-appstream-rpms                                            88 k
 python3.11                                                x86_64                     3.11.11-2.el9_6.2                      rhel-9-for-x86_64-appstream-rpms                                            25 k
 python3.11-cffi                                           x86_64                     1.15.1-5.el9pc                         satellite-capsule-6.16-for-rhel-9-x86_64-rpms                              299 k
 python3.11-cryptography                                   x86_64                     42.0.8-1.el9pc                         satellite-capsule-6.16-for-rhel-9-x86_64-rpms                              1.1 M
 python3.11-jinja2                                         noarch                     3.1.6-1.el9ap                          ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms                     327 k
 python3.11-libs                                           x86_64                     3.11.11-2.el9_6.2                      rhel-9-for-x86_64-appstream-rpms                                            10 M
 python3.11-markupsafe                                     x86_64                     2.1.5-1.el9ap                          ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms                      31 k
 python3.11-packaging                                      noarch                     23.2-1.el9ap                           ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms                     117 k
 python3.11-pip-wheel                                      noarch                     22.3.1-5.el9                           rhel-9-for-x86_64-appstream-rpms                                           1.4 M
 python3.11-pycparser                                      noarch                     2.21-5.el9pc                           satellite-capsule-6.16-for-rhel-9-x86_64-rpms                              249 k
 python3.11-pyyaml                                         x86_64                     6.0-1.el9                              rhel-9-for-x86_64-appstream-rpms                                           229 k
 python3.11-resolvelib                                     noarch                     1.0.1-1.el9ap                          ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms                      39 k
 python3.11-setuptools                                     noarch                     65.5.1-4.el9_6                         rhel-9-for-x86_64-appstream-rpms                                           1.7 M
 python3.11-setuptools-wheel                               noarch                     65.5.1-4.el9_6                         rhel-9-for-x86_64-appstream-rpms                                           712 k
 sshpass                                                   x86_64                     1.09-5.el9ap                           ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms                      27 k

Transaction Summary
==============================================================================================================================================================================================================
Install  17 Packages

Total download size: 23 M
Installed size: 98 M
Downloading Packages:
(1/17): python3.11-pycparser-2.21-5.el9pc.noarch.rpm                                                                                                                          635 kB/s | 249 kB     00:00    
(2/17): python3.11-cryptography-42.0.8-1.el9pc.x86_64.rpm                                                                                                                     2.7 MB/s | 1.1 MB     00:00    
(3/17): python3.11-cffi-1.15.1-5.el9pc.x86_64.rpm                                                                                                                             712 kB/s | 299 kB     00:00    
(4/17): mpdecimal-2.5.1-3.el9.x86_64.rpm                                                                                                                                      251 kB/s |  88 kB     00:00    
(5/17): python3.11-pip-wheel-22.3.1-5.el9.noarch.rpm                                                                                                                          3.9 MB/s | 1.4 MB     00:00    
(6/17): python3.11-setuptools-wheel-65.5.1-4.el9_6.noarch.rpm                                                                                                                 1.8 MB/s | 712 kB     00:00    
(7/17): python3.11-setuptools-65.5.1-4.el9_6.noarch.rpm                                                                                                                       3.7 MB/s | 1.7 MB     00:00    
(8/17): python3.11-3.11.11-2.el9_6.2.x86_64.rpm                                                                                                                                69 kB/s |  25 kB     00:00    
(9/17): python3.11-libs-3.11.11-2.el9_6.2.x86_64.rpm                                                                                                                           20 MB/s |  10 MB     00:00    
(10/17): python3.11-packaging-23.2-1.el9ap.noarch.rpm                                                                                                                         355 kB/s | 117 kB     00:00    
(11/17): python3.11-pyyaml-6.0-1.el9.x86_64.rpm                                                                                                                               122 kB/s | 229 kB     00:01    
(12/17): python3.11-resolvelib-1.0.1-1.el9ap.noarch.rpm                                                                                                                       104 kB/s |  39 kB     00:00    
(13/17): ansible-core-2.16.14-2.el9ap.noarch.rpm                                                                                                                              5.3 MB/s | 2.5 MB     00:00    
(14/17): python3.11-jinja2-3.1.6-1.el9ap.noarch.rpm                                                                                                                           846 kB/s | 327 kB     00:00    
(15/17): python3.11-markupsafe-2.1.5-1.el9ap.x86_64.rpm                                                                                                                        17 kB/s |  31 kB     00:01    
(16/17): sshpass-1.09-5.el9ap.x86_64.rpm                                                                                                                                       19 kB/s |  27 kB     00:01    
(17/17): ansible-automation-platform-installer-2.5-17.el9ap.noarch.rpm                                                                                                        1.6 MB/s | 3.6 MB     00:02    
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                         4.1 MB/s |  23 MB     00:05     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                      1/1 
  Installing       : sshpass-1.09-5.el9ap.x86_64                                                                                                                                                         1/17 
  Installing       : python3.11-setuptools-wheel-65.5.1-4.el9_6.noarch                                                                                                                                   2/17 
  Installing       : python3.11-pip-wheel-22.3.1-5.el9.noarch                                                                                                                                            3/17 
  Installing       : mpdecimal-2.5.1-3.el9.x86_64                                                                                                                                                        4/17 
  Installing       : python3.11-3.11.11-2.el9_6.2.x86_64                                                                                                                                                 5/17 
  Installing       : python3.11-libs-3.11.11-2.el9_6.2.x86_64                                                                                                                                            6/17 
  Installing       : python3.11-pycparser-2.21-5.el9pc.noarch                                                                                                                                            7/17 
  Installing       : python3.11-pyyaml-6.0-1.el9.x86_64                                                                                                                                                  8/17 
  Installing       : python3.11-setuptools-65.5.1-4.el9_6.noarch                                                                                                                                         9/17 
  Installing       : python3.11-cffi-1.15.1-5.el9pc.x86_64                                                                                                                                              10/17 
  Installing       : python3.11-cryptography-42.0.8-1.el9pc.x86_64                                                                                                                                      11/17 
  Installing       : python3.11-markupsafe-2.1.5-1.el9ap.x86_64                                                                                                                                         12/17 
  Installing       : python3.11-jinja2-3.1.6-1.el9ap.noarch                                                                                                                                             13/17 
  Installing       : python3.11-packaging-23.2-1.el9ap.noarch                                                                                                                                           14/17 
  Installing       : python3.11-resolvelib-1.0.1-1.el9ap.noarch                                                                                                                                         15/17 
  Installing       : ansible-core-1:2.16.14-2.el9ap.noarch                                                                                                                                              16/17 
  Installing       : ansible-automation-platform-installer-2.5-17.el9ap.noarch                                                                                                                          17/17 
  Running scriptlet: ansible-automation-platform-installer-2.5-17.el9ap.noarch                                                                                                                          17/17 
  Verifying        : python3.11-cffi-1.15.1-5.el9pc.x86_64                                                                                                                                               1/17 
  Verifying        : python3.11-cryptography-42.0.8-1.el9pc.x86_64                                                                                                                                       2/17 
  Verifying        : python3.11-pycparser-2.21-5.el9pc.noarch                                                                                                                                            3/17 
  Verifying        : python3.11-pyyaml-6.0-1.el9.x86_64                                                                                                                                                  4/17 
  Verifying        : mpdecimal-2.5.1-3.el9.x86_64                                                                                                                                                        5/17 
  Verifying        : python3.11-pip-wheel-22.3.1-5.el9.noarch                                                                                                                                            6/17 
  Verifying        : python3.11-setuptools-65.5.1-4.el9_6.noarch                                                                                                                                         7/17 
  Verifying        : python3.11-setuptools-wheel-65.5.1-4.el9_6.noarch                                                                                                                                   8/17 
  Verifying        : python3.11-3.11.11-2.el9_6.2.x86_64                                                                                                                                                 9/17 
  Verifying        : python3.11-libs-3.11.11-2.el9_6.2.x86_64                                                                                                                                           10/17 
  Verifying        : python3.11-markupsafe-2.1.5-1.el9ap.x86_64                                                                                                                                         11/17 
  Verifying        : python3.11-packaging-23.2-1.el9ap.noarch                                                                                                                                           12/17 
  Verifying        : python3.11-resolvelib-1.0.1-1.el9ap.noarch                                                                                                                                         13/17 
  Verifying        : sshpass-1.09-5.el9ap.x86_64                                                                                                                                                        14/17 
  Verifying        : ansible-core-1:2.16.14-2.el9ap.noarch                                                                                                                                              15/17 
  Verifying        : python3.11-jinja2-3.1.6-1.el9ap.noarch                                                                                                                                             16/17 
  Verifying        : ansible-automation-platform-installer-2.5-17.el9ap.noarch                                                                                                                          17/17 
Installed products updated.

Installed:
  ansible-automation-platform-installer-2.5-17.el9ap.noarch  ansible-core-1:2.16.14-2.el9ap.noarch          mpdecimal-2.5.1-3.el9.x86_64                 python3.11-3.11.11-2.el9_6.2.x86_64               
  python3.11-cffi-1.15.1-5.el9pc.x86_64                      python3.11-cryptography-42.0.8-1.el9pc.x86_64  python3.11-jinja2-3.1.6-1.el9ap.noarch       python3.11-libs-3.11.11-2.el9_6.2.x86_64          
  python3.11-markupsafe-2.1.5-1.el9ap.x86_64                 python3.11-packaging-23.2-1.el9ap.noarch       python3.11-pip-wheel-22.3.1-5.el9.noarch     python3.11-pycparser-2.21-5.el9pc.noarch          
  python3.11-pyyaml-6.0-1.el9.x86_64                         python3.11-resolvelib-1.0.1-1.el9ap.noarch     python3.11-setuptools-65.5.1-4.el9_6.noarch  python3.11-setuptools-wheel-65.5.1-4.el9_6.noarch 
  sshpass-1.09-5.el9ap.x86_64                               

Complete!

This package installs the Ansible Automation Platform installer under the following directory:

/opt/ansible-automation-platform/installer/

The directory includes important components such as:

  • collections/
  • inventory/
  • inventory-growth/
  • README.md
  • setup.sh

Step 4: Create and Secure Credentials Using Ansible Vault

When deploying Ansible Automation Platform (AAP), you’ll need to authenticate to remote nodes as well as access Red Hat’s container registry. The required credentials include:

  • ansible_user: SSH username used to connect to managed nodes
  • ansible_password: SSH password for that user (if not using key-based authentication)

It is strongly recommended not to store these values in plain text. Instead, use Ansible Vault to encrypt and securely manage them.

Thus:

  1. Create a file to store the credentials. For example:
    vim vault.yml
    You can then paste the contents below and update them accordingly.
    ansible_user: your-ssh-username
    ansible_password: your-ssh-password
    You can also include sensitive variables required by the AAP components themselves as defined in the inventory file. These are used for setting admin passwords and connecting to internal databases:
    • automationgateway_admin_password
    • automationgateway_pg_password
    • admin_password
    • pg_password
    • automationhub_admin_password
    • automationhub_pg_password
    • automationedacontroller_admin_password
    • automationedacontroller_pg_password
  1. Encrypt the file using Ansible Vault (You will be prompted for a password to secure the vault):
    ansible-vault encrypt vault.yml
  1. When running the installation setup, provide the vault password:
    ./setup.sh -- -e @vault.yml --ask-vault-pass
    If you want, you can put the vault password in a file and reference the password file using the --vault-password-file option.

Once you have the credentials on the vault, instead of hardcoding the values in the inventory file, you can reference them as variables:

[all:vars]
ansible_user={{ ansible_user }}
ansible_password={{ ansible_password }}

This ensures your credentials are protected and the setup remains compliant with security best practices.

In addition to securely storing credentials using Ansible Vault, you may also need to configure how Ansible connects to managed nodes and performs privilege escalation especially when using a non-root user with sudo rights.

You can define the following Ansible variables in your inventory file:

ansible_become=True
ansible_become_method=sudo
ansible_become_password={{ ansible_become_password }} # defined in the vault already

These settings ensure that the non-root user can escalate privileges using sudo when running tasks on remote nodes.

Also, if this is your first time connecting to remote nodes from the installation node, and you haven’t accepted their SSH keys before, you can temporarily disable host key checking to avoid interactive prompts. To do this, edit the default Ansible configuration file used by the AAP installer:

vim /etc/ansible/ansible.cfg

And add or modify the following under the [defaults] section:

[defaults]
host_key_checking = False

Disabling host key checking should only be used in trusted environments, such as initial setup or lab testing. Re-enable it for production deployments to avoid potential MITM risks.

Step 5: Edit the Inventory File

The inventory file is a configuration file that tells the AAP installer:

  • Which AAP components to install (Controller, Hub, Database, etc.)
  • Where to deploy each component (which servers/hosts)
  • How to configure each component (database settings, passwords, network settings)

The AAP installer provides two inventory file templates, each tailored to a specific deployment scenario:

  • inventory:
    • Used for enterprise, high-availability deployments.
    • Includes redundant nodes for each AAP component.
    • Suitable for production environments needing fault tolerance and load balancing.
  • inventory-growth:
    • Used for non-redundant setups with one instance per component.
    • Good for testing, development, or smaller environments.
    • Easier to manage and more resource-efficient.

For this guide: Since we are just running a small AAP setup, we’ll update the inventory-growth template and configure all AAP components to run on the respective server nodes. This simplifies testing and evaluation but is not recommended for enterprise production due to lack of high availability and resource contention.

Hence, before you can proceed, navigate into the installer directory and backup the original inventory:

sudo su -
cd /opt/ansible-automation-platform/installer
cp inventory-growth{,.bak}

Next, let’s update the inventory files. Since we are deploying Red Hat Ansible Automation Platform (AAP) in a 6-node setup, let’s begin by:

  • Replacing all .example.org hostnames with a reachable/valid FQDN with no - or _ characters. See our hostnames definition in step 2 above.
  • Updating connections username and password.

Hence, run the command below. Replace the domain name of your AAP components accordingly.

sed -i 's/example.org/kifarunix.com/g' inventory-growth

Sample customized inventory files:

cat inventory-growth
# This is the AAP installer inventory file intended for the RPM growth deployment topology.
# Please consult the Ansible Automation Platform product documentation about this topology's tested hardware configuration.
# https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/tested_deployment_models/rpm-topologies
#
# Please consult the docs if you're unsure what to add
# For all optional variables please consult the Ansible Automation Platform documentation:
# https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/rpm_installation

# This section is for your AAP Gateway host(s)
# -----------------------------------------------------
[automationgateway]
gateway.kifarunix.com

# This section is for your AAP Controller host(s)
# -----------------------------------------------------
[automationcontroller]
controller.kifarunix.com

[automationcontroller:vars]
peers=execution_nodes

# This section is for your AAP Execution host(s)
# -----------------------------------------------------
[execution_nodes]
exec.kifarunix.com

# This section is for your AAP Automation Hub host(s)
# -----------------------------------------------------
[automationhub]
hub.kifarunix.com

# This section is for your AAP EDA Controller host(s)
# -----------------------------------------------------
[automationedacontroller]
eda.kifarunix.com

# This section is for the AAP database
# -----------------------------------------------------
[database]
db.kifarunix.com

[all:vars]
ansible_user={{ ansible_user }}
ansible_password={{ ansible_password }}
ansible_become=True
ansible_become_method=sudo
ansible_become_password={{ ansible_become_password }}
# Common variables
# https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/rpm_installation/appendix-inventory-files-vars#ref-general-inventory-variables
# -----------------------------------------------------
registry_username=
registry_password=

redis_mode='standalone'

# AAP Gateway
# https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/rpm_installation/appendix-inventory-files-vars#ref-gateway-variables
# -----------------------------------------------------
automationgateway_admin_password={{ automationgateway_admin_password }}
automationgateway_pg_host=db.kifarunix.com
automationgateway_pg_password={{ automationgateway_pg_password }}

# AAP Controller
# https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/rpm_installation/appendix-inventory-files-vars#ref-controller-variables
# -----------------------------------------------------
admin_password={{ admin_password }}
pg_host=db.kifarunix.com
pg_password={{ pg_password }}

# AAP Automation Hub
# https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/rpm_installation/appendix-inventory-files-vars#ref-hub-variables
# -----------------------------------------------------
automationhub_admin_password={{ automationhub_admin_password }}
automationhub_pg_host=db.kifarunix.com
automationhub_pg_password={{ automationhub_pg_password }}

# AAP EDA Controller
# https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/rpm_installation/appendix-inventory-files-vars#event-driven-ansible-controller
# -----------------------------------------------------
automationedacontroller_admin_password={{ automationedacontroller_admin_password }}
automationedacontroller_pg_host=db.kifarunix.com
automationedacontroller_pg_password={{ automationedacontroller_pg_password }}

Step 6: Running AAP Installer Setup Script

Once you are done editing the inventory file, run the setup script to begin the installation.

  • If you did not use Ansible Vault to store credentials, simply run:
    ./setup.sh -i inventory-growth
  • If you used Ansible Vault to encrypt sensitive variables (e.g., passwords, SSH credentials), run:
    ./setup.sh -i inventory-growth -- -e @vault.yml --ask-vault-pass

This will prompt you for the vault password and apply the encrypted variables during installation.

If all goes well, your AAP should be installed in a short while. Sample setup logs:

...
TASK [ansible.automation_platform_installer.misc : Unregister from Insights] ***
skipping: [gateway.kifarunix.com] => {"changed": false, "false_condition": "not enable_insights_collection | bool", "skip_reason": "Conditional result was False"}
skipping: [controller.kifarunix.com] => {"changed": false, "false_condition": "not enable_insights_collection | bool", "skip_reason": "Conditional result was False"}
skipping: [hub.kifarunix.com] => {"changed": false, "false_condition": "not enable_insights_collection | bool", "skip_reason": "Conditional result was False"}
skipping: [eda.kifarunix.com] => {"changed": false, "false_condition": "not enable_insights_collection | bool", "skip_reason": "Conditional result was False"}
skipping: [db.kifarunix.com] => {"changed": false, "false_condition": "not enable_insights_collection | bool", "skip_reason": "Conditional result was False"}
skipping: [exec.kifarunix.com] => {"changed": false, "false_condition": "not enable_insights_collection | bool", "skip_reason": "Conditional result was False"}

PLAY [Install PCP and configure pmproxy] ***************************************

TASK [include_role : monitoring] ***********************************************
skipping: [gateway.kifarunix.com] => {"changed": false, "false_condition": "setup_monitoring | default(false) | bool", "skip_reason": "Conditional result was False"}
skipping: [controller.kifarunix.com] => {"changed": false, "false_condition": "setup_monitoring | default(false) | bool", "skip_reason": "Conditional result was False"}
skipping: [hub.kifarunix.com] => {"changed": false, "false_condition": "setup_monitoring | default(false) | bool", "skip_reason": "Conditional result was False"}
skipping: [eda.kifarunix.com] => {"changed": false, "false_condition": "setup_monitoring | default(false) | bool", "skip_reason": "Conditional result was False"}
skipping: [db.kifarunix.com] => {"changed": false, "false_condition": "setup_monitoring | default(false) | bool", "skip_reason": "Conditional result was False"}

PLAY [Post-install cleanup] ****************************************************

TASK [Remove stale packages] ***************************************************
ok: [controller.kifarunix.com] => {"changed": false, "msg": "Nothing to do", "rc": 0, "results": []}
ok: [db.kifarunix.com] => {"changed": false, "msg": "Nothing to do", "rc": 0, "results": []}
ok: [eda.kifarunix.com] => {"changed": false, "msg": "Nothing to do", "rc": 0, "results": []}
ok: [gateway.kifarunix.com] => {"changed": false, "msg": "Nothing to do", "rc": 0, "results": []}
changed: [hub.kifarunix.com] => {"changed": true, "msg": "", "rc": 0, "results": ["Removed: grub2-tools-efi-1:2.06-104.el9_6.x86_64", "Removed: grub2-tools-extra-1:2.06-104.el9_6.x86_64"]}
ok: [exec.kifarunix.com] => {"changed": false, "msg": "Nothing to do", "rc": 0, "results": []}

PLAY RECAP *********************************************************************
controller.kifarunix.com   : ok=345  changed=115  unreachable=0    failed=0    skipped=224  rescued=0    ignored=5   
db.kifarunix.com           : ok=92   changed=24   unreachable=0    failed=0    skipped=74   rescued=0    ignored=0   
eda.kifarunix.com          : ok=216  changed=55   unreachable=0    failed=0    skipped=182  rescued=0    ignored=0   
exec.kifarunix.com         : ok=117  changed=33   unreachable=0    failed=0    skipped=103  rescued=0    ignored=1   
gateway.kifarunix.com      : ok=210  changed=44   unreachable=0    failed=0    skipped=220  rescued=0    ignored=2   
hub.kifarunix.com          : ok=248  changed=42   unreachable=0    failed=0    skipped=206  rescued=0    ignored=0   
localhost                  : ok=0    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   

The setup process completed successfully.
Setup log saved to /var/log/tower/setup-2025-09-21-14:01:16.log.

Bottom line: The setup process completed successfully.

Systemd Services Created by the RPM-Based Installer

When deploying Red Hat Ansible Automation Platform using the RPM-based installer, several systemd services are automatically created and enabled to manage the core components of the platform. These services ensure that essential components such as the automation controller, automation hub, and event-driven Ansible are started at boot and managed consistently across the system. Each service corresponds to a key part of the platform and allows administrators to control them using standard systemctl commands (e.g., start, stop, enable, restart, and status).

Platform Gateway services:

  • automation-gateway-proxy.service: Main gateway proxy service
  • nginx.service: Web server for gateway UI/reverse proxy
  • redis.service: Redis for session management and caching
  • supervisord.service: Process supervisor

Automation Controller systemd services:

  • automation-controller.service: Main automation controller service
  • nginx.service: Web server for controller UI/API
  • receptor.service: Mesh networking and job execution
  • supervisord.service: Process supervisor managing AWX processes

Event-Drive Ansible Services:

  • automation-eda-controller.service: Main EDA controller service
  • automation-eda-controller-daphne.service: ASGI/WebSocket server
  • automation-eda-controller-scheduler.service: Event scheduling service
  • automation-eda-controller-event-stream.service: Event stream processing
  • nginx.service: Web server for EDA UI/API
  • automation-eda-controller-default-worker: Handle general background tasks
  • automation-eda-controller-activation-worker: Handle rulebook activations and event processing

Automation Hub services:

  • pulpcore.service: Main Pulp core service
  • pulpcore-api.service: Pulp REST API service
  • pulpcore-content.service: Content delivery service
  • redis.service: Redis for caching and task queuing
  • nginx.service: Web server for Hub UI/API
  • pulpcore-worker: Content processing worker

Execution Nodes:

  • receptor.service: Mesh networking and job execution

Database Server:

  • postgresql.service: Main PostgreSQL database service

Activating Red Hat Ansible Automation Platform

After installing Red Hat Ansible Automation Platform (AAP) 2.5, administrators and users primarily interact with it through the web-based user interface (UI).

Before accessing the full platform features, you must first activate your AAP subscription by logging in to the Platform Gateway at:

https://gateway.<domain>.com

The Gateway acts as the central entry point, giving you unified access to Automation Controller, Automation Hub, and Event-Driven Ansible (EDA).

Sample web user login interface:

Install Ansible Automation Platform on RHEL 9 using RPM

By default, the login credentials for the AAP Web UI come from what you define in your Ansible inventory file during installation.

The default username is admin, and the password is the value you set for the admin_password variable in your inventory file during installation.

When you login, you land on the AAP activation page.

There are different methods you can use to activate AAP:

Option 1: Activate Using Credentials

Use this method if you’re an Organization Administrator (recommended) with a Red Hat Registry Service Account (Client ID and Secret). You can see how to create a service account on Red Hat documentation page.

If you’re a non-admin, you can use your Red Hat Customer Portal username and password instead.

If your AAP is connected to Red Hat Satellite, use your Satellite username and password.

Once you have that information;

  1. Go back to AAP web UI (https://<gateway.domain.com>).
  2. On the subscription activation page, select Service Account/Red Hat Satellite as the activation method.
  3. Enter your Client ID and Secret, or Satellite credentials. We use Satellite admin credentials in this setup.
  4. Select the appropriate subscription from the list.
    Install Ansible Automation Platform on RHEL 9 using RPM
  5. Go to the Next page and accept the End User License Agreement (EULA).
  6. Click Finish to activate the AAP.

Verification:

  • If successful, you’ll see your subscription listed with status: Compliant.
  • If you exceed your entitled node count, the status will show Out of Compliance.

Option 2: Activate AAP with a Manifest File

You can activate Red Hat Ansible Automation Platform (AAP) using a subscription manifest file obtained from the Red Hat Customer Portal.

Once you have the manifest file;

  • Log in to the Red Hat Ansible Automation Platform interface.
  • If you are not prompted for a manifest file immediately, navigate to Settings > Subscription.
  • Select Subscription manifest.
  • Click Browse and locate your subscription manifest file.
  • Review and accept the End User License Agreement.
  • Click Finish to activate the AAP.

After the activation, you will be redirected to the overview page.

ansible aap overview page activated

From the left menu panel, you can access services like the Ansible controller, EDA, the Hub, analytics, and other functionalities/settings.

You can easily get started with Ansible Automation Platform by using the built-in QuickStarts: short, interactive guides for common tasks.

ansible aap 2.5 quick start menu

Next Steps After Installation

Now that you’ve successfully installed Red Hat Ansible Automation Platform, you’re ready to start using its key features. Here are some recommended guides to help you get started:

Conclusion

That marks the end of our guide on how to install Ansible Automation Platform on RHEL 9 using RPM based installer on a 6-node architecture. This setup provides a robust and scalable foundation that includes:

  • Automation Controller
  • Automation Hub
  • Event-Driven Ansible (EDA) Controller
  • Platform Gateway
  • Execution Node
  • Centralized Database

This multi-node deployment ensures separation of concerns, better performance, and easier scaling for enterprise automation workloads.

With the platform now installed and services running, you’re ready to begin building, managing, and scaling your automation strategies using Ansible’s powerful capabilities.

For more details on using the platform, see the official Red Hat documentation

SUPPORT US VIA A VIRTUAL CUP OF COFFEE

We're passionate about sharing our knowledge and experiences with you through our blog. If you appreciate our efforts, consider buying us a virtual coffee. Your support keeps us motivated and enables us to continually improve, ensuring that we can provide you with the best content possible. Thank you for being a coffee-fueled champion of our work!

Photo of author
Kifarunix
DevOps Engineer and Linux Specialist with deep expertise in RHEL, Debian, SUSE, Ubuntu, FreeBSD... Passionate about open-source technologies, I specialize in Kubernetes, Docker, OpenShift, Ansible automation, and Red Hat Satellite. With extensive experience in Linux system administration, infrastructure optimization, information security, and automation, I design and deploy secure, scalable solutions for complex environments. Leveraging tools like Terraform and CI/CD pipelines, I ensure seamless integration and delivery while enhancing operational efficiency across Linux-based infrastructures.

Leave a Comment