Update the recording workflow diagram to be more accurate

Attempting to picture the client as an individual aspect of the workflow
diagram made the workflow seem much worse than it actually was.

The callback uses the client to send the data to the API. Document it as
such.

Change-Id: I12795820c269d2aa9a8032c703285b86624ca7fe
This commit is contained in:
David Moreau Simard 2019-04-02 14:36:26 -04:00
parent 4e27887ade
commit 41a2e339fc
No known key found for this signature in database
GPG Key ID: CBEB466764A9E621
3 changed files with 13 additions and 12 deletions

View File

@ -1 +1,2 @@
<mxfile modified="2019-03-02T14:40:33.544Z" host="www.draw.io" agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:65.0) Gecko/20100101 Firefox/65.0" version="10.3.1" etag="tY1ZUQhwAL4cp4ZSqEVr" type="device"><diagram id="9906a0a6-bcd4-fe14-221d-85032a32ce87" name="Page-1">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</diagram></mxfile>
<?xml version="1.0" encoding="UTF-8"?>
<mxfile modified="2019-04-02T18:30:38.806Z" host="www.draw.io" agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0" etag="_tw4m73zY_rj1M43sCXq" version="10.6.0" type="device"><diagram id="9906a0a6-bcd4-fe14-221d-85032a32ce87" name="Page-1">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</diagram></mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -4,17 +4,17 @@ Architecture and Workflows
Recording data from Ansible
---------------------------
ARA Records Ansible playbooks through an Ansible `callback plugin`_.
.. image:: _static/graphs/recording-workflow.png
0. A human (*or a system, script, etc.*) installs ARA and configures Ansible to use the ARA callback
1. A human (*or a system, script, etc.*) executes an ``ansible-playbook`` command
2. Ansible sends hooks for every event to `callback plugins`_ (``v2_playbook_on_start``, ``v2_runner_on_failed``, etc.)
3. The callback plugin, organizes the data sent by Ansible and sends it to the API client
4. The API client sends the data to the API over HTTP or locally offline through an internal implementation
5. The API server receives the POST from the client, validates it and sends it to the database model backend
6. The API server sends a response back to the client with the results
7. The API client sends the response back to the callback with the results
8. The callback plugin returns, ending the callback hook
9. Ansible continues running until it is complete (back to step 2)
0. ARA is installed and Ansible is configured to use the callback plugin
1. An ``ansible-playbook`` command is executed
2. Ansible triggers the callback plugin for every event (``v2_playbook_on_start``, ``v2_runner_on_failed``, etc.)
3. The relevant information is retrieved from the Ansible playbook execution context and is sent to the API server
4. The API server validates and serializes the data before storing it the configured database backend
5. The API server sends a response back to the API client with the results
6. The callback plugin returns, ending the callback hook
7. Ansible continues running the playbook until it fails or is completed (back to step 2)
.. _callback plugins: https://docs.ansible.com/ansible/latest/plugins/callback.html
.. _callback plugin: https://docs.ansible.com/ansible/latest/plugins/callback.html