Chapter 3. Container topologies The containerized installer deploys Ansible Automation Platform on Red Hat Enterprise Linux by using Podman which runs the platform in containers on host machines. Customers manage the product and infrastructure lifecycle. 3.1. Container growth topology The growth topology is intended for organizations that are getting started with Ansible Automation Platform and do not require redundancy or higher compute for large volumes of automation. This topology allows for smaller footprint deployments. 3.1.1. Infrastructure topology The following diagram outlines the infrastructure topology that Red Hat has tested with this deployment model that customers can use when self-managing Ansible Automation Platform: Figure 3.1. Infrastructure topology diagram A single VM has been tested with the following component requirements: Table 3.1. Virtual machine requirements Requirement Minimum requirement RAM 16 GB CPUs 4 Local disk 60 GB Disk IOPS 3000 Resources, such as storage, can be increased based on the needs of the deployment. Note If performing a bundled installation of the growth topology with hub_seed_collections=true , then 32 GB RAM is recommended. Note that with this configuration the install time is going to increase and can take 45 or more minutes alone to complete seeding the collections. Table 3.2. Infrastructure topology Purpose Example group names All Ansible Automation Platform components automationgateway automationcontroller automationhub automationeda database 3.1.2. Tested system configurations Red Hat has tested the following configurations to install and run Red Hat Ansible Automation Platform: Table 3.3. Tested system configurations Type Description Subscription Valid Red Hat Ansible Automation Platform subscription Valid Red Hat Enterprise Linux subscription (to consume the BaseOS and AppStream repositories) Operating system Red Hat Enterprise Linux 9.2 or later minor versions of Red Hat Enterprise Linux 9 CPU architecture x86_64, AArch64, s390x (IBM Z), ppc64le (IBM Power) Ansible-core Ansible-core version 2.16 or later Browser A currently supported version of Mozilla Firefox or Google Chrome. Database PostgreSQL 15 3.1.3. Network ports Red Hat Ansible Automation Platform uses several ports to communicate with its services. These ports must be open and available for incoming connections to the Red Hat Ansible Automation Platform server for it to work. Ensure that these ports are available and are not blocked by the server firewall. Table 3.4. Network ports and protocols Port number Protocol Service Source Destination 80/443 TCP HTTP/HTTPS Event-Driven Ansible Automation hub 80/443 TCP HTTP/HTTPS Event-Driven Ansible Automation controller 80/443 TCP HTTP/HTTPS Automation controller Automation hub 80/443 TCP HTTP/HTTPS Platform gateway Automation controller 80/443 TCP HTTP/HTTPS Platform gateway Automation hub 80/443 TCP HTTP/HTTPS Platform gateway Event-Driven Ansible 5432 TCP PostgreSQL Event-Driven Ansible External database 5432 TCP PostgreSQL Platform gateway External database 5432 TCP PostgreSQL Automation hub External database 5432 TCP PostgreSQL Automation controller External database 6379 TCP Redis Event-Driven Ansible Redis container 6379 TCP Redis Platform gateway Redis container 8443 TCP HTTPS Platform gateway Platform gateway 27199 TCP Receptor Automation controller Execution container 3.1.4. Example inventory file Use the example inventory file to perform an installation for this topology: # This is the Ansible Automation Platform installer inventory file intended for the container growth deployment topology. # This inventory file expects to be run from the host where Ansible Automation Platform will be installed. # 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/container-topologies # # Consult the docs if you are unsure what to add # For all optional variables consult the included README.md # or the Ansible Automation Platform documentation: # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation # This section is for your platform gateway hosts # ----------------------------------------------------- [automationgateway] aap.example.org # This section is for your automation controller hosts # ------------------------------------------------- [automationcontroller] aap.example.org # This section is for your automation hub hosts # ----------------------------------------------------- [automationhub] aap.example.org # This section is for your Event-Driven Ansible controller hosts # ----------------------------------------------------- [automationeda] aap.example.org # This section is for the Ansible Automation Platform database # -------------------------------------- [database] aap.example.org [all:vars] # Ansible ansible_connection=local # Common variables # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-general-inventory-variables # ----------------------------------------------------- postgresql_admin_username=postgres postgresql_admin_password=<set your own> registry_username=<your RHN username> registry_password=<your RHN password> redis_mode=standalone # Platform gateway # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-gateway-variables # ----------------------------------------------------- gateway_admin_password=<set your own> gateway_pg_host=aap.example.org gateway_pg_password=<set your own> # Automation controller # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-controller-variables # ----------------------------------------------------- controller_admin_password=<set your own> controller_pg_host=aap.example.org controller_pg_password=<set your own> # Automation hub # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-hub-variables # ----------------------------------------------------- hub_admin_password=<set your own> hub_pg_host=aap.example.org hub_pg_password=<set your own> hub_seed_collections=false # Event-Driven Ansible controller # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#event-driven-ansible-controller # ----------------------------------------------------- eda_admin_password=<set your own> eda_pg_host=aap.example.org eda_pg_password=<set your own> SSH keys are only required when installing on remote hosts. If doing a self contained local VM based installation, you can use ansible_connection=local . 3.2. Container enterprise topology The enterprise topology is intended for organizations that require Ansible Automation Platform to be deployed with redundancy or higher compute for large volumes of automation. 3.2.1. Infrastructure topology The following diagram outlines the infrastructure topology that Red Hat has tested with this deployment model that customers can use when self-managing Ansible Automation Platform: Figure 3.2. Infrastructure topology diagram Each VM has been tested with the following component requirements: Table 3.5. Virtual machine requirements Requirement Minimum requirement RAM 16 GB CPUs 4 Local disk 60 GB Disk IOPS 3000 Table 3.6. Infrastructure topology VM count Purpose Example VM group names 2 Platform gateway with colocated Redis automationgateway 2 Automation controller automationcontroller 2 Private automation hub with colocated Redis automationhub 2 Event-Driven Ansible with colocated Redis automationeda 1 Automation mesh hop node execution_nodes 2 Automation mesh execution node execution_nodes 1 Externally managed database service N/A 1 HAProxy load balancer in front of platform gateway (externally managed) N/A Note 6 VMs are required for a Redis high availability (HA) compatible deployment. When installing Ansible Automation Platform with the containerized installer, Redis can be colocated on any Ansible Automation Platform component VMs of your choice except for execution nodes or the PostgreSQL database. They might also be assigned VMs specifically for Redis use. 3.2.2. Tested system configurations Red Hat has tested the following configurations to install and run Red Hat Ansible Automation Platform: Table 3.7. Tested system configurations Type Description Subscription Valid Red Hat Ansible Automation Platform subscription Valid Red Hat Enterprise Linux subscription (to consume the BaseOS and AppStream repositories) Operating system Red Hat Enterprise Linux 9.2 or later minor versions of Red Hat Enterprise Linux 9 CPU architecture x86_64, AArch64, s390x (IBM Z), ppc64le (IBM Power) Ansible-core Ansible-core version 2.16 or later Browser A currently supported version of Mozilla Firefox or Google Chrome. Database PostgreSQL 15 3.2.3. Network ports Red Hat Ansible Automation Platform uses several ports to communicate with its services. These ports must be open and available for incoming connections to the Red Hat Ansible Automation Platform server for it to work. Ensure that these ports are available and are not blocked by the server firewall. Table 3.8. Network ports and protocols Port number Protocol Service Source Destination 80/443 TCP HTTP/HTTPS Event-Driven Ansible Automation hub 80/443 TCP HTTP/HTTPS Event-Driven Ansible Automation controller 80/443 TCP HTTP/HTTPS Automation controller Automation hub 80/443 TCP HTTP/HTTPS HAProxy load balancer Platform gateway 80/443 TCP HTTP/HTTPS Platform gateway Automation controller 80/443 TCP HTTP/HTTPS Platform gateway Automation hub 80/443 TCP HTTP/HTTPS Platform gateway Event-Driven Ansible 5432 TCP PostgreSQL Event-Driven Ansible External database 5432 TCP PostgreSQL Platform gateway External database 5432 TCP PostgreSQL Automation hub External database 5432 TCP PostgreSQL Automation controller External database 6379 TCP Redis Event-Driven Ansible Redis node 6379 TCP Redis Platform gateway Redis node 8443 TCP HTTPS Platform gateway Platform gateway 16379 TCP Redis Redis node Redis node 27199 TCP Receptor Automation controller Hop node and execution node 27199 TCP Receptor Hop node Execution node 3.2.4. Example inventory file Use the example inventory file to perform an installation for this topology: # This is the Ansible Automation Platform enterprise installer inventory file # Consult the docs if you are unsure what to add # For all optional variables consult the included README.md # or the Red Hat documentation: # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation # This section is for your platform gateway hosts # ----------------------------------------------------- [automationgateway] gateway1.example.org gateway2.example.org # This section is for your automation controller hosts # ----------------------------------------------------- [automationcontroller] controller1.example.org controller2.example.org # This section is for your Ansible Automation Platform execution hosts # ----------------------------------------------------- [execution_nodes] hop1.example.org receptor_type='hop' exec1.example.org exec2.example.org # This section is for your automation hub hosts # ----------------------------------------------------- [automationhub] hub1.example.org hub2.example.org # This section is for your Event-Driven Ansible controller hosts # ----------------------------------------------------- [automationeda] eda1.example.org eda2.example.org [redis] gateway1.example.org gateway2.example.org hub1.example.org hub2.example.org eda1.example.org eda2.example.org [all:vars] # Common variables # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-general-inventory-variables # ----------------------------------------------------- postgresql_admin_username=<set your own> postgresql_admin_password=<set your own> registry_username=<your RHN username> registry_password=<your RHN password> # Platform gateway # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-gateway-variables # ----------------------------------------------------- gateway_admin_password=<set your own> gateway_pg_host=externaldb.example.org gateway_pg_database=<set your own> gateway_pg_username=<set your own> gateway_pg_password=<set your own> # Automation controller # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-controller-variables # ----------------------------------------------------- controller_admin_password=<set your own> controller_pg_host=externaldb.example.org controller_pg_database=<set your own> controller_pg_username=<set your own> controller_pg_password=<set your own> # Automation hub # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-hub-variables # ----------------------------------------------------- hub_admin_password=<set your own> hub_pg_host=externaldb.example.org hub_pg_database=<set your own> hub_pg_username=<set your own> hub_pg_password=<set your own> # Event-Driven Ansible controller # https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#event-driven-ansible-controller # ----------------------------------------------------- eda_admin_password=<set your own> eda_pg_host=externaldb.example.org eda_pg_database=<set your own> eda_pg_username=<set your own> eda_pg_password=<set your own> 3.2.5. Storage requirements Execution environments are pulled into automation controller hybrid nodes and execution nodes that run jobs. The size of these containers influences the storage requirements for USDPATH_WHERE_PODMAN_PUTS_CONTAINER_IMAGES . The primary determining factors for the size of the database and its storage volume, which defaults to USDPOSTGRES_DEFAULT_DATA_DIR , are: The quantity of job events (lines of output from automation controller jobs) The quantity of days of job data that are retained On execution nodes and automation controller control and hybrid nodes, job output is buffered to the disk in USDNAME_OF_RECEPTOR_DIR_VAR , which defaults to /tmp . The size and quantity of collections synced to automation hub influence the storage requirements of USDPATH_WHERE_PULP_STORES_COLLECTIONS .

Commands:
This is the Ansible Automation Platform installer inventory file intended for the container growth deployment topology. This inventory file expects to be run from the host where Ansible Automation Platform will be installed. 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/container-topologies # Consult the docs if you are unsure what to add For all optional variables consult the included README.md or the Ansible Automation Platform documentation: https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation This section is for your platform gateway hosts ----------------------------------------------------- [automationgateway] aap.example.org This section is for your automation controller hosts ------------------------------------------------- [automationcontroller] aap.example.org This section is for your automation hub hosts ----------------------------------------------------- [automationhub] aap.example.org This section is for your Event-Driven Ansible controller hosts ----------------------------------------------------- [automationeda] aap.example.org This section is for the Ansible Automation Platform database -------------------------------------- [database] aap.example.org Ansible ansible_connection=local Common variables https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-general-inventory-variables ----------------------------------------------------- postgresql_admin_username=postgres postgresql_admin_password=<set your own> registry_username=<your RHN username> registry_password=<your RHN password> redis_mode=standalone Platform gateway https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-gateway-variables ----------------------------------------------------- gateway_admin_password=<set your own> gateway_pg_host=aap.example.org gateway_pg_password=<set your own> Automation controller https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-controller-variables ----------------------------------------------------- controller_admin_password=<set your own> controller_pg_host=aap.example.org controller_pg_password=<set your own> Automation hub https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-hub-variables ----------------------------------------------------- hub_admin_password=<set your own> hub_pg_host=aap.example.org hub_pg_password=<set your own> hub_seed_collections=false Event-Driven Ansible controller https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#event-driven-ansible-controller ----------------------------------------------------- eda_admin_password=<set your own> eda_pg_host=aap.example.org eda_pg_password=<set your own>
This is the Ansible Automation Platform enterprise installer inventory file Consult the docs if you are unsure what to add For all optional variables consult the included README.md or the Red Hat documentation: https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation This section is for your platform gateway hosts ----------------------------------------------------- [automationgateway] gateway1.example.org gateway2.example.org This section is for your automation controller hosts ----------------------------------------------------- [automationcontroller] controller1.example.org controller2.example.org This section is for your Ansible Automation Platform execution hosts ----------------------------------------------------- [execution_nodes] hop1.example.org receptor_type='hop' exec1.example.org exec2.example.org This section is for your automation hub hosts ----------------------------------------------------- [automationhub] hub1.example.org hub2.example.org This section is for your Event-Driven Ansible controller hosts ----------------------------------------------------- [automationeda] eda1.example.org eda2.example.org [redis] gateway1.example.org gateway2.example.org hub1.example.org hub2.example.org eda1.example.org eda2.example.org Common variables https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-general-inventory-variables ----------------------------------------------------- postgresql_admin_username=<set your own> postgresql_admin_password=<set your own> registry_username=<your RHN username> registry_password=<your RHN password> Platform gateway https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-gateway-variables ----------------------------------------------------- gateway_admin_password=<set your own> gateway_pg_host=externaldb.example.org gateway_pg_database=<set your own> gateway_pg_username=<set your own> gateway_pg_password=<set your own> Automation controller https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-controller-variables ----------------------------------------------------- controller_admin_password=<set your own> controller_pg_host=externaldb.example.org controller_pg_database=<set your own> controller_pg_username=<set your own> controller_pg_password=<set your own> Automation hub https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#ref-hub-variables ----------------------------------------------------- hub_admin_password=<set your own> hub_pg_host=externaldb.example.org hub_pg_database=<set your own> hub_pg_username=<set your own> hub_pg_password=<set your own> Event-Driven Ansible controller https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars#event-driven-ansible-controller ----------------------------------------------------- eda_admin_password=<set your own> eda_pg_host=externaldb.example.org eda_pg_database=<set your own> eda_pg_username=<set your own> eda_pg_password=<set your own>