Releases: Azure/sap-automation
v3.20.0.0
SDAF 3.20.0.0 - Release Notes
Release: May 2026 | Terraform: 1.15.1 | azurerm provider: 4.70.0 | Repository:
Azure/sap-automation
What's New
Network Security Perimeter Support
SDAF now supports Azure Network Security Perimeter across all deployment layers. Terraform configurations for the deployer, library, landscape, and SAP system modules have been extended with full NSP association coverage — including storage accounts, Key Vault, App Configuration, Web App, and HANA shared resources. The access mode defaults to Enforced. This is a significant addition for customers with strict network isolation requirements.
Azure Extended Monitoring for SAP VMs
Enhanced monitoring is now deployable via an Ansible task that installs the Azure VM extension for SAP. The extension name is determined dynamically, and a new deploy_monitoring_extension variable controls whether deployment occurs. This replaces the previously removed monitoring extension logic and brings SAP monitoring back in a cleaner, parameterised form.
JAVA Stack Installation Support
SDAF can now automate the full installation of SAP JAVA-based products across SCS, PAS, and Application Server tiers. This includes conditional JAVA/ABAP detection paths for SCS, SAPHANADB and SAPJAVA1 schema handling, TCP parameter net.ipv4.tcp_retries2 configuration, and PD-path replacement for JAVA product IDs. Community contribution from LEGO's SAP team.
HANA-Only Deployments
The deployment playbooks now support HANA-only topologies — scenarios where the database tier is provisioned without a full SAP application stack. This addresses a recurring customer request for staged or standalone HANA deployments.
MSI-Based Deployments
Deployers can now authenticate using Managed Service Identity throughout the deployment lifecycle. The azurerm provider configuration conditionally applies use_msi, the ARM_USE_MSI condition handling has been corrected, and TF_VAR_subscription_id is consistently exported across both installer and remover scripts when MSI is in use.
New SAP Software Acquisition Pipeline
A dedicated pipeline for SAP software download is now available (04-sap-software-download.sh), alongside improvements to download_menu.sh and configuration_menu.sh for BOM-driven acquisition workflows.
Control Plane Scripts — Significant Overhaul
This release includes a comprehensive readability and correctness pass across the V1 and V2 control plane deployment scripts. The changes are structural rather than behavioural, but operators should be aware of several substantive corrections carried within:
TFE_PARALLELISM— The environment variable was misspelled asTF_PARALLELLISMacross multiple scripts. This has been corrected; the previously exported variable was silently ignored by Terraform.--auto-approve— Flag syntax was inconsistent (-auto-approvevs--auto-approve). Standardised throughout.- Exit handling — Fixed
set -e/-o errexitinteraction when scripts are sourced rather than executed directly. - Variable Group save failures — Scripts now exit and reset
step = 0on failure to persist state to ADO Variable Groups, preventing silent deployment state corruption. - TF401019 error — Fixed the ADO
az pipelines variable-groupfailure that occurred whenBUILD_SOURCEDIRECTORYhad changed. azure.azcollection— The Ansible collection is now explicitly registered in bothconfigure_deployer.shand its extension template.- Parameter arrays — Terraform parameter construction now uses arrays throughout, improving readability and reducing quoting-related bugs.
Security & IAM
- Role assignment model updated:
Role Based Access Control Administratorreplaced withUser Access AdministratoracrossNew-SDAFADOProjectandNew-SDAFADOWorkloadZone. Role assignment conditions now useGuidNotEqualsfor specific role definitions. - Network Contributor added to role assignments in multiple functions to support network resource management by the service principal.
- Public network access now defaults to
falseacross all Terraform variable files. Exceptions (e.g., SAP mount storage account) are handled explicitly. user_assigned_identity_idnow validates for a correct Azure resource identifier format, rejecting blank or malformed values early.- App Configuration Data Owner role added in
New-SDAFADOProject. - Key Vault Secrets Officer corrected from the previously misspelled
Secret Officer. - PAT secret management in Key Vault improved, with a corrected count condition to prevent spurious resource creation.
Terraform & Infrastructure
- Terraform upgraded to 1.15.1 (interim versions 1.14.8, 1.14.9, and 1.15.0 were evaluated during the release cycle).
azurermprovider updated to 4.70.0.- A
wait_for_subnetsresource has been added to gate VNET peering on subnet readiness, addressing a race condition in greenfield deployments. try()guard added insap_library/transform.tffor deployer state access, eliminating an invalid-index risk during first-run provisioning.- Retry attempts for Terraform import during
applyhave been increased, reducing failures in environments with eventual-consistency resource registration. deployer_tfstate_keyvariable added for explicit infrastructure state referencing.- Terraform state storage account resource group and subscription IDs are now sourced from disk when the backend is remote, improving reliability in multi-subscription deployments.
- AFS/storage and inventory generation improved: Terraform modules now include storage blob resources for inventory management, and AFS handling logic has been refined across
sap_landscapeandsap_system. - System-assigned identity null values in
output.tfare now handled safely.
Ansible & OS Configuration
/etc/hosts Management
The hosts file role has been refactored to use a dedicated Ansible filter plugin (sap_hosts_filters.py) for generating and managing SAP entries. The plugin is topology-aware, handles scale-out scenarios, avoids duplicate entries, and includes a strip_sap_managed_blocks method for cleaning orphaned SAP-managed blocks. Unit tests are included.
Pacemaker — Scale-Out & iSCSI Fencing
- Concurrent fencing enabled in Pacemaker configuration, with refined
stonithsettings for improved fencing reliability in multi-node topologies. - iSCSI-based fencing on Red Hat: iSCSI fencing support has been extended to RHEL environments, a capability previously limited to SUSE. ACL generation now covers both DB and observer nodes across both distributions, with consolidated host indexing and an explicit observer ACL count computation task.
- Retry logic added for secondary node cluster join operations.
SAPHanaSRprovider path is now configured for both SUSE and scale-out tasks.
BOM Processing
- Microsoft-supplied BOM is now searched across multiple directories, with improved debug output when not found.
- BOM media list aggregation and patch information handling refactored for correctness.
- Validation host list generation is now topology-aware.
- Platform checks added to repository and package handling in BOM tasks.
SAPINST.CD.PACKAGE.CD1parameter added; redundant CD package entries removed.
Oracle
- Oracle Linux 9.7 added to supported distributions.
CV_ASSUME_DISTIDlogic updated across multiple roles to correctly identify distribution from kernel version.- NFS service name determination updated to accommodate additional Oracle Linux versions.
- Stale process and shared memory cleanup in Oracle ASM database installation improved.
General
oinstallgroup limits added to kernel parameter configuration with updated configuration file path.- NVMe detection for swap setup improved: now uses
lsblkand correctly identifies Microsoft NVMe Direct disks. requestslibrary pinned to2.32.5inrequirements.txt.- Sybase disk sizes corrected to 256 GB (hotfix for incorrect sizing configuration).
Platform & Region Additions
| Category | Additions |
|---|---|
| Distributions | New SUSE, Red Hat, Windows, and Oracle Linux entries in sdaf_distros.json |
| Azure Regions | New regions added including indonesiacentral; max_fault_domain_count.json updated |
| SAP IPs | sdaf_urls.json updated with revised SAP connectivity endpoints |
Bug Fixes
| Area | Fix |
|---|---|
| Key Vault secret lookup | Full workload zone name now used for KV secret resolution in sap_system (#1096) |
| SUSE subscription | Condition for suse_subscription_id handling in registration tasks corrected (#1094) |
| Python requirements | requests pinned to 2.32.5; Python version requirement corrected (#1086, #1087) |
| Sybase disk sizing | Disk sizes corrected to 256 GB in sybase_sizes.json (#1065) |
| HANA replication | Retry parameters updated; cluster type settings adjusted |
| iSCSI ACL generation | Scale-out nodes now correctly included in ACL computation |
| Key Vault existence check | Now validates key_vault_id rather than DEPLOYER_KEYVAULT variable |
| Pacemaker Azure fencing | Conditionals for Azure fencing agent updated; job status check in DBLOAD tasks refined |
| Role assignment | role_assignments.tf typo corrected; scope uses correct WorkloadZoneSubscriptionId |
| DBLOAD path | Path variable handling in SAP DB load playbook corrected |
download_directory |
Removed redundant conditional pre-check (#1066) |
suse_subscription_id |
Property is now non-nullable in SystemModel |
*Full commit history available in the [sap-automation...
v3.19.0.0
SDAF 3.19.0.0 - Release Notes
Release: March 2026 | Terraform: 1.14.6 | Repository:
Azure/sap-automation
What's New
HANA Scale-Out & High Availability
This release delivers the most substantial iteration yet on HANA scale-out Pacemaker support, with a focus on correctness and operational reliability in multi-node topologies.
- SAPHanaSR-angi support is now enabled for SLES-based HANA scale-out deployments, including automated hook registration for the HANA controller.
- Pacemaker cluster configuration now conditionally moves the SAP HANA clone to the primary node, gated on both the instance name and the Pacemaker package version — preventing erroneous resource movement in heterogeneous environments.
- Scale-out tasks now execute
StartSystemandStopSystemon both sites, with HANA stop/start operations conditionally applied per node based on instance name. - The
meta failure-timeoutparameter has been added to Pacemaker configuration for improved cluster stability under transient failures. global.inichecks and configuration steps are now included in the scale-out provisioning flow, with cleanup logic to remove the flag when the cluster was not created by the automation framework.- HANA replication stabilization now uses an increased retry count, with explicit
clear host errorstasks added to guard against stale cluster state.
Azure Files NFS (AFS) — Encryption in Transit
- A new
AFS_enable_encryption_in_transitparameter has been introduced acrosssap_landscapeandsap_systemTerraform modules, enabling NFSv4.1-based encrypted mounts for Azure Files shares. - NFS mount options are now set conditionally based on the
fstypevariable, withnolockremoved from AFS mount configurations where it is incompatible. - Export policy rules on Azure NetApp Volumes now dynamically derive the allowed client address space from the virtual network, replacing previously hardcoded values.
- HTTPS traffic enforcement is scoped correctly: enabled for general Azure Storage Accounts, disabled specifically for SAP mount storage accounts.
Oracle Data Guard
- The primary instance mount step is now correctly sequenced before the database open operation, resolving a reliability gap in Data Guard setup.
- Post-processing tasks have been refactored to include explicit database open mode checks and zombie standby process cleanup, improving idempotency.
- Listener and
tnsnamesconfiguration is streamlined in the Data Guard preparation phase. - The
RUNINSTALLERmedia path andMOPatchdirectory references have been corrected across installation tasks. - Dynamic SID handling is now applied in Oracle installation environment variable setup.
Platform Additions
| Platform | Detail |
|---|---|
| Red Hat 10.0 | Base and HA images added to VM-Images.json |
| Indonesia Central | Region support added across configuration files, scripts, and Helper.cs |
Infrastructure & Terraform
- Terraform upgraded to 1.14.6 across all scripts, pipelines, and configuration references.
- Azure and
Microsoft.Identitypackage versions updated. - The
azurermprovider configuration now conditionally setsuse_msianduse_spn, with a corresponding conditional export ofTF_VAR_use_spnfor GitHub Actions workflows using MSI. - A typo in
role_assignments.tfresource references has been corrected. - Role assignment scope and principal ID for HANA DB nodes have been fixed.
- The Terraform plugin cache directory ownership is now corrected during deployer creation, resolving a permission failure on first-run provisioning.
- HANA shared storage account and private endpoint logic has been significantly refactored to correctly handle single vs. multiple HANA shared scenarios, with version-gated count logic (
version >= 19) and corrected index references throughout. - Dynamic identity block added for the Azure Linux VM observer to support managed identities.
Ansible & OS Configuration
SUSE / zypper
- zypper repository installation now uses
community.general.zypperwithauto_import_keysanddisable_gpg_checkto resolve GPG-related hang issues in automated pipelines. ZYPP_LOCK_TIMEOUTis now set to60for package installation and refresh tasks.- Microsoft GPG public keys are downloaded and imported for both RHEL and SUSE before repository configuration.
- Microsoft Production repository URLs have been corrected and standardised across RHEL and SLES versions.
aznfspackage entries removed fromos-packages.yaml; Microsoft Production repository entries removed fromrepos.yamlwhere they were causing conflicts.- SUSE subscription handling now supports BYOS/BYOL images with updated activation commands for public cloud extensions.
- New parameters for SUSE subscription ID and disk controller types added to
SystemModeland related files.
Red Hat
passlibinstallation has been refactored to use the OS package manager with apipfallback, now running correctly for all OS families.compat-openssl11andlibcanberra-gtk2packages commented out due to compatibility concerns.compat-sap-c++package specification updated to use a wildcard for version matching.- RHEL package installation tasks refactored for clarity and idempotency.
General
- NVMe swap dependency installation added for both RHEL and SUSE in swap configuration tasks.
- Installation logs are now persisted as pipeline artifacts.
SYSTEM_ACCESSTOKENparameter added to Ansible run configuration for enhanced ADO authentication.- SAP password generation suffix character set expanded to include additional special characters.
BOM Processing
- BOM registration now appends patch information and handles missing patch definitions with improved logging.
- BOM download conditions include platform checks to ensure correct extraction per OS target.
- Platform code handling added to the BOM template with updated product ID formatting.
- Conditional BOM object display added based on operation type.
Networking & Greenfield / Brownfield
- Virtual network subnet ID resolution now correctly accommodates both greenfield (defined) and brownfield (existing) network segments, resolving issue #1010.
- Key Vault duplicate role assignment conflict in the workload zone has been resolved (#998).
VM Naming
- Name override logic now standardises
virtualmachine_namesvalues to a list of strings. - Generator-produced values correctly override blank JSON keys.
- Original naming generator output is preserved when keys are missing in the name override JSON.
Removed
- SAP CAL Integration has been decommissioned. All associated variables have been removed from
sap-parameters.ymland related resources. - The
AFS_enable_encryption_in_transitvariable has been removed fromLandscapeTemplate.txtandLandscapeModel(superseded by the proper Terraform variable path).
Bug Fixes
| Area | Fix |
|---|---|
| ADO WorkloadZone setup | Resolved multiple silent failure bugs; improved error handling and logging in New-SDAFADOWorkloadZone |
| Service Principal login | Fixed az login for SPN-based authentication |
| Conditional state path | Corrected conditional nesting for state_path assignment in installer script |
| HANA cluster resource move | Fixed condition checking primary instance name for SAP HANA clone movement on RedHat |
| NFS options | Updated NFSv4.1 condition check in AFS configuration |
| AFS mount formatting | Fixed nfs_fs_type formatting and mount options in AFS mount tasks |
| Microsoft repo URL | Corrected RPM download URL for Microsoft packages repository on both RHEL and SUSE |
SDAF 3.18.0.0 Release Notes
SDAF 3.18.0.0 Release Notes
Release Date: December 2025
Version: 3.18.0.0
Overview
This release enhances the SAP Deployment Automation Framework with improved DevOps integration, expanded platform support, and significant reliability improvements. Key additions include GitHub Actions automation, Azure App Configuration integration, Oracle Grid updates and Ubuntu 25.04 support.
What's New
🚀 GitHub Actions Integration
Automated Workflow Setup: New Python-based tooling automates the creation and configuration of GitHub Actions workflows for SDAF deployments. This eliminates manual workflow configuration and reduces setup time from hours to minutes.
Container-Based Execution: Deploy SAP systems using Docker containers in GitHub Actions, providing consistent execution environments and improved portability across development and production pipelines.
Key Benefits:
- One-command workflow initialization
- Automated secret and variable management
- Built-in retry logic and error handling
- Terraform 1.14.0 support out of the box
🔧 Azure App Configuration Support
Centralized Configuration Management: Integration with Azure App Configuration enables centralized parameter storage across control plane and workload zones, replacing scattered configuration files.
Key Benefits:
- Single source of truth for deployment parameters
- Private endpoint support for secure access
- Automated DNS zone management
- Simplified parameter retrieval across deployment stages
🐧 Ubuntu 25.04 Support
Extended Platform Coverage: Deploy and manage SDAF infrastructure on Ubuntu 25.04 ("Oracular Oriole"), ensuring compatibility with the latest LTS release.
Key Benefits:
- Future-proof platform support
- Updated Azure CLI integration
- Terraform 1.14.0 compatibility
- Seamless upgrade path from earlier versions
📊 Enhanced Observability
Improved Deployment Visibility: Azure Portal links now appear directly in deployment outputs, providing instant access to deployed resources without manual navigation.
Better Logging: Enhanced markdown formatting in deployment logs makes it easier to identify configuration details, errors, and successful operations.
Reliability Improvements
Deployment Robustness
- State Management: Improved Terraform state handling eliminates errors caused by empty or corrupted state files
- Key Vault Integration: Consistent key vault reference patterns across all deployment scenarios prevent authentication failures
- Subscription Handling: Automated subscription ID extraction and validation reduce configuration errors
Oracle Database Deployments
- Grid Infrastructure: Enhanced provisioning with proper seperation of concerns for database and grid setup. Enable logical sector size handling
- Observer VMs: Marketplace plan configuration now properly applied to observer VMs, preventing deployment failures
High Availability Configurations
- SUSE Optimization: Reduced default vm.swappiness from 60 to 10 for SUSE HA clusters, improving overall system responsiveness
- Pacemaker Compatibility: Enhanced version detection and resource configuration for pacemaker clustering
- Distribution Detection: Ansible playbooks now have consistent access to distribution variables across all roles
Quality of Life Improvements
Parameter Management
- Refactored parameter passing using modern Python idioms (dict with zip)
- Streamlined APPLICATION_CONFIGURATION_ID retrieval with automatic fallbacks
- Improved environment variable exports across deployment scripts
Error Handling
- Enhanced error messages with actionable guidance
- Added validation checks for common misconfigurations
- Improved debug output with better filtering
Code Maintenance
- Removed unused variables and data blocks
- Eliminated redundant code across multiple modules
- Standardized naming conventions throughout
Security Updates
Dependency Updates
This release includes security updates for multiple dependencies:
- GitHub Actions: Updated to latest versions with security patches
- .NET Components: Major version updates for System.Runtime.Caching, NuGet.Packaging, and dotnet-ef
- Python Libraries: Updated requests library to 2.32.3
- Azure SDK: Updated Azure.ResourceManager.Compute to 1.13.0
Infrastructure Security
- Enhanced authentication handling in Terraform providers
- Improved secret retrieval patterns with proper error handling
- Streamlined role assignment logic for managed identities
Upgrade Instructions
From Previous Versions
- Backup Current State: Ensure Terraform state files are backed up before upgrading
- Update Scripts: Pull latest deployment scripts from the repository
- Validate Terraform: Confirm Terraform 1.14.0 compatibility with custom modules
- Test in Non-Production: Deploy to a test environment first to validate behavior
New Installations
Follow the standard SDAF installation procedure. This version includes all improvements automatically.
Configuration Changes Required
None - This release is fully backward compatible. Existing parameter files work without modification.
Known Issues
- Container Images: Docker support for GitHub Actions requires container registry access configuration
- App Configuration: Private endpoint creation may take up to 120 seconds in some regions
Breaking Changes
None - All existing deployments can upgrade in place without modifications.
Deprecation Notices
Getting Started
GitHub Actions Setup
cd deploy/scripts/py_scripts/SDAF-GitHub-Actions
python New-SDAFGitHubActions.pyAzure App Configuration Integration
App Configuration is automatically provisioned when deploying landscapes with v2 scripts. No additional configuration required.
Ubuntu 25.04 Deployment
Deploy using standard SDAF procedures. Ubuntu version is detected automatically.
Documentation Updates
- New GitHub Actions setup guide
- Updated Azure App Configuration integration documentation
- Enhanced troubleshooting guides for common deployment scenarios
Support
For issues, questions, or feature requests:
- GitHub Issues: https://github.com/Azure/sap-automation/issues
- Documentation: https://aka.ms/sdaf
Full Changelog: View detailed changelog
Contributors: Special thanks to Kimmo Forss, Nadeen Noaman, Hemanth Damecharla, and all community contributors
Hotfix 3.17.0.1 release
What's Changed
Pacemaker fixes for scale-up scenarios
Control Plane removal script
Support for RedHat 10
Full Changelog: v3.17.0.0...v.3.17.0.1
v3.17.0.0
Release Notes v3.17.0.0
Table of Contents
- Overview
- Major Enhancements
- Improvements
- Bug Fixes
- Dependency Updates
- Breaking Changes
- Upgrade Notes
Overview
Version 3.17.0.0 introduces comprehensive Oracle Data Guard capabilities with ASMLib v3 support, enhanced NVMe disk handling for Azure VMs, and substantial improvements to SAP HANA scale-out high availability configurations. The release also modernizes Azure DevOps integration with full Managed Identity support and refactors Terraform modules to align with the latest Azure provider standards.
Key highlights include Oracle Data Guard automation, improved disk management for ZRS backup scenarios, enhanced pipeline orchestration, and critical fixes for network and storage configurations in complex SAP landscapes.
Major Enhancements
Oracle Database Support
Oracle Data Guard Automation
-
Full Data Guard Configuration: Comprehensive automation for Oracle Data Guard primary and standby database configurations, including:
- Automated standby database creation with RMAN restore scripts
- Service creation with high availability triggers
- Log transport configuration with protection modes
- Broker setup and verification with enhanced error handling
- Stabilization procedures during finalization processes
-
Oracle ASMLib v3 Support: Added support for the latest ASMLib version with improved disk management capabilities
-
Oracle UEK7 Compatibility: Full support for Oracle Unbreakable Enterprise Kernel 7, ensuring compatibility with the latest Oracle Linux distributions
-
Enhanced Environment Management: Sophisticated handling of
ORACLE_HOME,ORACLE_SID, andORACLE_BASEenvironment variables across all Oracle playbooks -
Improved Error Detection: Advanced checks for ORA-specific errors, zombie standby processes, and orphaned shared memory segments
-
Post-Deployment Optimization: Enhanced post-processing tasks including:
- ASM configuration validation
- Database load balancer health checks
- Shared memory cleanup procedures
- SSFS file handling and verification
Enhanced NVMe Support
Azure NVMe Disk Management
-
Backward Compatibility: Enhanced udev rules that work seamlessly with older distributions including SUSE 15 SP3 and RHEL 8.8
-
Improved Device Identification: Advanced namespace ID (NSID) detection with multiple fallback mechanisms:
- Primary detection via
udevadm - Fallback extraction from
ID_PATH - Direct reading from
/sys/class/block/<device>/nsid
- Primary detection via
-
LUN Mapping Calculator: Enhanced LUN-to-device mapping with improved accuracy across different Azure VM configurations
-
Unified Cross-OS Support: Consistent NVMe handling scripts for both RHEL and SUSE platforms with standardized task naming
-
Enhanced Diagnostics: Improved debug output and preflight checks for NVMe device detection and configuration
SAP HANA Scale-Out High Availability
Scale-Out Cluster Enhancements
-
Improved Cluster Resource Management: Refined Pacemaker configuration for SAP HANA scale-out scenarios with proper resource constraints
-
Observer VM Integration: Enhanced observer VM configuration with proper shared disk attachment and backend pool associations
-
Shared Storage Management: Improved handling of observer shared disks in high availability configurations
-
Directory Permissions: Proper permission settings for
/hana/shareddirectory in scale-out deployments -
Streamlined Installation: Simplified preparation tasks for SAP HANA scale-out installations with reduced manual intervention
Managed Identity Integration
Azure DevOps Managed Identity Support
-
Full MI Authentication: Complete Managed Identity support in Azure DevOps pipelines, eliminating the need for Service Principal secrets
-
New PowerShell Functions:
Get-SDAFUserAssignedIdentity: Retrieve user-assigned identities from AzureSet-AdoManagedIdentityCredentials: Configure MI credentials in variable groupsSet-AdoSPNCredentials: Configure SPN credentials with improved validation
-
Enhanced Pipeline Parameters:
- Added
ManagedIdentityIdparameter (mandatory when using MI authentication) - Improved
ControlPlaneSubscriptionIdparameter handling - Better role assignment logic with comprehensive logging
- Added
-
Variable Group Migration: Utility scripts to migrate from SPN to Managed Identity authentication:
Upgrade-ControlPlaneVariableGroup.ps1Upgrade-WorkloadZoneVariableGroup.ps1Copy-AzDevOpsVariableGroupVariablefunction for variable migration
Improvements
Infrastructure and Terraform
Provider Compatibility Updates
-
Migrated to latest Azure provider property names to eliminate deprecation warnings:
- Key Vault:
enable_rbac_authorization→rbac_authorization_enabled - Virtual Machines:
enable_automatic_updates→automatic_updates_enabled - Load Balancers:
enable_floating_ip→floating_ip_enabled - Azure NetApp Files:
protocols_enabled→protocol
- Key Vault:
-
Enhanced Role Assignments: Added Key Vault Administrator and Secrets Officer roles with appropriate conditions for improved security posture
-
Resource Naming Flexibility: Introduced
custom_random_idvariable for resource name suffixes, removing dependencies on DEPLOYER_RANDOM_ID and LIBRARY_RANDOM_ID -
Improved Variable Handling: Enhanced handling of unset/null variables with better fallback logic throughout Terraform modules
Network Configuration Refinements
- Refactored subnet ID handling across all modules for improved clarity and error prevention
- Enhanced storage subnet output with robust fallback handling
- Optimized NSG count logic for application and web subnets
- Fixed subnet CIDR value trimming in output files
- Improved conditional checks for landscape_tfstate keys
Key Vault Management
- Refactored role assignment dependencies to reduce redundancy
- Enhanced access policy conditions with permission assignment options
- Improved secret existence checks using user ARM ID
- Streamlined secret name assignments using local variables
Azure DevOps Pipeline Enhancements
Pipeline Architecture
-
Terraform Version Upgrade: Bumped from 1.12.2 to 1.13.3 across all deployment scripts
-
Improved Parameter Management: Comprehensive refactoring of deployment YAML files with enhanced parameter definitions and validation
-
Ansible Installation Control: Added dedicated Ansible installation script with:
- Version pinning for
ansible-core - Specified versions for
community.generalcollection - Conditional JMESPath installation logic
- Version pinning for
-
Variable Group Standardization:
- Consistent use of DEPLOYER_ENVIRONMENT for variable group construction
- Fixed VARIABLE_GROUP_ID usage in system deployment pipelines
- Removed unused DEPLOYER_KEYVAULT variable
Script Improvements
- Enhanced error handling with proper return codes instead of exit calls
- Improved Azure login visibility controls with better debugging
- Added Azure account information display on Terraform failures
- Streamlined installer script calls with comprehensive error checking
Disk and Storage Management
Enhanced Backup Disk Handling
- ZRS storage type detection for backup disks with automatic zone assignment
- Intelligent zone placement logic when using ZRS backup disks
- Improved proximity placement group logic for Windows VMs
Standardized IOPS/MBPS Configuration
- Unified configuration approach for both UltraSSD_LRS and PremiumV2_LRS disk types
- Consistent IOPS and throughput settings across all disk configurations
- Optimized Ansible disk definitions for better performance
Sybase Storage Configuration
- Reorganized storage definitions for Sybase 512, 1024, and 2048 configurations
- Added accelerated networking support
- Corrected lun_start values for proper disk alignment
Network Configuration
Subnet Management
- Comprehensive refactoring of subnet ID handling with improved error prevention
- Enhanced fallback logic for storage subnet outputs
- Better handling of landscape_tfstate keys in conditional checks
- Simplified NSG assignment logic for clarity
DNS and Private Link
- Refactored DNS zone link count conditions for improved reliability:
- vault_agent DNS zone links
- blob_agent DNS zone links
- vnet_mgmt_blob-agent DNS zone links
- Enhanced readability and maintainability of DNS configurations
Bug Fixes
Terraform Configuration Fixes
- Fixed disk attachment references for observer VMs in outputs.tf
- Corrected observer shared disks output to reference azurerm_linux_virtual_machine
- Fixed variable name consistency in disk output definitions
- Resolved syntax errors in subnet ID parsing
- Corrected return value handling in Terraform plan execution
Pipeline and Script Fixes
- Fixed VARIABLE_GROUP vs VARIABLE_GROUP_ID usage in 03-sap-system-deployment
- Resolved integer conversion errors in variable group operations
- Fixed control plane name constru...
v3.16.0.2
📦 Release Notes v3.16.0.2 – Managed DevOps & Install Enhancements
Table of Contents
- #overview
- #new-features
- #suse-linux-support
- #rhel-linux-support
- #improvements
- #pacemaker-and-sbd-configuration
- #error-handling-and-logging
- #sap-and-package-management
- #deployment-pipeline-enhancements
- #bug-fixes
- #miscellaneous
Overview
This is a hotfix for v3.16.0.1 and fixes issues with deploying some of the components.
This release introduces comprehensive support for the new SLES and RHEL for SAP Applications distribution, alongside critical updates to Pacemaker and SBD configurations for improved cluster reliability. It also enhances error handling in custom Python filters, refines SAP-related tasks, and standardizes deployment pipelines with improved tooling and variable management. These changes collectively improve system robustness, maintainability, and deployment consistency across environments.
🆕 New Features
-
SUSE Linux Support
- Added support for new SUSE OS release across package, repository, and variable definitions.
- Updated conditional logic in cluster and mount tasks to ensure compatibility with the new distribution.
-
RedHat Support
- Added support for RHEL 9.6 OS release across package, repository, and variable definitions.
🔧 Improvements
Pacemaker and SBD Configuration
- Increased
stonith-timeoutfrom 144 to 210 seconds for both RedHat and SUSE roles to improve fencing reliability. - Refactored SBD configuration:
- Replaced static delay start with OS-specific values.
- Moved timeout and dependency settings to systemd override files for better maintainability.
Error Handling and Logging
- Enhanced exception handling in custom Python filter plugins:
- Added detailed exception messages and stack traces.
- Introduced type checks to prevent runtime errors.
SAP and Package Management
- Updated SAP note references for accuracy.
- Corrected symlink creation for
compat-sap-c++version 13. - Removed unnecessary installation of
dbus-1-pythonin the iSCSI server role.
Deployment Pipeline Enhancements
-
Terraform Installation
- Added
TerraformInstaller@1task to pipelines:01-deploy-control-plane.yaml02-sap-workload-zone.yaml03-sap-system-deployment.yaml04-sap-software-download.yaml05-DB-and-SAP-installation.yaml
- Ensures Terraform is installed before execution.
- Added
-
Key Vault and Subscription Variable Standardization
- Replaced
$(Preparation.VAULT_NAME)with$(KEYVAULT)for clarity. - Updated
$(ARM_SUBSCRIPTION_ID)to$(Preparation.ARM_SUBSCRIPTION_ID)for consistency.
- Replaced
-
Ansible Installation Reinstatement
- Re-enabled and updated inline Bash script for installing
ansible-coreand required collections. - Applied changes to
05-DB-and-SAP-installation.yamland04-sap-software-download.yaml.
- Re-enabled and updated inline Bash script for installing
-
Environment Cleanup
- Removed unused
DEPLOYER_KEYVAULTvariable from01-deploy-control-plane.yaml.
- Removed unused
🐞 Bug Fixes
- Corrected undefined variable issues in the
chronyrole related to Python interpreter selection. - Improved compatibility and linting accuracy by updating Ansible and Ansible-Lint versions in GitHub Actions workflow.
📄 Miscellaneous
- Updated GRUB configuration tasks for RHEL 8.x to improve reliability and ensure consistent boot behavior.
Full Changelog: v3.16.0.1...v3.16.0.2
v3.16.0.1
📦 Release Notes v3.16.0.1 – Managed DevOps & Install Enhancements [Use v3.16.0.2]
Table of Contents
- #overview
- #new-features
- #improvements
- #suse-linux-support
- #pacemaker-and-sbd-configuration
- #error-handling-and-logging
- #sap-and-package-management
- #deployment-pipeline-enhancements
- #bug-fixes
- #miscellaneous
Overview
This release introduces comprehensive support for the new SUSE Linux Enterprise Server for SAP Applications distribution, alongside critical updates to Pacemaker and SBD configurations for improved cluster reliability. It also enhances error handling in custom Python filters, refines SAP-related tasks, and standardizes deployment pipelines with improved tooling and variable management. These changes collectively improve system robustness, maintainability, and deployment consistency across environments.
🆕 New Features
- SUSE Linux Support
- Added support for new SUSE OS release across package, repository, and variable definitions.
- Updated conditional logic in cluster and mount tasks to ensure compatibility with the new distribution.
🔧 Improvements
Pacemaker and SBD Configuration
- Increased
stonith-timeoutfrom 144 to 210 seconds for both RedHat and SUSE roles to improve fencing reliability. - Refactored SBD configuration:
- Replaced static delay start with OS-specific values.
- Moved timeout and dependency settings to systemd override files for better maintainability.
Error Handling and Logging
- Enhanced exception handling in custom Python filter plugins:
- Added detailed exception messages and stack traces.
- Introduced type checks to prevent runtime errors.
SAP and Package Management
- Updated SAP note references for accuracy.
- Corrected symlink creation for
compat-sap-c++version 13. - Removed unnecessary installation of
dbus-1-pythonin the iSCSI server role.
Deployment Pipeline Enhancements
-
Terraform Installation
- Added
TerraformInstaller@1task to pipelines:01-deploy-control-plane.yaml02-sap-workload-zone.yaml03-sap-system-deployment.yaml04-sap-software-download.yaml05-DB-and-SAP-installation.yaml
- Ensures Terraform is installed before execution.
- Added
-
Key Vault and Subscription Variable Standardization
- Replaced
$(Preparation.VAULT_NAME)with$(KEYVAULT)for clarity. - Updated
$(ARM_SUBSCRIPTION_ID)to$(Preparation.ARM_SUBSCRIPTION_ID)for consistency.
- Replaced
-
Ansible Installation Reinstatement
- Re-enabled and updated inline Bash script for installing
ansible-coreand required collections. - Applied changes to
05-DB-and-SAP-installation.yamland04-sap-software-download.yaml.
- Re-enabled and updated inline Bash script for installing
-
Environment Cleanup
- Removed unused
DEPLOYER_KEYVAULTvariable from01-deploy-control-plane.yaml.
- Removed unused
🐞 Bug Fixes
- Corrected undefined variable issues in the
chronyrole related to Python interpreter selection. - Improved compatibility and linting accuracy by updating Ansible and Ansible-Lint versions in GitHub Actions workflow.
📄 Miscellaneous
- Updated GRUB configuration tasks for RHEL 8.x to improve reliability and ensure consistent boot behavior.
v3.16.0.1 by @devanshjainms in #807
Full Changelog: v3.16.0.0...v3.16.0.1
v3.16.0.0
Release v3.16.0.0
Overview
This release delivers substantial enhancements to NVMe support for Azure VMs, particularly on RHEL and SUSE platforms. It introduces improved Terraform automation, refined Azure Key Vault integration, and more robust deployment scripting. The update also includes critical fixes, improved error handling, and better metadata extraction. Notably, this release incorporates support for STONITH SBD fencing in RHEL clusters, expanded OS compatibility, and automation improvements for disk preparation and validation.
🚀 New Features
NVMe Support Enhancements
- Enhanced GRUB configuration and NVMe timeout handling.
- Streamlined preflight checks with improved debug output.
- Improved detection of NVMe modules and reboot requirements across RHEL and SUSE.
STONITH SBD Configuration for RHEL
- Integrated logic to support SBD-based fencing in RHEL clusters using Azure shared disks.
- Addressed service dependencies (
iscsi,iscsid,sbd) and ensured proper enablement on boot. - Improved cluster initialization logic and clarified configuration steps for zonal deployments using ZRS disks.
- Documented fallback strategies and DR region reconfiguration steps for SBD devices.
- Updated test automation logic to reflect correct node names and handle skipped test cases gracefully.
Other enhancements
- Azure Metadata Retrieval
- Added tasks to extract Subscription ID, Resource Group Name, and VM Name from Azure metadata.
- Terraform Enhancements
- Exported
TF_VAR_subscription_idfor improved configuration. - Introduced new configurations for M832 and M896 VM series.
- Exported
- SDAFWebApp Initialization
- Bootstrapped with .NET 8.0 and essential package references.
🔧 Improvements
OS Compatibility and Automation
- Developed cross-OS scripts to automate NVMe preparation, including initramfs updates, FS tab validation, and GRUB parameter checks.
- Enhanced udev rules to support namespace ID (NSID) detection and LUN mapping, resolving compatibility issues on older OS versions like SUSE 15 SP3 and RHEL 8.8.
- Introduced fallback logic to extract NSID from
ID_PATHor/sys/class/block/<device>/nsidwhenudevadmfails to return expected values.
Deployment Scripts
- Improved Azure login handling and environment variable management.
- Enhanced error reporting and debug logging across scripts.
- Streamlined control plane cleanup and variable group handling.
Key Vault Integration
- Refined retrieval logic using Azure Graph API.
- Improved secret existence checks and error handling.
Terraform State Management
- Refactored state resource ID retrieval.
- Simplified output definitions and variable assignments.
Logging and Debugging
- Replaced echo statements with structured banners.
- Improved traceability in secret retrieval and deployment stages.
🐞 Bug Fixes
- Corrected key vault existence checks using user ARM ID.
- Fixed output variable naming inconsistencies (
random_identifier→random_id). - Resolved GRUB configuration and NVMe timeout logic issues.
- Addressed Terraform apply failure handling.
- Corrected module names and region paths in SDAFUtilities.
- Fixed string comparison syntax and removed redundant flags.
🛠 Infrastructure & Configuration
- Provider Versions
- Updated
azurermto 4.35.0 andazapito 2.5.0.
- Updated
- Variable Management
- Improved handling of unset/null variables.
- Streamlined variable group assignments and cleanup.
- Script Enhancements
- Added support for MSI and ARM variables.
- Improved script permissions and execution flow.
- Repository Maintenance
- Removed obsolete scripts and variables.
📄 Miscellaneous
- Added documentation for RHEL 8.6 ambiguity.
- Refactored modules for improved readability and maintainability.
- Upgraded GitHub Actions and Azure SDK packages via Dependabot.
v3.15.0.0
Release Notes – Version v3.15.0.0
Overview
This release introduces enhancements across automation pipelines, SAP installation playbooks, and platform compatibility. It includes security updates, improved error handling, support for new OS versions, and refined configuration logic.
Key Enhancements
🔐 Security & Compliance
- Updated
step-security/harden-runnerto v2.12.1 across all GitHub workflows. - Upgraded
codeql-actionto v3.29.0 for improved static analysis. - Enforced CRL validation (
SAPINST_ENFORCE_CRL=true) across SAP installation playbooks for enhanced certificate handling (SAP Note: 3207613).
⚙️ SAP Installation Improvements
- Refactored error handling in SAP installation playbooks to use
select('search', 'ERROR')for cleaner diagnostics. - Added support for
web_sidadm_uidin Web Dispatcher templates. - Improved conditional logic for Oracle observer and shared home tasks.
- Enhanced mount logic for AFS and ANF with better validation and fallback handling.
📦 Dependency Updates
- Updated multiple Azure SDK packages and Microsoft Identity libraries to latest stable versions.
- Upgraded Python setup and dependency review actions in CI workflows.
🧪 Testing & Validation
- Introduced
cibadmincluster readiness check for Pacemaker on SUSE. - Improved SAPHanaSR hook deployment and validation for scale-out clusters on RHEL.
🖥️ Platform & OS Support
- Added support for:
- Configurations based on RedHat 9.4.
- RedHat 8.10 in cluster configuration.
- SUSE SLES_SAP 15.6 in SAPHanaSR and pacemaker roles.
🧰 Tooling & Automation
- Added
TerraformInstaller@1to pipelines for dynamic Terraform provisioning. - Refined Azure DevOps pipeline environment variables for consistency and clarity.
- Improved GitHub Actions for Ansible linting and Trivy scanning.
Bug Fixes
- Corrected logic for observer tier detection in Oracle deployments.
- Fixed mountpoint handling in
/etc/fstabfor HANA scale-out configurations. - Addressed inconsistencies in SAPINST command formatting across roles.
Breaking Changes
- CRL enforcement is now enabled by default. For air-gapped environments, this may require manual override.
- Deprecated legacy error line extraction logic in favor of
select('search', 'ERROR').
Upgrade Notes
- Ensure all pipeline variables are updated to reflect new environment variable names.
- Upgrade steps for Azure DevOps, rename the "CP_" and "WL_" prefixes for all variables in the variable groups. CP_ARM_SUSCRIPTION_ID -> ARM_SUSCRIPTION_ID
- Review CRL enforcement implications for your deployment environment.
- Validate compatibility with new OS versions if applicable.
v3.14.1.0
What's Changed
This release includes several changes across multiple files to improve the functionality and configuration of the deployment scripts. The key changes include updates to Ansible playbooks and templates for SAP and Oracle installations, as well as minor adjustments to YAML configuration files.
Summary of Changes
- Ensure Terraform commands in shell scripts return the correct exit code
- An option has been added to each Terraform module to allow enabling Encryption at Host via
encryption_at_host_enabledvariable. - Corrected directory ownership assignment for
/hana/*directories from non-existent{{ sidadm }}to the proper{{ hdbadm }}user ID - Preserved
ARM_SUBSCRIPTION_IDthroughout authentication processes when using Managed Service Identity (MSI) - Fixed remediation logic for storage accounts to support provider upgrades with
data_plane_availablesetting - Refactored
ReplaceResourceInStateFilefunction to accept direct input rather than relying on external context - Enhanced robustness for workload zones by improving resource property handling for zones not recently redeployed
- Resolved infrastructure deployment failures in SYBASE standalone deployments when
enable_app_tier_deploymentis set to false - Fixed circular mount issues of
/sapmntin standalone deployments usingNFS_provider = NONEwithsupported_tiersfor SCS and SYBASE
Acknowledgements
Full Changelog: v3.14.0.0...v3.14.1.0