# AWX Architecture

**URL:** <https://forum.ansible.com/t/awx-architecture/30273>\
**Category:** AWX Project\
**Tags:** awx\
**Created:** [May 7, 2019, 8:20am UTC](https://forum.ansible.com/t/awx-architecture/30273 "2019-05-07T08:20:09Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mohamedjarboui1995](https://avatars.discourse-cdn.com/v4/letter/m/a3d4f5/32.png) [@mohamedjarboui1995](https://forum.ansible.com/u/mohamedjarboui1995)\
**Post date:** [May 7, 2019, 8:20am UTC](https://forum.ansible.com/t/awx-architecture/30273/1 "2019-05-07T08:20:09Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![RC1](https://avatars.discourse-cdn.com/v4/letter/r/85f322/32.png) [@RC1](https://forum.ansible.com/u/RC1)\
**Post date:** [May 7, 2019, 9:56am UTC](https://forum.ansible.com/t/awx-architecture/30273/2 "2019-05-07T09:56:17Z")

</div>

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](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.

---

<div class="post-metadata">

**Author:** ![cristian.fernandez](https://avatars.discourse-cdn.com/v4/letter/c/e9bcb4/32.png) [@cristian.fernandez](https://forum.ansible.com/u/cristian.fernandez)\
**Post date:** [May 7, 2019, 9:59am UTC](https://forum.ansible.com/t/awx-architecture/30273/3 "2019-05-07T09:59:26Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![bianca](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/bianca/32/7233_2.png) [@bianca](https://forum.ansible.com/u/bianca)\
**Post date:** [May 20, 2019, 2:11pm UTC](https://forum.ansible.com/t/awx-architecture/30273/4 "2019-05-20T14:11:09Z")

</div>

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](https://github.com/ansible/awx/tree/devel/docs)

Hope this helps!  
Bianca
