Skip to content

Environment Setup

This guide walks you through setting up your local development environment for working with the fzymgc-house cluster.

  • macOS or Linux workstation
  • Git installed and configured
  • Terminal access
  • Homebrew (macOS) or equivalent package manager
  • Network access to 192.168.20.0/24 (cluster network)

Install the following tools:

ToolPurposeInstallation
kubectlKubernetes CLIbrew install kubectl
kubeloginOIDC authenticationbrew install kubelogin
vaultHashiCorp Vault CLIbrew install vault
terraformInfrastructure as Codebrew install terraform
ansibleConfiguration managementpip install ansible
ghGitHub CLIbrew install gh
lefthookGit hooks managerbrew install lefthook
rumdlMarkdown lintingbrew install rumdl
cocogittoCommit validationbrew install cocogitto
uvxPython tool runnerpip install uv

Quick install (macOS):

Terminal window
brew install kubectl kubelogin vault terraform gh lefthook rumdl cocogitto
pip install ansible uv

Cross-platform: Linux users can use their package manager. See tool-specific installation docs for Windows.

Terminal window
git clone git@github.com:fzymgc-house/selfhosted-cluster.git
cd selfhosted-cluster
Terminal window
bd hooks install --chain

This installs git hooks via beads that chain with lefthook for linting and validation.

Note: The hooks are managed by beads (bd) and chain to lefthook for actual linting. This allows beads to manage its own hook lifecycle (for issue tracking sync) while delegating linting to lefthook.

The repository includes a virtual environment setup for Ansible:

Terminal window
# Create virtual environment (one-time)
./setup-venv.sh
# Activate before Ansible work
source .venv/bin/activate
Terminal window
export VAULT_ADDR=https://vault.fzymgc.house

Add to your shell profile (~/.zshrc or ~/.bashrc) for persistence.

Create a directory for cluster configs:

Terminal window
mkdir -p ~/.kube/configs

Set KUBECONFIG to include cluster configs:

Terminal window
export KUBECONFIG=~/.kube/configs/fzymgc-house-oidc.yml

Note: You need to create this kubeconfig file first. See Cluster Access for instructions.

Terminal window
vault login

This opens a browser for OIDC authentication via Keycloak.

Terminal window
gh auth login

Follow prompts to authenticate with GitHub.

Run these commands to verify your setup:

Terminal window
# Check Vault connectivity
./scripts/vault-helper.sh status
# Verify kubectl can reach cluster
kubectl --context fzymgc-house get nodes
# Verify Terraform
terraform version
# Verify Ansible
ansible --version
# Verify GitHub CLI
gh auth status

Expected output includes:

  • Vault showing “connected” status
  • 8 cluster nodes listed (3 control plane, 5 workers)
  • Terraform version 1.x
  • Ansible version 2.x
  • GitHub CLI showing authenticated status

Key directories you’ll work with:

DirectoryPurpose
ansible/Cluster deployment playbooks
tf/Terraform modules for infrastructure
argocd/Kubernetes manifests (GitOps)
docs/Documentation (Astro Starlight)
scripts/Utility scripts