AWX Architecture

Hello AWX community !

Can someone provide some insight into how AWX works behind the scenes? I installed it locally and got it working, saw the 5 docker containers come up (awx_task, awx_web, postgres, memcached and rabbitmq) but want to understand what each of these containers are doing and how they interact with each other? I understand that docker compose is used to tie them together, but want to know more about each containers functionality and relation to the entire product. Could someone point me in the right direction or be kind enough to share their knowledge?
I need to understand the architecture to defend my graduation project, any help ( tutorials , documents, figures …) will be greatly appreciated, Thanks.

cardially.
Mohmed Amine.

Hi Mohmed ,

Hope the following details help -

There are 5 containers working behind the seen:

awx_web

awx_task

postgres

rabbitmq

memchached

Working of each container:

  1. awx_web:- awx_web is responsible for the interaction of webpage. You can verify it by following steps:

a) Stop awx_web container

docker stop <awx_web ID>

b) Cross check that awx_web container is down

docker ps

c) Now refresh the webpage and try to perform any interaction

  1. awx_task:- awx_task is responsible for the execution of jobs

  2. Postgres:- postgres is the databse for awx_task, when it is stopped a server error is returnd

  3. Memchched :- It is a memory caching system.

Related document:

:https://docs.ansible.com/ansible/latest/plugins/cache/memcached.html#requirements

  1. Rabbitmq:- RabbitMQ is an open-source message-broker software that originally implemented the Advanced Message Queuing Protocol. When rabbitmaq is down, jobs are

not executed at that time, scheduled jobs starts its execution when rabbitmq is restarted.

Regards.

Hi Mohamed, I’m not an expert of awx but I share my knowledge with you.

For start, awx is composed for 5 containers.

awx_web - This container is the most basic of all, to deploy this container in the awx installation, is generated with a web server inside, in this case “Nginx”. This container is responsable of all manage’s tasks that we make in the awx web interface. This container interact with “awx_task” to task’s execution, interact with “awx_postgres” to store data on a database, and interact with “awx_memcached” to store very relevant data in cache memory for fast access.

awx_task - This container is responsable of all tasks that we execute over diferent servers. This container interact with awx_web to sent them the task’s execution display, i don’t know if interact with awx_postgres, i suppose that yes, interact too with memcached to store very relevant data in cache memory for fast access.

awx_memcached - This container is responsable to store very relevant data in cache memory for following fast access. Interact with awx_web and awx_task.

awx_rabbitmq - I don’t know it much, but I know that is a message boker that communicate diferent services of diferent containers. For example to communicate Nginx in the “awx_web” container and PostgreSQL in the awx_postgres container.

awx_postgres - This container has a database, in this case PostgreSQL that store data of awx_web container and i soppose that store data of awx_task too.

Hi Mohmed,

If you haven’t seen these already, here is the directory in the AWX repo that has AWX-specific documentation: https://github.com/ansible/awx/tree/devel/docs

Hope this helps!
Bianca