Skip to content

Commit 20de37c

Browse files
ariordan-redhatemurtougKylaF8
authored
2.5 Automation dashboard docs AAP-52256 (#4264) (#4181) (#4273) (#4281) (#4349)
* AAP-52256 created modules for automation dashboard guide (#4181) (#4271) * AAP-52256 created modules for automation dashboard guide * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules * AAP-52256 updated modules Co-authored-by: Elizabeth Murtough <[email protected]> * AAP-52256-B updated automation dashboard guide (#4273) * 2.5 Automation dashboard docs AAP-52256 * Making edits. * Edited Section 1.2 * Starting edits on 1.2 * Edits to Integrating Automation Dashboard with your Ansible Automation Platform * Edited Uninstalling Automation Dashboard * Edited Filter and save automation data for reporting * Edited Summary of top and overview usage * Edited Analyzing costs and savings * Started editing the appendix * Finished changes to Appendix. * Edited changes requested by SME's * Added the new PR edit requests * Added new title for Automation Dashboard (#4034) * Added new title for Automation Dashboard --------- Co-authored-by: Elizabeth Murtough <[email protected]> Co-authored-by: KylaF8 <[email protected]>
1 parent 7c23625 commit 20de37c

17 files changed

+707
-0
lines changed

downstream/attributes/attributes.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
:OpenAI: OpenAI
4343
:AzureOpenAI: Microsoft Azure OpenAI
4444

45+
// Automation Dashboard
46+
:AutomationDashboardName: Automation Dashboard
4547

4648
// AAP on Clouds
4749
:AAPonAzureName: Red Hat Ansible Automation Platform on Microsoft Azure
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../aap-common
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../assemblies/analytics/
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../attributes
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
:_mod-docs-content-type: ASSEMBLY
2+
3+
[id="assembly-appendix-inventory-file-automation-dashboard"]
4+
= Appendix
5+
6+
[role="_abstract"]
7+
The inventory variables required by the {AutomationDashboardName} installer are described in the following table:
8+
9+
include::automation-dashboard/ref-automation-dashboard-inventory-variables.adoc[leveloffset=+1]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
ifdef::context[:parent-context: {context}]
2+
3+
[id="assembly-view-key-metrics"]
4+
5+
:context: assembly-view-key-metrics-ctxt
6+
7+
= View key usage metrics with {AutomationDashboardName}
8+
9+
The {AutomationDashboardName} utility is a web-based container application that provides key metrics related to job execution, efficiency, and the value derived from automation. {AutomationDashboardName} uses automation metrics to provide automation usage data from {PlatformNameShort}. You can use this data to determine the cost of performing tasks manually versus the cost of performing tasks through automation. This comparison is used to demonstrate the savings achievable through automation.
10+
11+
{AutomationDashboardName} is designed to help you:
12+
13+
* Get a clear overview of the automation occurring in your environment.
14+
15+
* Track metrics, like time saved and errors reduced, to quantify the benefits of automation.
16+
17+
* Analyze job execution times and failure rates to pinpoint areas where automation can be improved.
18+
19+
* Use the data generated by {AutomationDashboardName} to make informed decisions about automation strategy, resource allocation, and prioritization of automation projects.
20+
21+
By effectively utilizing {AutomationDashboardName}, you can gain valuable insights into your {PlatformNameShort} usage and drive continuous improvement in your automation practices.
22+
23+
include::automation-dashboard/proc-installing-automation-dashboard.adoc[leveloffset=+1]
24+
25+
include::automation-dashboard/proc-integrating-automation-dashboard.adoc[leveloffset=+1]
26+
27+
include::automation-dashboard/proc-uninstalling-automation-dashboard.adoc[leveloffset=+1]
28+
29+
ifdef::parent-context[:context: {parent-context}]
30+
ifndef::parent-context[:!context:]
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
[id="con-filter-automation-data"]
3+
4+
= Filter and save automation data for reporting
5+
6+
{AutomationDashboardName} provides filtering options to analyze your {PlatformNameShort} automation runs. You can select one or more filtering options to customize your report, select a time period and a currency, and save your report to your {AutomationDashboardName}.
7+
8+
== Filters
9+
10+
Select one or more of the following filtering options to customize your report:
11+
12+
* **Template:** allows you to select one or more Job Templates
13+
* **Organization:** allows you to select one or more Organizations
14+
* **Project:** allows you to select one or more Projects
15+
* **Label:** allows you to select one or more automations by label. Labels must be preconfigured and assigned to {PlatformNameShort} in order to be displayed in {AutomationDashboardName}. For more information on configuring labels, see link:https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/{PlatformVers}/html/using_automation_execution/controller-job-templates#controller-create-job-template[Creating a job template].
16+
17+
== Time period and currency
18+
19+
After selecting your filters, select a time period for analysis, and select a currency to demonstrate automation savings.
20+
21+
* A shorter time period is useful when considering specific automation use cases.
22+
* A longer time period is useful when considering overall platform usage and automation growth.
23+
* Changing from one currency to another does not convert the value of that currency. You must manually change the manual and automation cost figures to reflect whichever currency you select.
24+
25+
== Saving a report
26+
27+
Use *Save as Report* to save this report to your {AutomationDashboardName}. You can retrieve it at any time by using *Select a Report*.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
[id="con-top-overview-usage"]
3+
4+
= Summary of top and overview usage
5+
6+
{AutomationDashboardName} displays a summary of the top and overview usage for your selected report. This includes the following data:
7+
8+
* **Total number of successful jobs**: This indicates the number of automation jobs that were completed successfully.
9+
* **Total number of failed jobs**: This shows the number of automation jobs that encountered errors. Analyzing these failures can help improve automation throughput, reduce errors, and improve efficiency.
10+
* **Total number of unique hosts automated**: This is the number of Controller inventory records you have automated.
11+
* **Total hours of automation**: This represents the cumulative time that {PlatformNameShort} spent running jobs.
12+
* **Number of times jobs were run**: This is the total number of individual job executions.
13+
* **Number of hosts jobs are running on**: This is the total number of hosts that jobs are executed upon.
14+
* **Top 5 projects**: This section lists the top five automation projects based on the number of running jobs.
15+
* **Top 5 users**: This section lists the top five users of {PlatformNameShort}, with a breakdown of the total number of jobs run by each user.
16+
[NOTE]
17+
Scheduled jobs can affect these results, because they do not represent a real, logged-in user.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
[id="proc-analyzing-costs-savings"]
3+
4+
= Analyzing costs and savings
5+
6+
The costs and savings analysis compares the cost of manual automation versus the cost of automation execution using {PlatformNameShort} in order to determine the total savings derived from automation execution.
7+
8+
To calculate your savings, use the following procedure:
9+
10+
.Procedure
11+
12+
. Use the **Average cost per minute to manually run the job** field to enter the average cost per minute for an engineer to manually run jobs.
13+
. Use the **Average cost per minute of running on {PlatformNameShort}** field to enter an average cost per minute of running a job using {PlatformNameShort}. You can include the costs associated with creating the initial or ongoing automation execution.
14+
. Select **Time taken to create automation into calculation** to include the costs associated with creating the initial or ongoing automation execution.
15+
16+
Based on these inputs, {AutomationDashboardName} provides the following data:
17+
18+
19+
* **Cost of manual automation**: This number represents the estimated cost of manually performing all of the automated tasks. This is an estimated value, not an actual expenditure. It represents the potential expenses that the organization would incur without automation. The calculation is based on the time taken to manually execute each job, multiplied by a labor cost rate.
20+
* **Cost of automated execution**: This is the cost of automation execution using {PlatformNameShort}. This cost includes the resources consumed by {PlatformNameShort}, such as server time, processing power, and any other operational expenses associated with automation execution. It represents the actual cost incurred for automation execution.
21+
* **Total savings/cost avoided**: This is the difference between the **Cost of manual automation** and the **Cost of automated execution**. This is a key metric for demonstrating the return on investment attainable by using {PlatformNameShort}.
22+
* **Total hours saved/avoided**: This figure is calculated by adding host executions and automation creation time, then subtracting the running time in minutes.
23+
* **Time taken to manually execute (min)**: This metric represents the amount of time it would take for a user to perform the task manually on a host. It is an input provided to compare the value of manual execution and automated execution using the time taken by the organization to manually automate.
24+
+
25+
[NOTE]
26+
====
27+
You can export the data from your cost and savings analysis as a CSV.
28+
====
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
// Module included in the following assemblies:
2+
// assembly-view-key-metrics.adoc
3+
4+
5+
[id="proc-installing-automation-dashboard"]
6+
7+
= Installing {AutomationDashboardName}
8+
9+
.Prerequisites
10+
11+
* One of the following tested configurations:
12+
** RHEL 9 x86 or ARM based physical or virtual host.
13+
** With an external database: Postgres v15 database.
14+
[IMPORTANT]
15+
Do not attempt to install {AutomationDashboardName} on the same host(s) as {PlatformNameShort}.
16+
* Automation Dashboard installation has been tested with the following configuration:
17+
** 80 GB Harddrive (depending on data growth)
18+
** 4 vCPUs x 16 GB Ram
19+
** Disk IOPS - 3000
20+
** Handle up to 10,000 jobs/month and 47M summaries/month
21+
* Access to _baseos_ and _{PlatformNameShort}stream_ repo packages for the RHEL 9 host.
22+
* A non-root login account to the RHEL 9 host for installation. This requires passwordless sudo access to root as well. By default, we use the $HOMEDIR of the user account.
23+
* URL details for access to your {PlatformNameShort} instances.
24+
* An {PlatformNameShort} 0Auth2 token, which is used for communication between the {PlatformNameShort} instances and {AutomationDashboardName}.
25+
* Access to download the installation bundle providing installation components for the {AutomationDashboardName}.
26+
* Open firewall access to allow for bi-directional communication between AAP instances and the {AutomationDashboardName}.
27+
** This includes HTTPS/443 (or your {PlatformNameShort} configured port) from the dashboard to the Ansible Automation Platform instance(s).
28+
** Port 8447 is the default ingress port for the {AutomationDashboardName}. This port can be configured during installation.
29+
** RHEL firewall ports that may block 5432 to PostgreSQL.
30+
* A supported version of `ansible-core` installed on supported RHEL versions.
31+
32+
.Procedure
33+
34+
. Access the link: https://drive.google.com/drive/folders/1_neE8fWZ78oSsnSwoL6kfgbIIURsed1V[*.tar.gz*] installation source.
35+
. Copy the installation source file to your RHEL 9 host.
36+
. Untar the installation source. This will require ~500Mb. of disk space. Throughout this example we will use the ec2-user home directory, /home/<username>.
37+
+
38+
[source,bash]
39+
----
40+
tar -xzvf ansible-automation-dashboard-containerized-setup-bundle.tar.gz
41+
cd ansible-automation-dashboard-containerized-setup/
42+
----
43+
44+
. Verify that the necessary software is installed by running the following commands:
45+
+
46+
[source,bash]
47+
----
48+
cd ansible-automation-dashboard-containerized-setup
49+
sudo dnf install ansible-core
50+
ansible-galaxy collection install -r requirements.yml
51+
----
52+
53+
. Create an application `client_id/client_secret` in your AAP instance:
54+
.. Create an OAuth2 application using the following steps :
55+
... *For Ansible 2.4*:
56+
+
57+
* Navigate to https://AAP_GATEWAY_FQDN:/#/applications
58+
+
59+
... *For Ansible 2.5 and 2.6*:
60+
+
61+
* Navigate to https://AAP_Controller_FQDN:/access/applications
62+
+
63+
... Add the following information:
64+
+
65+
* *Name*: automation-dashboard-sso
66+
* *Authorization grant type*: authorization-code
67+
* *Organization*: Default
68+
* *Redirect URIs*: https://AUTOMATION_DASHBOARD_FQDN/auth-callback
69+
* *Client type*: Confidential
70+
+
71+
[NOTE]
72+
The values for *Name*, *Organization*, and HTTPS port number for {PlatformNameShort} are configurable. The examples provided in this document assume use of port 443.
73+
+
74+
.. Save the `client_id` and `client_secret information` inputs into the inventory file.
75+
.. Next, create an {PlatformNameShort} access token:
76+
... Navigate to https://AAP_GATEWAY_FQDN/#/users/<id>/tokens, and create a token using the following information:
77+
+
78+
. OAuth application: automation-dashboard-sso
79+
. Scope: read
80+
. Store this access token value. The access token is used in `clusters.yaml`.
81+
+
82+
83+
. Copy the example inventory and modify it before running the installer.
84+
+
85+
[source,bash]
86+
----
87+
cp -i inventory.example inventory
88+
vi inventory
89+
----
90+
+
91+
[NOTE]
92+
====
93+
* This is an example tested inventory containing default values for {PlatformNameShort} 2.4 and 2.5.
94+
* You must change the following values to use this inventory configuration in your environment:
95+
** Change the RHEL 9 host occurrences from `host.example.com` to your FQDN host
96+
** Change the phrase `TODO` to match your passwords within all `_admin_password` or `_pg_password` values.
97+
====
98+
+
99+
[source,bash]
100+
----
101+
# This is our Automation Dashboard front-end application
102+
[automationdashboard]
103+
host.example.com ansible_connection=local
104+
105+
# These are required vars for the installation and should not be removed
106+
[automationdashboard:vars]
107+
# Configure AAP OAuth2 authentication.
108+
# aap_auth_provider_name - name as shown on login page.
109+
aap_auth_provider_name=Ansible Automation Platform
110+
# aap_auth_provider_protocol - http or https
111+
aap_auth_provider_protocol=https
112+
# AAP version - 2.4, 2.5 or 2.6
113+
aap_auth_provider_aap_version=2.5
114+
# aap_auth_provider_host - AAP IP or DNS name, with optional port
115+
aap_auth_provider_host=my-aap.example.com
116+
# aap_auth_provider_check_ssl - enforce TLS check or not.
117+
aap_auth_provider_check_ssl=true
118+
# aap_auth_provider_client_id and aap_auth_provider_client_secret -
119+
# they are obtained from AAP when OAuth2 application is created in AAP.
120+
aap_auth_provider_client_id=TODO
121+
aap_auth_provider_client_secret=TODO
122+
123+
124+
# Specify amount of old data to synchronoize after installation.
125+
# The initial_sync_days=N requests N days of old data, counting from "today".
126+
# The initial_sync_since requests data from the specified data until "today".
127+
# If both are specified, the initial_sync_since will be used.
128+
initial_sync_days=1
129+
# initial_sync_since=2025-08-08
130+
131+
# Hide warnings when insecure https request are made.
132+
# Use this if your AAP uses self-signed TLS certificate.
133+
# show_urllib3_insecure_request_warning=False
134+
135+
# Force clean install-like
136+
# dashboard_update_secret=true
137+
138+
# HTTP/HTTPS settings
139+
# nginx_disable_https=true
140+
# Change nginx_http_port or nginx_https_port if you want to access dashboard on a different TCP port.
141+
# nginx_http_port=8083
142+
# nginx_https_port=8447
143+
# TLS certificate configuration
144+
# The dashboard_tls_cert needs:
145+
# - contain server certificate, intermediate CA certificates and root CA certificate.
146+
# - the server certificate must be the first one in the file.
147+
# dashboard_tls_cert=/path/to/tls/dashboard.crt
148+
# dashboard_tls_key=/path/to/tls/dashboard.key
149+
150+
# Enable Django DEBUG.
151+
# django_debug=True
152+
153+
[database]
154+
host.example.com ansible_connection=local
155+
156+
[all:vars]
157+
postgresql_admin_username=postgres
158+
postgresql_admin_password=TODO
159+
160+
# AAP Dashboard - mandatory
161+
# --------------------------
162+
dashboard_pg_containerized=True
163+
dashboard_admin_password=TODO
164+
dashboard_pg_host=host.example.com
165+
dashboard_pg_username=aapdashboard
166+
dashboard_pg_password=TODO
167+
dashboard_pg_database=aapdashboard
168+
#
169+
bundle_install=true
170+
# <full path to the bundle directory>
171+
bundle_dir='{{ lookup("ansible.builtin.env", "PWD") }}/bundle'
172+
----
173+
174+
. Run the installer.
175+
+
176+
[source,bash]
177+
----
178+
ansible-playbook -i inventory collections/ansible_collections/ansible/containerized_installer/playbooks/reporter_install.yml
179+
----
180+
181+
.Verification
182+
183+
For reference, see the following example output:
184+
185+
[source,text]
186+
----
187+
PLAY RECAP *********************************************************************************************************************************************
188+
ec2-54-147-26-173.compute-1.amazonaws.com : ok=126 changed=51 unreachable=0 failed=0 skipped=42 rescued=0 ignored=0
189+
localhost : ok=12 changed=0 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0
190+
----
191+
192+
Alternative configurations are possible (for example, the database for Automation Dashboard can be set on a different host). This requires additional changes to variables in the inventory file. Consult the Inventory variables section of this document for available variables.
193+
194+
//emurtoug note to add link to appendix

0 commit comments

Comments
 (0)