← Back to list

Standard Build Environment #1

Series Introduction: Engineering the Standard

Antonio Anciaes · 2026-04-06 12:55 · 0 claps · 4.1 min read
#opentofu #ansible #software-architecture
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud 🏛️ · Architecture

Standard Build Environment #1

Series Introduction: Engineering the Standard

From Code to Delivery: Mastering the Modern Build Environment

Every developer has their own unique approach to writing code — the logic they craft, the patterns they prefer, and the problems they solve. However, in a technical leadership role, you aren’t just managing how someone writes a function; you’re managing the entire toolchain and workflow. When overseeing multiple projects with diverse teams and varying resources, individual preference can quickly become operational chaos. To ensure a technical team actually delivers, the environment in which code is stored, built, tested, and deployed must be standardized and universally understood. Our strategy is built on a “Open-Source First” philosophy; we prioritize open-source packages to ensure transparency, flexibility, and cost-efficiency, considering commercial alternatives only on a case-by-case basis when they offer a specific, indispensable value.

This three-part series explores how to transition from fragmented development styles to a unified, automated, and scalable build ecosystem.

What to Expect in This Series:

  • Part 1: The Blueprint — We define the core objectives and the architectural foundation. We will identify the mandatory tools that form the backbone of a reliable environment and explain why consistency in selection is non-negotiable for technical supervision.
  • Part 2: The Engine — Moving from theory to practice, we dive into Build Environment Automation. We will explore how to remove human error by automating the path from a local commit to a production-ready environment using Infrastructure as Code (IaC) and configuration management.
  • Part 3: The Delivery — Finally, we look at the project delivery aspects. How does a standardized environment affect speed, security, and the ability to move resources between projects without friction?

Part 1: The Blueprint — Objectives, Architecture, and Mandatory Tools

1. Core Objectives: The “Why” Behind the Stack

  • Virtualization Sovereignty: We standardize our environment using Proxmox VE to create a virtual infrastructure. This brings near-metal performance with the flexibility of virtualization. By defining “virtual hardware” as code via Infrastructure as Code, we eliminate the “it works on my machine” phenomenon, ensuring that Development, Quality, and Production environments are architecturally identical.
  • Containerization: We privilege the use of containers over Virtual Machines. Therefore, we opt for adoption of Proxmox LXC
  • Elimination of Environmental Drift: Ensuring all environments (Build, Development, Staging, and Production) are architecturally identical via automation. Infrastructure creation and management using openTOFU and configuration using Ansible.
  • Automated Supervision: Utilizing SonarQube and Jenkins to enforce quality standards automatically.
  • Resource Mobility: A unified toolchain allows developers to move between projects without a learning curve.
  • Open-Source Sovereignty: Prioritizing open-source packages for transparency and cost-efficiency.
  • Architectural Convergence: By mandating a specific horizontal tools (secret vault, database, cache provider and identity provider, we simplify cross-project resource sharing and ensure a uniform security posture across the organization.

2. The Architectural Framework

Let’s start by giving the full picture, explain the big blocks and then dissect and detail. The full picture:

A. The Source of Truth: Git

The protocol is the foundation. Every line of code, every OpenTOFU configuration, every Ansible play-book and every Jenkins pipeline must be versioned. This ensures a complete audit trail of who changed what and when.

B. The Infrastructure: Proxmox, LXC & OpenTOFU

We standardize our execution environment using Proxmox LXC. These containers are provisioned via OpenTOFU, ensuring that the “virtual hardware” and base OS layer are defined as code.

C. The Factory Floor: Jenkins & SonarQube

Jenkins acts as the orchestrator with workflows defined in pipelines. Before a project is built, SonarQube performs static analysis. This “Quality Gate” ensures that technical debt and security vulnerabilities are identified before the code ever leaves the build stage.

D. The Artifact Registry: Nexus

Once code passes the Quality Gate, it is compiled into a binary. This artifact is stored in Nexus. Nexus serves as the Single Source of Truth for all project deployable assets. We never deploy “loose” code; we only deploy versioned, immutable binaries pulled directly from this registry.

E. The Configurator: Ansible

Ansible is the final link. It manages the internal state of the LXC, installing the required environment products (jenkins, sonar, Nexus, PostgreSQL, keycloak) and deploying the project binaries fetched from Nexus. This ensures that the application is configured identically across all environments.

F. The Workers and Execution Layer

Workers are where the specialized business logic actually lives. Applications and Services are deployed to and executed in dedicated, right-sized environments. One environment is a set of workers and one worker must only belong to one environment.

F. Shared Horizontal Platforms

To accelerate development and ensure consistency, the environment provides two mandatory horizontal platforms that all projects must utilize:

  • The Data Standard (PostgreSQL): All projects utilize PostgreSQL as their relational database. This allows for standardized backup strategies, performance tuning, and database migration patterns.
  • The Cache Standard (Redis): Redis for high-speed caching aiming uniform performance tuning across the organization.
  • The Security Standard (Keycloak & OIDC): Authentication and Authorization are handled centrally via Keycloak. Projects are required to use OpenID Connect (OIDC) for identity management. This ensures that security is not “re-invented” per project, but handled by a hardened, industry-standard Identity Provider (IdP).
  • Secret Vault (Infisical): We eliminate “Secret Drift” by mandating Infisical as our centralized vault. API keys, database credentials, and OIDC secrets are injected into workers only at runtime. No secrets are ever stored in Git or plaintext.

In summary, this architecture transforms an infrastructure from a collection of manual silos into a governed, open-source factory. By mandating a standardized build environment — where Jenkins orchestrates the flow, SonarQube enforces quality, Nexus secures our artifacts and Infisical secures our secrets — we create a predictable path for Go and Java services to run on a hardened bedrock of PostgreSQL, Redis, and Keycloak.

A blueprint is only as good as its execution. In the next installment, Part 2: The Engine, we move from “What” we are building to “How” we automate it. We will dive into the choreographed ‘Handshake’ between OpenTOFU and Ansible, demonstrating how we move from a bare Proxmox node to a fully provisioned environment through a strict and dependency-aware sequence of automated tasks.


메타데이터
post_id
e86b67bba7dd
slug
standard-build-environment-1-e86b67bba7dd
url
https://medium.com/@antonio.anciaes/standard-build-environment-1-e86b67bba7dd
canonical_url
https://medium.com/@antonio.anciaes/standard-build-environment-1-e86b67bba7dd
author_url
https://medium.com/@antonio.anciaes
status
ok
fetched_at
2026-06-09 15:37:30