Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 152 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0] - 2026-04-03

### Added

#### Documentation - April 2026
- **[2026-04-03]** Comprehensive AAP 2.6 components reference guide ([#36](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/36))
- Complete deployment reference for Gateway, Controller, Hub, and EDA
- Database architecture documentation (4 databases on 1 PostgreSQL instance)
- Advanced HA configuration example with replicas and resource limits
- Verification procedures and troubleshooting guide
- Scaling guidance and resource sizing recommendations
- **[2026-04-03]** AAP 2.6 deployment validation reports ([#35](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/35))
- Comprehensive 18-section validation report against Red Hat documentation
- Executive summary with deployment readiness checklist
- 100% compliance validation (14/14 requirements passed)
- Real deployment validation with CloudNativePG PostgreSQL cluster
- **[2026-04-03]** AAP OpenShift external DB deployment report ([#34](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/34))
- Documented successful 10-pod deployment (Gateway, Controller, Redis)
- Environment-specific deployment insights
- Skills symlink for easier access
- **[2026-04-03]** Reorganized scripts documentation with comprehensive guides ([#33](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/33))
- Scripts operations guide with deployment and DR workflows
- Detailed scripts library reference for all shared functions
- Scripts hooks and CI/CD integration guide
- **[2026-04-02]** HAProxy/PgBouncer architectural analysis ([#32](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/32))
- Comprehensive routing architecture analysis for EDB PostgreSQL
- Comparison of HAProxy vs PgBouncer for AAP workloads
- Connection pooling and health check configurations
- Performance and scalability considerations
- PostgreSQL replication test reports
- Cross-cluster replication validation
- RTO/RPO measurement results
- Streaming replication verification
- Reports directory structure with README
- Organized validation and deployment reports
- Clear categorization and indexing

#### Documentation - March 2026
- **[2026-03-31]** Improved main README with badges, prerequisites, and community links ([#31](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/31))
- Added status badges (License, Status, Last Updated)
- Enhanced prerequisites section with detailed requirements
- Improved quick start navigation and structure
- **[2026-03-31]** AAP 2.6 containerized DR architectures and validation ([#29](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/29))
- Enterprise DR architecture documentation
- Containerized growth architecture patterns
- Architecture validation reports
- **[2026-03-31]** Comprehensive Quick Start Guide ([#25](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/25))
- OpenShift deployment path (15 minutes)
- RHEL with TPA deployment path (20 minutes)
- Local CRC testing path (30 minutes)
- Prerequisites and troubleshooting sections
- **[2026-03-31]** Refactored architecture into dedicated file ([#26](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/26))
- Moved architecture details to docs/architecture.md
- Improved documentation organization and navigation
- Enhanced diagrams and technical depth
- **[2026-03-31]** Documentation infrastructure improvements
- Comprehensive documentation index (docs/INDEX.md)
- Fixed cross-references across all documentation
- Standardized terminology for EDB Postgres on OpenShift
- Added table of contents and navigation aids
- **[2026-03-27]** Standardized namespace and cluster naming conventions
- Updated all documentation with consistent naming
- Clarified deployment architecture across datacenters
- Improved configuration examples
- **[2026-03-25]** Enhanced OpenShift/Kubernetes deployment documentation
- Improved deployment instructions and prerequisites
- Added Trusted Postgres Architect (TPA) integration guide
- Expanded troubleshooting guidance

#### Features
- **[2026-03-31]** Added Apache 2.0 license file ([#27](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/27))
- Added proper open-source licensing
- Included license headers guidance

### Changed

- **[2026-04-03]** Clarified AAP 2.6 parent CR pattern in all deployment documentation ([#35](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/35))
- Updated to reference AnsibleAutomationPlatform parent CR instead of individual component CRs
- Added specific field paths for all four component database secrets
- Enhanced inline documentation for database connection parameters

### Fixed

#### Bug Fixes - March 2026
- **[2026-03-31]** Renamed .github/README.md to WORKFLOWS.md to fix main README display ([#30](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/30))
- GitHub was showing .github/README.md instead of root README.md
- Resolved by renaming to WORKFLOWS.md
- **[2026-03-31]** Fixed CloudNativePG operator deployment issues ([#28](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/28))
- Resolved operator installation failures
- Fixed cluster bootstrap configuration
- Corrected storage class references
- **[2026-03-31]** Improved README formatting for better GitHub rendering ([#24](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing/pull/24))
- Fixed Markdown rendering issues
- Improved table formatting
- Enhanced code block syntax
- **[2026-03-31]** Resolved YAML validation and Kustomize build failures
- Fixed YAML syntax errors across all manifests
- Corrected Kustomize configuration issues
- Validated all YAML files pass CI/CD checks
- **[2026-03-31]** Resolved ShellCheck warnings in all shell scripts
- Fixed quote handling and variable expansion
- Corrected shellcheck violations
- Improved script robustness
- **[2026-03-31]** Fixed YAML indentation and security scan issues
- Corrected indentation across all YAML files
- Resolved security scan findings
- Enhanced secret handling
- **[2026-03-31]** Resolved CI/CD validation failures
- Fixed GitHub Actions workflow issues
- Corrected linting and validation steps
- Ensured all checks pass

## Validation Status

### AAP 2.6 Compliance
- ✅ **Overall Compliance**: 100% (14/14 requirements validated)
- ✅ **Parent CR Pattern**: Correct use of AnsibleAutomationPlatform CR
- ✅ **Platform Gateway**: Properly configured with dedicated database
- ✅ **External PostgreSQL**: Four databases correctly configured
- ✅ **Operator Installation**: Correct stable-2.6 channel
- ✅ **Security**: Two-layer password validation, no hardcoded credentials

### Infrastructure Validation
- ✅ **CloudNativePG Integration**: Verified with 2-instance cluster
- ✅ **External Database Configuration**: 4 databases on 1 PostgreSQL instance
- ✅ **Replication**: Cross-cluster streaming replication validated
- ✅ **CI/CD Pipelines**: All YAML validations passing
- ✅ **Security Scans**: All ShellCheck and security issues resolved

### Deployment Verification
- ✅ **OpenShift Deployment**: Successfully deployed on OpenShift 4.12+
- ✅ **Gateway**: 2 pods operational
- ✅ **Controller**: 7 pods operational (3 web, 4 task)
- ✅ **Redis**: 1 pod operational
- ✅ **PostgreSQL**: 2-instance cluster with replication

## Links

- [GitHub Repository](https://github.com/Red-Hat-EnterpriseDB-Testing/EDB_Testing)
- [Documentation Index](docs/INDEX.md)
- [Quick Start Guide](docs/quick-start-guide.md)
- [Contributing Guide](CONTRIBUTING.md)
- [License](LICENSE)
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
![Status](https://img.shields.io/badge/Status-Production--Ready-green)
![Last Updated](https://img.shields.io/badge/Updated-March%202026-blue)
![Last Updated](https://img.shields.io/badge/Updated-April%202026-blue)
[![Changelog](https://img.shields.io/badge/Changelog-Keep%20a%20Changelog-orange.svg)](CHANGELOG.md)

> **🚀 NEW: [Quick Start Guide](docs/quick-start-guide.md)** - Deploy in 15-30 minutes
> Choose your path: [OpenShift (15 min)](docs/quick-start-guide.md#quick-start-openshift-15-minutes) | [RHEL with TPA (20 min)](docs/quick-start-guide.md#quick-start-rhel-with-tpa-20-minutes) | [Local CRC (30 min)](docs/quick-start-guide.md#quick-start-local-testing-with-crc-30-minutes)
Expand All @@ -15,6 +16,7 @@
- [Prerequisites](#prerequisites)
- [Quick Links](#quick-links)
- [Repository Structure](#repository-structure)
- [Changelog](CHANGELOG.md)

## Overview

Expand Down Expand Up @@ -67,6 +69,7 @@ Before getting started, ensure you have:
- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions

### Community
- **[📝 Changelog](CHANGELOG.md)** - All notable changes to this project
- **[Contributing Guide](CONTRIBUTING.md)** - How to contribute to this project
- **[License](LICENSE)** - Apache 2.0 License

Expand Down
145 changes: 51 additions & 94 deletions docs/aap-containerized-enterprise-dr-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -506,43 +506,57 @@ user.email=ops@example.com

## 4. AAP Containerized Installer Configuration

### 4.1 AAP Inventory File (DC1)
### 4.1 AAP Unified Inventory File (Multi-Datacenter)

**Based on Red Hat AAP 2.6 Container Enterprise Topology**

```ini
# /opt/aap/inventory-dc1
# /opt/aap/inventory
# Red Hat Ansible Automation Platform 2.6 - Container Enterprise Topology
# Multi-Datacenter Active/Passive Extension
# Multi-Datacenter Active/Passive Configuration

# Platform Gateway (2 VMs with colocated Redis)
# Platform Gateway (4 VMs - 2 per DC with colocated Redis)
[automationgateway]
gateway1-dc1.example.com
gateway2-dc1.example.com
gateway1-dc2.example.com
gateway2-dc2.example.com

# Automation Controller (2 VMs - dedicated)
# Automation Controller (4 VMs - 2 per DC, dedicated)
[automationcontroller]
controller1-dc1.example.com
controller2-dc1.example.com
controller1-dc2.example.com
controller2-dc2.example.com

# Automation Hub (2 VMs with colocated Redis)
# Automation Hub (4 VMs - 2 per DC with colocated Redis)
[automationhub]
hub1-dc1.example.com
hub2-dc1.example.com
hub1-dc2.example.com
hub2-dc2.example.com

# Event-Driven Ansible (2 VMs with colocated Redis)
# Event-Driven Ansible (4 VMs - 2 per DC with colocated Redis)
[automationeda]
eda1-dc1.example.com
eda2-dc1.example.com
eda1-dc2.example.com
eda2-dc2.example.com

# Redis (colocated on gateway, hub, and EDA nodes - 6 VMs total for HA)
# Redis (colocated on gateway, hub, and EDA nodes - 12 VMs total across both DCs)
[redis]
gateway1-dc1.example.com
gateway2-dc1.example.com
hub1-dc1.example.com
hub2-dc1.example.com
eda1-dc1.example.com
eda2-dc1.example.com
gateway1-dc2.example.com
gateway2-dc2.example.com
hub1-dc2.example.com
hub2-dc2.example.com
eda1-dc2.example.com
eda2-dc2.example.com

[all:vars]
# Common variables
Expand All @@ -558,117 +572,60 @@ redis_mode='standalone' # Use 'cluster' for Redis HA (optional)

# Platform Gateway Configuration
gateway_admin_password='<set your own>'
gateway_pg_host='10.1.1.20' # HAProxy database router (routes to PostgreSQL VIP 10.1.2.100)
gateway_pg_port='5432'
gateway_pg_database='automationgateway'
gateway_pg_username='aap'
gateway_pg_password='<set your own>'
gateway_main_url='https://aap.example.com'

# Automation Controller Configuration
controller_admin_password='<set your own>'
controller_pg_host='10.1.1.20' # HAProxy database router
controller_pg_port='5432'
controller_pg_database='awx'
controller_pg_username='aap'
controller_pg_password='<set your own>'

# Automation Hub Configuration
hub_admin_password='<set your own>'
hub_pg_host='10.1.1.20' # HAProxy database router
hub_pg_port='5432'
hub_pg_database='automationhub'
hub_pg_username='aap'
hub_pg_password='<set your own>'

# Event-Driven Ansible Configuration
eda_admin_password='<set your own>'
eda_pg_host='10.1.1.20' # HAProxy database router
eda_pg_port='5432'
eda_pg_database='automationedacontroller'
eda_pg_username='aap'
eda_pg_password='<set your own>'
```

### 4.2 AAP Inventory File (DC2 - Standby)

```ini
# /opt/aap/inventory-dc2
# IMPORTANT: All AAP containers will be STOPPED after installation until failover

# Platform Gateway (2 VMs with colocated Redis)
[automationgateway]
gateway1-dc2.example.com
gateway2-dc2.example.com

# Automation Controller (2 VMs - dedicated)
[automationcontroller]
controller1-dc2.example.com
controller2-dc2.example.com

# Automation Hub (2 VMs with colocated Redis)
[automationhub]
hub1-dc2.example.com
hub2-dc2.example.com

# Event-Driven Ansible (2 VMs with colocated Redis)
[automationeda]
eda1-dc2.example.com
eda2-dc2.example.com

# Redis (colocated on gateway, hub, and EDA nodes)
[redis]
gateway1-dc2.example.com
gateway2-dc2.example.com
hub1-dc2.example.com
hub2-dc2.example.com
eda1-dc2.example.com
eda2-dc2.example.com

[all:vars]
# Common variables (MUST MATCH DC1)
postgresql_admin_username=postgres
postgresql_admin_password='<SAME AS DC1>'
registry_username='<your RHN username>'
registry_password='<your RHN password>'
redis_mode='standalone'

# CRITICAL: Admin passwords MUST match DC1 for seamless failover
gateway_admin_password='<SAME AS DC1>'
controller_admin_password='<SAME AS DC1>'
hub_admin_password='<SAME AS DC1>'
eda_admin_password='<SAME AS DC1>'

# Platform Gateway (pointing to DC2 HAProxy)
gateway_pg_host='10.2.1.20' # HAProxy database router (routes to PostgreSQL VIP 10.2.2.100)
gateway_pg_port='5432'
gateway_pg_database='automationgateway'
gateway_pg_username='aap'
gateway_pg_password='<SAME AS DC1>'

# Automation Controller
controller_pg_host='10.2.1.20' # HAProxy database router
controller_pg_port='5432'
controller_pg_database='awx'
controller_pg_username='aap'
controller_pg_password='<SAME AS DC1>'

# Automation Hub
hub_pg_host='10.2.1.20' # HAProxy database router
hub_pg_port='5432'
hub_pg_database='automationhub'
hub_pg_username='aap'
hub_pg_password='<SAME AS DC1>'

# Event-Driven Ansible
eda_pg_host='10.2.1.20' # HAProxy database router
eda_pg_port='5432'
eda_pg_database='automationedacontroller'
eda_pg_username='aap'
eda_pg_password='<SAME AS DC1>'
# DC1-specific host variables (pointing to DC1 HAProxy)
[automationgateway:vars]
gateway1-dc1.example.com gateway_pg_host='10.1.1.20' gateway_pg_port='5432'
gateway2-dc1.example.com gateway_pg_host='10.1.1.20' gateway_pg_port='5432'

[automationcontroller:vars]
controller1-dc1.example.com controller_pg_host='10.1.1.20' controller_pg_port='5432'
controller2-dc1.example.com controller_pg_host='10.1.1.20' controller_pg_port='5432'

[automationhub:vars]
hub1-dc1.example.com hub_pg_host='10.1.1.20' hub_pg_port='5432'
hub2-dc1.example.com hub_pg_host='10.1.1.20' hub_pg_port='5432'

[automationeda:vars]
eda1-dc1.example.com eda_pg_host='10.1.1.20' eda_pg_port='5432'
eda2-dc1.example.com eda_pg_host='10.1.1.20' eda_pg_port='5432'

# DC2-specific host variables (pointing to DC2 HAProxy)
gateway1-dc2.example.com gateway_pg_host='10.2.1.20' gateway_pg_port='5432'
gateway2-dc2.example.com gateway_pg_host='10.2.1.20' gateway_pg_port='5432'
controller1-dc2.example.com controller_pg_host='10.2.1.20' controller_pg_port='5432'
controller2-dc2.example.com controller_pg_host='10.2.1.20' controller_pg_port='5432'
hub1-dc2.example.com hub_pg_host='10.2.1.20' hub_pg_port='5432'
hub2-dc2.example.com hub_pg_host='10.2.1.20' hub_pg_port='5432'
eda1-dc2.example.com eda_pg_host='10.2.1.20' eda_pg_port='5432'
eda2-dc2.example.com eda_pg_host='10.2.1.20' eda_pg_port='5432'
```

### 4.3 Installation Steps
> **Note:** DC2 nodes will be STOPPED after installation until failover is triggered. All admin passwords and database credentials must match between DC1 and DC2 for seamless failover.

### 4.2 Installation Steps

**DC1 Installation (Active)**

Expand Down
Loading