Skip to main content

Pipeline Architecture

The deployment pipeline follows a multi-stage orchestration pattern triggered by Bamboo CI/CD:

Deployment Flow

  1. CI/CD Trigger — Orchestration script receives environment parameters (QA, Dev, Staging, Test, Production)
  2. Repository Sync — Git pull of the Ansible repository to ensure latest playbooks
  3. Monitoring Pause — Uptime monitoring API pauses checks during deployment windows
  4. VM Provisioning — Python API client manages VM lifecycle: start, stop, clone, snapshot
  5. Health Checks — Wait for SSH (Linux) and RDP (Windows) availability before proceeding
  6. Snapshot Restore — Hyper-V snapshot restoration for clean environment state
  7. Linux Configuration — Ansible playbooks configure Elasticsearch, Redis, RabbitMQ, HAProxy
  8. Windows Configuration — Ansible playbooks deploy application services, rendering engines, monitoring agents
  9. Customer Provisioning — Automated tenant creation with per-environment credentials
  10. Test Execution — xUnit test runners with automated test data generation
  11. Result Collection — Test results aggregated and reported back to the CI/CD platform
  12. Metrics Push — Deployment timing data sent to Graphite via netcat for Grafana dashboards
  13. Monitoring Resume — Uptime monitoring re-enabled

Environment Topology

Each deployment environment runs a multi-tier architecture:

TierComponentsTechnology
Load BalancerHAProxy + KeepalivedVRRP-based HA, SSL termination
ApplicationPlatform services (11+ microservices)Windows, IIS
SearchElasticsearch cluster (3+ nodes)Kibana for visualization
CacheRedis instancesMultiple databases per environment
MessagingRabbitMQMulti-node clusters
WorkflowApache CamundaBPMN process engine
LoggingELK stackFilebeat, Metricbeat, Winlogbeat, Heartbeat
MonitoringNagios NRPERemote health checks
StorageSamba/CIFSFile sharing and asset storage

Environments

EnvironmentPurposeInstances
QA (x5)Parallel QA testing5 isolated environments
DevelopmentDevelopmentSingle instance
TestLoad-balanced testingDual-instance with pool assignment
StagingStagingMulti-tenant customer configurations
ProductionProductionCloud production

Ansible Architecture

The infrastructure is organized as a layered Ansible codebase:

  • Inventories — Per-environment host definitions
  • Group Variables — Environment-specific configuration (ports, credentials, feature flags)
  • Roles (30+) — Reusable infrastructure components (elasticsearch, redis, haproxy, application services, etc.)
  • Playbooks — Orchestration combining roles for each environment
  • Vault — Encrypted secrets (SSL certificates, credentials, Kerberos keytabs)

Execution Configuration

  • Forks: 50 (parallel Ansible execution across hosts)
  • Transport: SSH (Linux), WinRM over HTTPS (Windows)
  • Secrets: Ansible Vault encrypted files
  • Inventory: Static files with environment-specific group variables