Files
CubelaPetarandClaude Fable 5 37c5f8c9de Sync docs after playbook/structure changes
- ansible/README.md: drop removed shutdown playbook mention
- CLAUDE.md: list nvidia_gpu under custom roles
- sftp README: link the config notes

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:43:20 +02:00

3.4 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Rules Set

  1. Ask, don't assume. If something is unclear, ask before writing a single line. Never make silent assumptions about intent, architecture, or requirements.
  2. Simplest solution first. Always implement the simplest thing that could work. Do not add abstractions or flexibility that weren't explicitly requested.
  3. Don't touch unrelated code. If a file or function is not directly part of the current task, do not modify it, even if you think it could be improved.
  4. Flag uncertainty explicitly. If you are not confident about an approach or technical detail, say so before proceeding. Confidence without certainty causes more damage than admitting a gap.

Repository Purpose

Infrastructure as Code and runbooks for Phytron's server infrastructure. Global configuration is done via Ansible; host-specific documentation, scripts, and files live under server/.

Structure

ansible/                    # Global settings & configuration for all servers
  hosts.ini                 # Inventory: all existing and planned servers with IPs.
                            # One group per host; group names use underscores
                            # (phy_z_srv_git), host aliases the real hostnames
                            # (phy-z-srv-git ansible_host=<IP>)
  group_vars/all.yml        # Defaults shared by all hosts (incl. ansible_user/port)
  group_vars/<group>.yml    # Per-host overrides ONLY — no copies of all.yml values
  group_vars/secrets.yml    # ansible-vault encrypted secrets — never commit plaintext
  run.yml                   # Main playbook
  playbooks/                # Utility playbooks (update.yml)
  roles/                    # Custom roles (nextcloud, nvidia_gpu)
  requirements.yml          # External Galaxy roles (geerlingguy.*, ...)
  justfile                  # Task runner: just run HOST, just reqs, just vault ACTION

server/<hostname>/          # Host-specific docs, scripts, files
  README.md                 # Server documentation, filled gradually
  manuals/                  # Runbooks (how-to), dated YYYYMMDD-<topic>.md
  notes/                    # Assessments, planning docs, working notes (dated)
  scripts/                  # Host-related helper scripts
  HW.md                     # Hardware specs (where relevant)

Servers

Hostname IP Status
phy-z-srv-jira 192.168.66.41 configured
phy-z-srv-cloud 192.168.66.66 configured (Nextcloud)
phy-z-srv-git 192.168.66.67 configured
phy-z-dmz-sftp01 192.168.99.68 configured
phy-z-srv-gpu01 192.168.66.69 planned — setup is the next task

Conventions

  • Ansible commands run from ansible/, preferably via the justfile (e.g. just run <HOST>).
  • Secrets go into ansible/group_vars/secrets.yml, encrypted with ansible-vault. Never commit plaintext secrets.
  • SSH password authentication stays enabled for easy access (servers are not reachable from outside); exception: DMZ hosts like phy-z-dmz-sftp01 are key-only.
  • Dated documents (runbooks, assessments) use the YYYYMMDD-<topic>.md naming scheme.
  • New servers get: an entry in hosts.ini, a group_vars/<group>.yml (overrides only), and a server/<hostname>/ folder with a README.