Trento Installation Automation
Automated testing infrastructure for Trento release candidate artifacts. This tool is used to provision Azure VMs and install Trento using the official Ansible collection to validate RPM packages before release on supported versions of SUSE SLES for SAP.
Overview
The workflow:
-
Provision Azure VMs (control and target nodes) using Terraform
-
Register SUSE machines and activates required modules
-
Configure package sources from Azure Blob Storage or the Trento rolling repository from OBS
-
Set up local RPM repositories on target machines when using packages from Azure Blob Storage
-
Install the Trento Ansible collection on control machines
-
Configure HTTPS certificates signed by a test certificate authority
-
Run the
suse.trento.siteAnsible playbook to install Trento & Trento agent (Agents are installed on same machine as Trento server). -
Verify Healthcheck endpoints in every Trento instance from the runner
-
Run Cypress end-to-end tests against every target node
Infrastructure
The infrastructure consists of paired VMs for each supported SLES version:
-
Control nodes (
control*): Run Ansible playbooks to install Trento on their paired target node -
Target nodes (
target*): Where Trento server gets installed
VM naming convention: {control|target}{slesVersion}sp{spVersion}
Example: control15sp6 and target15sp6 for SLES 15 SP6.
Prerequisites
Azure Blob Storage Structure
RPMs must be uploaded to Azure Blob Storage with the following structure:
<container>/
├── 15/
│ ├── 4/
│ │ ├── trento-web-*.rpm
│ │ ├── trento-wanda-*.rpm
│ │ ├── trento-checks-*.rpm
│ │ ├── trento-agent-*.rpm
│ │ └── ansible-trento-*.rpm
│ ├── 5/
│ │ └── ...
│ └── 6/
│ └── ...
└── 16/
└── 0/
└── ...
The directory structure follows the pattern: <sles_major_version>/<sp_version>/
Each version directory should contain:
-
trento-web-*.rpm- Trento web server -
trento-wanda-*.rpm- Trento checks engine -
trento-checks-*.rpm- Trento checks catalog -
trento-agent-*.rpm- Trento agent -
ansible-trento-*.rpm- Ansible collection for Trento installation
When install_rolling is disabled, packages available in Azure Blob Storage are configured with the highest repository priority. If a package is not provided in blob storage, it will be installed from the official SUSE release sources instead. This is useful when you want to test only a specific package (e.g., Ansible) while installing the rest from official SUSE release sources, or vice versa. When install_rolling is enabled, the Trento rolling repository from OBS is configured with the highest repository priority and Azure Blob Storage is skipped.
|
GitHub Configuration
Secrets
| Secret | Description |
|---|---|
|
Azure service principal credentials (JSON) |
|
SSH private key for VM access |
|
SAS token for blob storage access |
|
SUSE subscription registration code |
|
SUSE subscription email |
|
Trento web admin password |
|
Private key of the test certificate authority used to sign Trento HTTPS certificates |
Test certificate authority
TRENTO_TEST_CA_CRT and TRENTO_TEST_CA_KEY must belong to the same test certificate authority. The workflow uses them to sign the HTTPS certificates configured in the Trento reverse proxy, and the runner trusts TRENTO_TEST_CA_CRT before running health checks and Cypress tests.
TRENTO_TEST_CA_CRT is public and should be stored as a GitHub Actions variable. It can be imported locally by developers who need to access the generated Trento environments from a browser. TRENTO_TEST_CA_KEY is sensitive and should only be stored in GitHub Actions secrets and the team’s password vault.
Variables
| Variable | Description |
|---|---|
|
Azure resource group name |
|
Owner tag for Azure resources |
|
Storage account name |
|
Container with RPMs |
|
Container for Terraform state |
|
SSH public key for VM access |
|
Public certificate of the test certificate authority used to sign Trento HTTPS certificates |
Supported OS Versions
15.4 15.5 15.6 15.7 16.0
Each entry creates a control and target VM pair for that SLES version. The format is {major}.{sp}, for example 15.6 for SLES 15 SP6 and 16.0 for SLES 16.
The manual workflows expose one boolean input per supported version so you can choose the target OS versions directly when launching the workflow.
Usage
Running Tests
-
Go to Actions > Trento Installation Tests
-
Click Run workflow
-
Select the SLES versions you want to deploy to
-
Optionally enable
install_rollingto install packages from the Trento rolling repository from OBS instead of Azure Blob Storage -
Optionally enable
skip_cypressto stop after deployment and health verification -
Click Run workflow
The workflow always recreates the Terraform-managed infrastructure before installing Trento. After installation, Cypress end-to-end tests run against each target node unless skip_cypress is enabled. If Cypress fails, screenshots are uploaded as workflow artifacts.
License
See LICENSE file.