Skip to content
Mohamad Nour. home
ProfessionalClubnetic · 2024 – present

Customer deployment automation

Consolidated per-customer repositories and automated provisioning with Ansible, Docker, GitHub Actions and Vault, so a new customer or staging environment goes live in minutes.

New customer environment
~2 days → 5–10 min
Deploy-time credentials
Vault

The problem

Every new customer or staging environment was assembled by hand from separate repositories, which took about two days and made configuration drift between customers likely.

My role

Designed and implemented the provisioning playbooks, the secrets setup and the release workflows.

Main workflows

  • Reusable Ansible playbooks for Docker, Compose services, Nginx, environment templates and MongoDB backups
  • Vault with AppRole authentication, a KV secrets engine and audit logging
  • GitHub Actions releases with staging/production selection and per-component image tags
  • Cross-repository deployment triggers

Technical decisions

  • Consolidated customer repositories first, so one playbook could describe every environment.
  • Fetched database credentials, registry tokens and S3 keys from Vault at deploy time instead of storing them in repositories or CI variables.
  • Tagged images per component so a release can promote a single service without rebuilding the rest.

Results

  • New-customer and staging deployment went from approximately 2 days to 5–10 minutes.
  • Backups and Nginx configuration are applied the same way for every customer.

Stack

  • Ansible
  • Docker
  • Docker Compose
  • Nginx
  • GitHub Actions
  • HashiCorp Vault
  • MongoDB
  • GHCR

Limits & context

Employer infrastructure: no configuration or source is published.