Skip to content

Program Layer

The program layer provides project-specific configurations and customizations.

Purpose

Enables:

  • Project-specific tool versions
  • Custom application stacks
  • Team workflows
  • CI/CD integration
  • Environment-specific settings

Key Features

Configuration Override

Programs can override organization settings:

# Override Docker version
apps:
  docker:
    version: "23.0.6"  # Different from org default

Custom Variables

Add project-specific configuration:

project:
  name: "myapp"
  environment: "development"

database:
  host: "localhost"
  name: "myapp_dev"

Custom Playbooks

Project setup automation:

- name: Setup My Project
  tasks:
    - name: Clone repository
    - name: Install dependencies
    - name: Setup database

Directory Structure

packages/programs/my-project/
├── Vagrantfile          # VM configuration
├── ansible/
│   ├── group_vars/
│   │   └── all.yml     # Program variables
│   ├── playbooks/
│   │   └── program-setup.yml
│   └── roles/          # Custom roles
├── tests/              # Program tests
└── README.md          # Documentation

Common Patterns

Web Application

apps:
  docker: { enabled: true }
  python: { enabled: true }
  nodejs: { enabled: true }
  postgresql: { enabled: true }

Data Science

apps:
  python:
    packages:
      - numpy
      - pandas
      - jupyter

Microservices

apps:
  docker: { enabled: true }
  kubernetes: { enabled: true }
  helm: { enabled: true }

Usage

cd packages/programs/my-project
vagrant up
vagrant ssh

See Also