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:

  1. Provision Azure VMs (control and target nodes) using Terraform

  2. Register SUSE machines and activates required modules

  3. Download release candidate RPMs from Azure Blob Storage

  4. Set up local RPM repositories on target machines

  5. Install the Trento Ansible collection on control machines

  6. Run the suse.trento.site Ansible playbook to install Trento & Trento agent (Agents are installed on same machine as Trento server).

  7. Verify Healthcheck endpoints in every Trento instance from the runner.

  8. Optionally destroy the infrastructure after tests

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

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.

GitHub Configuration

Secrets

Secret Description

AZURE_CREDENTIALS

Azure service principal credentials (JSON)

PRIVATE_SSH_KEY_CONTENT

SSH private key for VM access

AZURE_BLOB_STORAGE_SAS_TOKEN

SAS token for blob storage access

SUSE_REGISTRATION_CODE

SUSE subscription registration code

SUSE_REGISTRATION_EMAIL

SUSE subscription email

WEB_ADMIN_PASSWORD

Trento web admin password

Variables

Variable Description

AZURE_RESOURCE_GROUP

Azure resource group name

AZURE_OWNER_TAG

Owner tag for Azure resources

AZURE_BLOB_STORAGE

Storage account name

AZURE_BLOB_STORAGE_CONTAINER

Container with RPMs

AZURE_BLOB_STORAGE_TF_STATE_CONTAINER

Container for Terraform state

PUBLIC_SSH_KEY_CONTENT

SSH public key for VM access

SUPPORTED_OS_VERSIONS

Newline-separated list of SLES versions to test (see below)

Supported OS Versions Configuration

The SUPPORTED_OS_VERSIONS variable defines which SLES versions to provision VMs for:

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.

Usage

Running Tests

  1. Go to Actions > Trento Installation Tests

  2. Click Run workflow

  3. Optionally check "Destroy infrastructure after tests"

  4. Click Run workflow

Cleanup

To destroy all provisioned infrastructure:

  1. Go to Actions > Terraform Destroy

  2. Click Run workflow

Supported SLES Versions

  • SLES 15 SP4

  • SLES 15 SP5

  • SLES 15 SP6

  • SLES 15 SP7

  • SLES 16

License

See LICENSE file.