From 83cf10ba3459ebb559dc3b6b152b5caa70642857 Mon Sep 17 00:00:00 2001 From: Elizabeth Murtough <114593312+emurtoug@users.noreply.github.com> Date: Wed, 10 Sep 2025 06:57:19 -0400 Subject: [PATCH] AAP-52256 created modules for automation dashboard guide (#4181) * 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 --- ...x-inventory-file-automation-dashboard.adoc | 9 + .../assembly-view-key-metrics.adoc | 30 +++ .../con-filter-automation-data.adoc | 29 +++ .../con-top-overview-usage.adoc | 17 ++ .../proc-analyzing-costs-savings.adoc | 24 ++ .../proc-installing-automation-dashboard.adoc | 131 +++++++++++ ...proc-integrating-automation-dashboard.adoc | 222 ++++++++++++++++++ ...roc-uninstalling-automation-dashboard.adoc | 18 ++ ...omation-dashboard-inventory-variables.adoc | 90 +++++++ .../titles/automation-dashboard/master.adoc | 14 +- 10 files changed, 581 insertions(+), 3 deletions(-) create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/assembly-appendix-inventory-file-automation-dashboard.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/assembly-view-key-metrics.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-filter-automation-data.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-top-overview-usage.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-analyzing-costs-savings.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-installing-automation-dashboard.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-integrating-automation-dashboard.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-uninstalling-automation-dashboard.adoc create mode 100644 downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/ref-automation-dashboard-inventory-variables.adoc diff --git a/downstream/titles/automation-dashboard/automation-dashboard/assembly-appendix-inventory-file-automation-dashboard.adoc b/downstream/titles/automation-dashboard/automation-dashboard/assembly-appendix-inventory-file-automation-dashboard.adoc new file mode 100644 index 0000000000..4fac291b0c --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/assembly-appendix-inventory-file-automation-dashboard.adoc @@ -0,0 +1,9 @@ +:_mod-docs-content-type: ASSEMBLY + +[id="assembly-appendix-inventory-file-automation-dashboard"] += Appendix + +[role="_abstract"] +The inventory variables required for installing {AutomationDashboardName} are described in the following section: + +include::automation-dashboard/ref-automation-dashboard-inventory-variables.adoc[leveloffset=+1] diff --git a/downstream/titles/automation-dashboard/automation-dashboard/assembly-view-key-metrics.adoc b/downstream/titles/automation-dashboard/automation-dashboard/assembly-view-key-metrics.adoc new file mode 100644 index 0000000000..f6532dbd94 --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/assembly-view-key-metrics.adoc @@ -0,0 +1,30 @@ +ifdef::context[:parent-context: {context}] + +[id="assembly-view-key-metrics"] + +:context: assembly-view-key-metrics-ctxt + += View key usage metrics with {AutomationDashboardName} + +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. + +{AutomationDashboardName} helps you to: + +* Get a clear overview of the automation occurring in your environment. + +* Track metrics, like time saved and errors reduced, to quantify the benefits of automation. + +* Analyze job execution times and failure rates to pinpoint areas where automation can be improved. + +* Use the data generated by {AutomationDashboardName} to make informed decisions about automation strategy, resource allocation, and prioritization of automation projects. + +By effectively utilizing {AutomationDashboardName}, you can gain valuable insights into your {PlatformNameShort} usage and drive continuous improvement in your automation practices. + +include::automation-dashboard/proc-installing-automation-dashboard.adoc[leveloffset=+1] + +include::automation-dashboard/proc-integrating-automation-dashboard.adoc[leveloffset=+1] + +include::automation-dashboard/proc-uninstalling-automation-dashboard.adoc[leveloffset=+1] + +ifdef::parent-context[:context: {parent-context}] +ifndef::parent-context[:!context:] \ No newline at end of file diff --git a/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-filter-automation-data.adoc b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-filter-automation-data.adoc new file mode 100644 index 0000000000..d032dcb2c8 --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-filter-automation-data.adoc @@ -0,0 +1,29 @@ + +[id="con-filter-automation-data"] + += Filter and save automation data + +{AutomationDashboardName} provides filtering options for analyzing your {PlatformNameShort} automation runs. You can select one or more filtering options, choose a time period and a currency, and save your report to the dashboard. + +== Filters + +You can select one or more of the following options to customize your report: + +* **Template:** Select one or more Job Templates. +* **Organization:** Select one or more Organizations. +* **Project:** Select one or more Projects. +* **Label:** Select one or more automations by label. Labels must be preconfigured and assigned to {PlatformNameShort} before they display in {AutomationDashboardName}. For more on configuring labels, see the _Creating a job template_ procedure. +//emurtoug update the link to Creating Job Templates procedure + +== Time period and currency + +After you select your filters, choose a time period for analysis and a currency to demonstrate automation savings. + +* A shorter time period is useful for specific automation use cases. +* A longer time period is useful for overall platform usage and automation growth. + +Changing from one currency to another does not convert the value. You must manually change the manual and automation cost figures to reflect the currency you select. + +== Save a report + +Use *Save as report* to save this report to your {AutomationDashboardName}. You can retrieve it at any time by using *Select a report*. \ No newline at end of file diff --git a/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-top-overview-usage.adoc b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-top-overview-usage.adoc new file mode 100644 index 0000000000..829fb28fdd --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/con-top-overview-usage.adoc @@ -0,0 +1,17 @@ + +[id="con-top-overview-usage"] + += Summary of top and overview usage + +{AutomationDashboardName} displays a summary of the top and overview usage for your selected report. This includes the following data: + +* **Total number of successful jobs**: This indicates the number of automation jobs that were completed successfully. +* **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. +* **Total number of unique hosts automated**: This is the number of controller inventory records you have automated. +* **Total hours of automation**: This represents the cumulative time that {PlatformNameShort} spent running jobs. +* **Number of times jobs were run**: This is the total number of individual job executions. +* **Number of hosts jobs are running on**: This is the total number of hosts that jobs are executed upon. +* **Top 5 projects**: This section lists the top five automation projects based on the number of running jobs. +* **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. +[NOTE] +Scheduled jobs can affect these results, because they do not represent a real, logged-in user. diff --git a/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-analyzing-costs-savings.adoc b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-analyzing-costs-savings.adoc new file mode 100644 index 0000000000..8a445fe25c --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-analyzing-costs-savings.adoc @@ -0,0 +1,24 @@ + +[id="proc-analyzing-costs-savings"] + += Analyzing costs and savings + +The costs and savings analysis compares the cost of manual automation versus the cost of automation execution using {PlatformNameShort} to determine the total savings derived from automation execution. + +To calculate your savings, use the following procedure: + +.Procedure + +. Use the **Average cost of an employee minut**e field to enter the average cost per minute for an engineer to manually run jobs. +. Use the **Cost per minute of {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. +Based on these inputs, {AutomationDashboardName} provides the following data: + + +* **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. +* **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. +* **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}. +* **Total hours saved/avoided**: This figure is calculated by adding host executions and automation creation time, then subtracting the running time in minutes. +* **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. + +[NOTE] +You can export the data from your cost and savings analysis as a CSV. \ No newline at end of file diff --git a/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-installing-automation-dashboard.adoc b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-installing-automation-dashboard.adoc new file mode 100644 index 0000000000..ee84e3215e --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-installing-automation-dashboard.adoc @@ -0,0 +1,131 @@ +// Module included in the following assemblies: +// assembly-view-key-metrics.adoc + + +[id="proc-installing-automation-dashboard"] + += Installing {AutomationDashboardName} + +.Prerequisites + +* One of the following tested configurations: +** RHEL 9 x86 or ARM based physical or virtual host. +** Postgres v15 database. +[IMPORTANT] +Do not attempt to install {AutomationDashboardName} on the same hosts as {PlatformNameShort}. +* Access to _baseos_ and _{PlatformNameShort}stream_ repo packages for the RHEL 9 host. +* 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. +* URL details for access to your {PlatformNameShort} instances. +* An {PlatformNameShort} 0Auth2 token, which is used for communication between the {PlatformNameShort} instances and {AutomationDashboardName}. +* Access to download the installation bundle providing installation components for the {AutomationDashboardName}. +* Open firewall access to allow for communications. This includes HTTPS/443 from the {AutomationDashboardName} to the {PlatformNameShort} instances, but ports are configurable. +* Access to port 8447. +* A supported version of `ansible-core` installed on supported RHEL versions. + +.Procedure + +Use the following steps to install {AutomationDashboardName} on your {RHEL} (RHEL) 9 host: + +. Copy the installation source file to your RHEL 9 host. +. Untar the installation source. This requires approximately 500 MB of disk space. For this example, the user's home directory (`/home/ec2-user`) is used. ++ +[source,bash] +---- +tar -xzf ansible-automation-reports-containerized-setup-bundle.tar.gz +cd ansible-automation-reports-containerized-setup/ +---- + +. Verify that the necessary software is installed by running the following commands: ++ +[source,bash] +---- +sudo dnf install ansible-core +ansible-galaxy collection install -r requirements.yml +---- + +. Copy the example inventory file and modify it before running the installer. ++ +[source,bash] +---- +cp -i inventory.example inventory +vi inventory +---- + +. Review and update the inventory configuration with your specific environment details, including the following variables: +.. All RHEL 9 host occurrences from `ec2-54-147-26-173.compute-1.amazonaws.com` to your FQDN host. +.. All `_admin_password` or `_pg_password` values. Change the word `changeme` to match your passwords. + ++ +[source,bash] +---- +# This is our {AutomationDashboardName} reporter front-end application +[automationreporter] +ec2-54-147-26-173.compute-1.amazonaws.com ansible_connection=local + +# These are any required vars for the installation and shouldn't be removed +[automationreporter:vars] +aap_auth_provider_name=AAP24-example.com-8443 +aap_auth_provider_protocol=https + +# aap_auth_provider_url depends on AAP version: +# AAP 2.4 (controller API): DNS_OR_IP/api +# AAP 2.5 (gateway API): DNS_OR_IP +aap_auth_provider_url=aap24.example.com:8443/api + +# aap_auth_provider_user_data_endpoint depends on AAP version: +# AAP 2.4 (controller API): /v2/me/ +# AAP 2.5 (gateway API): /api/gateway/v1/me/ +aap_auth_provider_user_data_endpoint=/v2/me/ + +aap_auth_provider_user_data_endpoint=/v2/me/ +aap_auth_provider_check_ssl=false +aap_auth_provider_client_id=changeme +aap_auth_provider_client_secret=changeme +initial_sync_days=1 + +# This is for our Postgresql database, by default hosted on the same reporter host +[database] +ec2-54-147-26-173.compute-1.amazonaws.com ansible_connection=local + +# Mandatory vars needed for the installation - modify values to match your environment +[all:vars] +postgresql_admin_username=postgres +postgresql_admin_password=changeme + +# AAP Reporter - mandatory +# -------------------------- +reporter_pg_containerized=True +reporter_admin_password=changeme +reporter_pg_host=ec2-54-147-26-173.compute-1.amazonaws.com +reporter_pg_username=aapreporter +reporter_pg_password=changeme +reporter_pg_database=aapreports + +# The installation is supplied as a bundle containing the container images +# Modify the bundle_dir if necessary to reflect your location +bundle_install=true +bundle_dir=/home/ec2-user/ansible-automation-reports-containerized-setup/bundle +---- + +. Run the installer. ++ +[source,bash] +---- +ansible-playbook -i inventory ansible.containerized_installer.reporter_install +---- + +.Verification + +See the following example output for reference. + +[source,text] +---- +PLAY RECAP ********************************************************************************************************************************************* +ec2-54-147-26-173.compute-1.amazonaws.com : ok=126 changed=51 unreachable=0 failed=0 skipped=42 rescued=0 ignored=0 +localhost : ok=12 changed=0 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 +---- + +.Troubleshooting + +* Alternative configurations are possible (for example, the database for {AutomationDashboardName} can be set on a different host). This requires additional changes to variables in the inventory file. +* Consult the section “Inventory variables” below for available variables. diff --git a/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-integrating-automation-dashboard.adoc b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-integrating-automation-dashboard.adoc new file mode 100644 index 0000000000..fb4673bf99 --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-integrating-automation-dashboard.adoc @@ -0,0 +1,222 @@ +// Module included in the following assemblies: +// assembly-view-key-metrics.adoc +:_mod-docs-content-type: PROCEDURE + +[id="proc-integrating-automation-dashboard"] + += Integrating {AutomationDashboardName} with your {PlatformNameShort} + +Integrate your {PlatformNameShort} instances into the {AutomationDashboardName} configuration to collect and visualise data and gain insights into your automation. + +.Procedure + +. Verify that {AutomationDashboardName} is running on https port 8447 on your RHEL host. This verification will require your login details as defined in the inventory file. +[NOTE] +Port 8447 is enabled by default, but this is configurable. +. Enter `admin` as the username and use `reporter_admin_password` as the password. +. Your {PlatformNameShort} instances are added into `clusters.yml` using the following information: +* Your {PlatformNameShort} URLs/ports for front-end access +* A preconfigured {PlatformNameShort} 0Auth token for read access +[NOTE] +If you don’t have access to {PlatformNameShort}, consult your administrator. +. Configure a personal access token. For more information, see Configuring access to external applications with token-based authentication. +//emurtoug reminder to add link for Configuring access to external apps +. After you have configured your access token, run the following command: ++ +[source,bash] +---- +cp clusters.example.yml clusters.yml +vi clusters.yml +---- + +. You can add one or more {PlatformNameShort} instances into the {AutomationDashboardName} configuration for pulling and combining data by using the following: +[NOTE] +If you only have one {PlatformNameShort} instance, then remove the second entry. ++ +[source,bash] +---- +--- +clusters: + - protocol: https <--- Normally https + address: aap1.example.com <--- Can use IP or FQDN without http(s):// + port: 443 <--- Normally 443 + access_token: sampleToken <--- Your preconfigured {PlatformNameShort} read access token + verify_ssl: false <--- Can be used when using self signed certs + sync_schedules: + - name: Every 5 minutes sync + rrule: DTSTART;TZID=Europe/Ljubljana:20250630T070000 FREQ=MINUTELY;INTERVAL=5 + enabled: true + + - protocol: https + address: aap2.example.com + port: 443 + access_token: WRn2swiqg5spEwUndDkrJoCeg4Qwuw + verify_ssl: true + sync_schedules: + - name: Every 5 minutes sync + rrule: DTSTART;TZID=Europe/Ljubljana:20250630T070000 FREQ=MINUTELY;INTERVAL=5 + enabled: true +---- + +. Run the following commands to load and activate your {AutomationDashboardName} configuration: + ++ +[source,bash] +---- +podman cp clusters.yaml automation-dashboard-web:/ +podman exec automation-dashboard-web /venv/bin/python ./manage.py setclusters /clusters.yaml +---- +For reference, see the following example output: ++ +[source,bash] +---- +podman exec automation-dashboard-web /venv/bin/python ./manage.py setclusters /clusters.yml +Check if table exists. +Reading YML file. +Adding cluster: address=my-aap.example.com + +INFO 2025-05-20 09:55:00,926 connector 187 140208297051968 Checking if is AAP 2.4 at https://my-aap.example.com:443 +INFO 2025-05-20 09:55:00,926 connector 187 140208297051968 Pinging api https://my-aap.example.com:443/api/v2/ping/ +INFO 2025-05-20 09:55:00,926 connector 187 140208297051968 Executing GET request to https://my-aap.example.com:443/api/v2/ping/ + +ERROR 2025-05-20 09:55:00,032 connector 301 140025281152832 GET request failed with status 404 +Successfully set up AAP clusters +---- ++ +[NOTE] +==== +{AutomationDashboardName} checks for {PlatformNameShort} 2.4, 2.5, and 2.6 instances. As shown in the example output, this can result in 404 errors. For more information on errors, see the Verification section of this chapter. +==== +. Use the following command to test your {AutomationDashboardName} configuration by manually fetching data: + ++ +[source,bash] +---- +podman exec automation-dashboard-web /venv/bin/python ./manage.py syncdata --since=2025-04-01 --until=2025-06-01 +Successfully created Sync task for Cluster https://aap1.example.com:443. +---- ++ +[NOTE] +==== +Consider using a short date interval to reduce test time. The format is YYYY-MM-DD. +==== +You can then use `journalctl` to monitor progress: + ++ +[source,bash] +---- +sudo journalctl fn10 +---- + +. Refresh your browser to view retrieved data within your {AutomationDashboardName}. + +.Verification +If you encounter error messages during installation, consult the following table: +[cols="1,2,2a"] +|=== +|Issue |Possible Cause |Solution +|401 errors +|This is an unauthorized access message indicating authentication errors such as incorrect credentials or tokens +|Verify that your access token is correct in `clusters.yml` +|404 errors +|This is a “not found” message indicating that something isn’t configured correctly or pointing to the correct endpoint +|Verify that your {PlatformNameShort} instance URLs used in `clusters.yml` are correct +|=== + +A successful installation should be running the following three container services: + +[source,bash] +---- +podman ps --all --format "{{.Names}}" + +postgresql +automation-dashboard-task +automation-dashboard-web +---- + +You can check your container logs by running the following: + +[source,bash] +---- +journalctl CONTAINER_NAME=container (where container equals one of postgresql automation-dashboard-task or automation-dashboard-web) + +For example: +journalctl CONTAINER_NAME=automation-dashboard-task +May 22 13:02:07 automation-dashboard automation-dashboard-task[1607]: [wait-for-migrations-reporter.sh] Waiting for database migrations... +May 22 13:02:07 automation-dashboard automation-dashboard-task[1607]: [wait-for-migrations-reporter.sh] Attempt 1 +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,636 periodic 2 140568371550016 Starting sync task. +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,636 periodic 2 140568371550016 Retrieving clusters inform> +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,747 periodic 2 140568371550016 Retrieved 1 clusters. +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 periodic 2 140568371550016 Retrieving data from clust> +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Checking {PlatformNameShort} version at h> +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Checking if is {PlatformNameShort} 2.5 at> +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Pinging api https://ec2-3> +May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Executing GET request to > +May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: ERROR 2025-05-22 13:02:13,820 connector 2 140568371550016 GET request failed with > +May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:13,821 connector 2 140568371550016 Checking if is {PlatformNameShort} 2.4 at> +May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:13,821 connector 2 140568371550016 Pinging api https://ec2-3> +May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:13,821 connector 2 140568371550016 Executing GET request to > +May 22 13:02:16 automation-dashboard automation-dashboard-task[1607]: ERROR 2025-05-22 13:02:16,892 connector 2 140568371550016 GET request failed with ... +---- + +You can check how the services are running by using `systemd`: + +[source,bash] +---- +systemctl status --user +● automation-dashboard + State: running + Units: 76 loaded (incl. loaded aliases) + Jobs: 0 queued + Failed: 0 units + Since: Thu 2025-05-22 13:02:07 UTC; 22min ago + systemd: 252-51.el9 + CGroup: /user.slice/user-1000.slice/user@1000.service + ├─app.slice + │ ├─automation-dashboard-task.service + │ │ └─1607 /usr/bin/conmon --api-version 1 -c 84e46532e8ca31b0cadb037479289d030103aa01b7a1591e62b83b17f031e47d -u 84e46532e8ca31b0cadb037479> + │ ├─automation-dashboard-web.service + │ │ └─1608 /usr/bin/conmon --api-version 1 -c d060f3e3fb2b4c4c5c588149253beed83c78ccc9c9a8c1bf4c96157142a210dc -u d060f3e3fb2b4c4c5c58814925> + │ ├─dbus-broker.service + │ │ ├─1621 /usr/bin/dbus-broker-launch --scope user + │ │ └─1624 dbus-broker --log 4 --controller 9 --machine-id 612db98503014199bfd8c788c8d3da58 --max-bytes 100000000000000 --max-fds 2500000000> + │ └─postgresql.service + │ └─1614 /usr/bin/conmon --api-version 1 -c eec61745cb6fc3a89a4f7475d7ef63b5899699157d943c2f16a3243311927bef -u eec61745cb6fc3a89a4f7475d7> + ├─init.scope + │ ├─1093 /usr/lib/systemd/systemd --user + │ └─1128 "(sd-pam)" + └─user.slice + ├─libpod-84e46532e8ca31b0cadb037479289d030103aa01b7a1591e62b83b17f031e47d.scope + │ └─container + │ ├─1619 /usr/bin/dumb-init -- /usr/bin/launch_reporter_task.sh + │ └─1681 /venv/bin/python periodic.py + ├─libpod-d060f3e3fb2b4c4c5c588149253beed83c78ccc9c9a8c1bf4c96157142a210dc.scope + │ └─container + │ ├─1617 /usr/bin/dumb-init -- /usr/bin/launch_reporter_web.sh + │ ├─1646 /usr/bin/python3.9 /usr/local/bin/supervisord -c /etc/supervisord_reporter_web.conf + │ ├─1877 /bin/bash /usr/local/bin/stop-supervisor + │ ├─1878 "nginx: master process nginx -g daemon off;" + │ ├─1879 /venv/bin/uwsgi /etc/tower/uwsgi.ini + │ ├─1880 "nginx: worker process" + │ ├─1881 "nginx: worker process" + │ ├─1882 "nginx: worker process" + │ ├─1883 "nginx: worker process" + │ ├─1884 /venv/bin/uwsgi /etc/tower/uwsgi.ini + │ ├─1885 /venv/bin/uwsgi /etc/tower/uwsgi.ini + │ ├─1886 /venv/bin/uwsgi /etc/tower/uwsgi.ini + │ ├─1887 /venv/bin/uwsgi /etc/tower/uwsgi.ini + │ └─1888 /venv/bin/uwsgi /etc/tower/uwsgi.ini + ├─libpod-eec61745cb6fc3a89a4f7475d7ef63b5899699157d943c2f16a3243311927bef.scope + │ └─container + │ ├─1623 postgres + │ ├─1869 "postgres: logger " + │ ├─1871 "postgres: checkpointer " + │ ├─1872 "postgres: background writer " + │ ├─1873 "postgres: walwriter " + │ ├─1874 "postgres: autovacuum launcher " + │ ├─1875 "postgres: stats collector " + │ ├─1876 "postgres: logical replication launcher " + │ └─1889 "postgres: {PlatformNameShort}reporter {PlatformNameShort}reports 172.31.28.99(39338) idle" + └─podman-pause-b6c4e853.scope + └─1359 catatonit -P +---- \ No newline at end of file diff --git a/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-uninstalling-automation-dashboard.adoc b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-uninstalling-automation-dashboard.adoc new file mode 100644 index 0000000000..eb9613864c --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/proc-uninstalling-automation-dashboard.adoc @@ -0,0 +1,18 @@ +// Module included in the following assemblies: +// assembly-view-key-metrics.adoc + + +[id="proc-uninstalling-automation-dashboard"] + += Uninstalling {AutomationDashboardName} + +This procedure describes how to uninstall {AutomationDashboardName} by running a single command. + +.Procedure + +Run the following command to uninstall {AutomationDashboardName} and its dependencies, including the PostgreSQL database container: ++ +[source,bash,subs="+attributes"] +---- +ansible-playbook -i inventory ansible.containerized_installer.reporter_uninstall +---- \ No newline at end of file diff --git a/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/ref-automation-dashboard-inventory-variables.adoc b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/ref-automation-dashboard-inventory-variables.adoc new file mode 100644 index 0000000000..192d2b94fa --- /dev/null +++ b/downstream/titles/automation-dashboard/automation-dashboard/automation-dashboard/ref-automation-dashboard-inventory-variables.adoc @@ -0,0 +1,90 @@ +// Module included in the following assemblies: +// assembly-appendix-inventory-file-automation-dashboard.adoc + +:_mod-docs-content-type: REFERENCE + +[id="ref-automation-dashboard-inventory-variables"] + += {AutomationDashboardName} inventory file variables + +[role="_abstract"] +The following variables control how {AutomationDashboardName} interacts with remote hosts. + +[cols="1,2a"] +|=== +|Inventory variable |Description + +|`aap_auth_provider_name` +|Natural language name shown on the login page. For example: {PlatformNameShort} + +|`aap_auth_provider_protocol` +|Enter HTTP or HTTPS + +|`aap_auth_provider_url` +|{PlatformNameShort} IP or DNS name + +|`aap_auth_provider_check_ssl` +|Enforce TLS check or not + +|`aap_auth_provider_user_data_endpoint` +|{PlatformNameShort} endpoint, depends on {PlatformNameShort} version: + +AAP 2.4 (controller API): `/api/v2/me/` + +AAP 2.5 and AAP 2.6 (gateway API): `/api/gateway/v1/me/` + +|`aap_auth_provider_client_id` +|AAP 0Auth2 application `client_id` + +|`aap_auth_provider_client_secret` +|AAP 0Auth2 application `client_secret` + +|`reporter_update_secret` +|Forces regeneration of autogenerated podman secrets. A podman secret is used to store the password for database access. Set `reporter_update_secret` to `true` if you changed the `reporter_pg_password` in inventory. + +|`nginx_disable_https` +|Allows using HTTP instead of HTTPS for {AutomationDashboardName}. + +|`nginx_http_port` +|Configures the HTTP port for {AutomationDashboardName}. + +|`nginx_https_port` +|Configures the HTTPS port for {AutomationDashboardName}. + +|`postgresql_admin_username` +|Admin username to access PostgreSQL database. + +|`postgresql_admin_password` +|Admin password to access PostgreSQL database. + +|`registry_username` +|Username used to pull container images from `registry.redhat.io`. Currently we distribute only a bundled installer, so the tarball contains required container images, and the end user must to pull images from the remote registry. +[NOTE] +End users can omit this variable. + +|`registry_password` +|Password used to pull container images from `registry.redhat.io`. The variable is needed when the bundled installer is being built. +[NOTE] +End users can omit this variable. + +|`reporter_pg_containerized` +|Configures the installer to install and configure the database as a container on the same host as {AutomationDashboardName}. `True` is also the only supported value. + +|`reporter_admin_password` +|Password for the {AutomationDashboardName} administrator user. The username is always `admin`. + +|`reporter_pg_host` +`reporter_pg_username` +`reporter_pg_password` +`reporter_pg_database` +|The `reporter_pg_*` variables configure additional database user and database schema for {AutomationDashboardName} on the database host `reporter_pg_host`. + +|`bundle_install` +|Indicates the required container images are already included in the installation bundle (tarball). It must be `true`. + +|`bundle_dir` +|This is the directory where the installation bundle was unpacked `+ /bundle` (for example: `/home//ansible-automation-dashboard-containerized-setup/bundle`). This variable must be adjusted by the end user to reflect the path to the “bundle” directory on their system. + +|`postgresql_version` +|Selects PostgreSQL to be installed. Allowed values are 13 and 15. +|=== \ No newline at end of file diff --git a/downstream/titles/automation-dashboard/master.adoc b/downstream/titles/automation-dashboard/master.adoc index 61c5a2f423..8b58d0a2fc 100644 --- a/downstream/titles/automation-dashboard/master.adoc +++ b/downstream/titles/automation-dashboard/master.adoc @@ -8,7 +8,7 @@ include::attributes/attributes.adoc[] // Book Title -= Using Automation Dashboard += Using {AutomationDashboardName} This guide describes how to install and configure {AutomationDashboardName} to evaluate automation usage across your environments and the savings associated with it. @@ -16,5 +16,13 @@ This guide describes how to install and configure {AutomationDashboardName} to e include::{Boilerplate}[] // Contents -// Test assembly: replace with content for Automation Dashboard -include::analytics/assembly-data-dictionary.adoc[leveloffset=+1] +include::automation-dashboard/assembly-view-key-metrics.adoc[leveloffset=+1] + +include::automation-dashboard/automation-dashboard/con-filter-automation-data.adoc[leveloffset=+1] + +include::automation-dashboard/automation-dashboard/con-top-overview-usage.adoc[leveloffset=+1] + +include::automation-dashboard/automation-dashboard/proc-analyzing-costs-savings.adoc[leveloffset=+1] + +include::automation-dashboard/assembly-appendix-inventory-file-automation-dashboard.adoc[leveloffset=+1] +