Database

Oracle Linux Automation Manager Setup

Thsi blog post show you how to setup and configure Oracle Linux Automation Manager on Oracle Linux 9.

The Compute Instance

Verify the hostname. In this example, an Oracle Cloud Infrastructure Compute Instance is used with a public IP address.

opc@ocw-olam ~]$ hostname -f
ocw-olam.sndatabasepubli.vcncompute.oraclevcn.com

Get the public IP address.

[opc@ocw-olam ~]$ sudo oci-public-ip
No public ip addresses found from OCI, falling back to the stun servers.
The stun servers do not provide details on the vNIC and might find only the primary IP address.

Public IPs information (primary on top):
    IP Address   |
-----------------
 132.226.221.114 |

Section 1: OS Setup

Link to the documentation: https://docs.oracle.com/en/operating-systems/oracle-linux-automation-manager/2/install2.3/awx_preparing_hosts.html#network

Login as OS user opc and set firewall rules.

sudo firewall-cmd --add-port=27199/tcp --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

Verify UEK8 is used (Kernel 6.12):

[opc@ocw-olam ~]$ uname -a
Linux ocw-olam 6.12.0-102.36.5.2.el9uek.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 13 23:57:36 PDT 2025 x86_64 x86_64 x86_64 GNU/Linux

Enable DNF repositories:

sudo dnf config-manager --enable ol9_baseos_latest
sudo dnf install oraclelinux-automation-manager-release-el9-2.3
sudo dnf config-manager --enable ol9_addons ol9_UEKR8 ol9_appstream

Section 2: Setup PostgreSQL Database

Enable module and install PG16:

sudo dnf module reset postgresql
sudo dnf module enable postgresql:16
sudo dnf install postgresql-server
sudo postgresql-setup --initdb

Change the password method:

sudo sed -i "s/#password_encryption.*/password_encryption = scram-sha-256/"  /var/lib/pgsql/data/postgresql.conf

Start PG service:

sudo systemctl enable --now postgresql
sudo systemctl status postgresql

Create user AWX:

sudo su - postgres -c "createuser -S -P awx"

Set password - example: awx

Edit network access to allow remote access to the database:

sudo vi /var/lib/pgsql/data/pg_hba.conf
host  all  all 0.0.0.0/0 scram-sha-256

Edit PG settings for listen address:

sudo vi /var/lib/pgsql/data/postgresql.conf
listen_addresses = 'ocw-olam.sndatabasepubli.vcncompute.oraclevcn.com'

Restart PG:

sudo systemctl restart postgresql

Section 3: Setup Oracle Linux Automation Manager

sudo dnf install ol-automation-manager

Change Redis settings:

sudo vi /etc/redis/redis.conf
unixsocket /var/run/redis/redis.sock 
unixsocketperm 775

Edit user settings for OLAM (superseeds settings.py):

sudo vi /etc/tower/conf.d/olam.py
CLUSTER_HOST_ID = "ocw-olam.sndatabasepubli.vcncompute.oraclevcn.com"
DATABASES = {
    'default': {
        'ATOMIC_REQUESTS': True,
        'ENGINE': 'awx.main.db.profiled_pg',
        'NAME': 'awx',
        'USER': 'awx',
        'PASSWORD': 'awx',
        'HOST': 'ocw-olam.sndatabasepubli.vcncompute.oraclevcn.com',
        'PORT': '5432',
    }
}

Change owner an permission for file olam.py.

sudo chown awx:awx /etc/tower/conf.d/olam.py
sudo chmod 0640 /etc/tower/conf.d/olam.py

Pull OLAM image from Oracle Container Registry and create OLAM user awx:

sudo su -l awx -s /bin/bash
podman system migrate
podman pull container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:2.3-ol8
exit
sudo su -l awx -s /bin/bash
awx-manage migrate
awx-manage createsuperuser --username admin --email martin.berger.swiss@proton.me
exit

Create new NGINX certificate:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/tower/tower.key -out /etc/tower/tower.crt

Remove unused settings:

sudo vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
}

Section 3: Installing Oracle Linux Automation Manager on a Single-Host Deployment

Provision instance and set execution environment:

sudo su -l awx -s /bin/bash
awx-manage provision_instance --hostname=ocw-olam.sndatabasepubli.vcncompute.oraclevcn.com
awx-manage register_default_execution_environments
awx-manage register_queue --queuename=default --hostnames=ocw-olam.sndatabasepubli.vcncompute.oraclevcn.com
awx-manage register_queue --queuename=controlplane --hostnames=ocw-olam.sndatabasepubli.vcncompute.oraclevcn.com

Change Receptor settings:

sudo vi /etc/receptor/receptor.conf

Update the configuration file with these settings.

---
- node:
    id: 172.16.7.69
 
- log-level: debug
 
- tcp-listener:
    port: port_number
 
- control-service:
    service: control
    filename: /var/run/receptor/receptor.sock
 
- work-command:
    worktype: local
    command: /var/lib/ol-automation-manager/venv/awx/bin/ansible-runner
    params: worker
    allowruntimeparams: true
#    verifysignature: true

Section 4: Start Oracle Linux Automation Manager

Enable and start the service.

sudo systemctl enable --now ol-automation-manager.service

Verify web access by browser and public ip: https://your-public-ip.