Platform engineering

Agala Deploy

A containerized deployment entry point that combines Ansible, encrypted secrets, Git-backed inventories, and CI automation.

Role
Creator & maintainer
Stack
Go · Ansible · Docker · SOPS · age · Woodpecker CI
View repository

The challenge

VPS deployments often depend on local credentials, undocumented inventory paths, and CI-specific shell glue that becomes fragile as environments multiply.

The approach

Decisions that shaped the work.

  1. 01

    Packaged the deployment runtime into a container instead of relying on each CI runner’s local toolchain.

  2. 02

    Used SOPS and age for encrypted configuration while passing secrets only through explicit runtime boundaries.

  3. 03

    Pulled environment inventory from a separate Git repository to keep application code and operational configuration independently governed.

  4. 04

    Implemented the entry point in Go with fail-fast validation for credentials, playbooks, inventories, registry settings, and SSH material.

Make the safe path the repeatable path

Agala Deploy turns a chain of sensitive deployment steps into one explicit contract. The container receives credentials and target configuration, prepares a constrained execution environment, resolves the inventory, and hands control to Ansible.

This is intentionally not a general deployment platform. It solves a concrete operating model well: static or containerized applications delivered through CI to managed VPS infrastructure.

Security as structure

The project keeps encrypted secrets outside application repositories, validates partial registry configuration, writes SSH material with restricted permissions, and avoids persisting the working environment after the container exits.

What it demonstrates

  • Go used as a compact systems-integration language
  • CI/CD design around explicit inputs and failure modes
  • Practical secrets management with SOPS and age
  • Operational tooling built for repeatability rather than spectacle

Built with intent in Buenos Aires.

© 2026 Julián Benitez