feat: per-node host_vars for Artemis, Mark44, Mark5, Bones; dynamic local.yml

This commit is contained in:
Artemis
2026-05-21 13:30:22 -04:00
parent 5583c6d67c
commit b93461f932
6 changed files with 210 additions and 36 deletions

View File

@@ -0,0 +1,31 @@
---
# Artemis (AI Foreman) — Control node, no NVIDIA GPU
node_type: foreman
has_gpu: false
# Artemis-specific packages (monitoring and control)
extra_packages:
- nvtop # GPU monitoring (uses AMD iGPU info if available)
- nethogs # Per-process network monitoring
- iotop # Per-process I/O monitoring
- lm-sensors # Temperature/fan monitoring
- stress-ng # Load testing
- cockpit # Web-based system management
# Services to manage (not auto-started, just ensure packages installed)
managed_services:
- name: hermes-gateway
enabled: true
- name: hermes-dashboard
enabled: true
# Ollama models for Artemis (CPU inference, small models only)
ollama_models:
- gemma3:4b # Small enough for CPU
- phi4-mini:latest # Tiny, fast
# Hermes configuration
hermes_config:
provider: openrouter
model: openai/gpt-4o-mini
context_length: 128000

27
host_vars/bones.yml Normal file
View File

@@ -0,0 +1,27 @@
---
# Bones (Mark XLI) — Headless CPU-only node
node_type: headless
has_gpu: false
# Headless essentials
extra_packages:
- cpufrequtils # CPU frequency management
- lm-sensors # Temperature monitoring
- smartmontools # Disk health monitoring
- hdparm # Disk performance tuning
- netdata # lightweight monitoring (optional)
# Services managed on Bones
managed_services:
- name: jarvis # Paperclip + Ollama + PostgreSQL stack
enabled: true
- name: ollama # CPU inference only
enabled: true
# Ollama config (CPU mode, very small models)
ollama_models:
- gemma3:1b # Ultra-tiny for CPU
# Node-specific vars
bones_storage: "256GB SSD"
jvm_heap: "512m"

View File

@@ -0,0 +1,35 @@
---
# Mark44 (Hulkbuster) — Heavy GPU compute node
node_type: gpu_heavy
has_gpu: true
gpu_type: nvidia
gpu_model: "RTX 4070"
vram_mb: 12282
# GPU-specific packages
extra_packages:
- nvidia-driver # NVIDIA driver (if not already installed via proprietary)
- cuda-toolkit # CUDA toolkit for ML workloads
- nvtop # GPU monitoring (better than nvidia-smi for live view)
- nethogs # Network per-process monitoring
- iotop # I/O per-process monitoring
# Ollama models — largest VRAM headroom, can run big models
ollama_models:
- gemma4:e4b # Already pulled — keep it
- qwen2.5-coder:14b # Primary coding model
- qwen2.5:14b # General purpose large model
- mistral:7b # Fallback fast model
# Services
managed_services:
- name: ollama
enabled: true
- name: open-webui
enabled: true
- name: hermes-gateway
enabled: true
# Ollama port override (standard)
ollama_port: 11434
open_webui_port: 8080

35
host_vars/mark44.yml Normal file
View File

@@ -0,0 +1,35 @@
---
# Mark44 (Hulkbuster) — Heavy GPU compute node
node_type: gpu_heavy
has_gpu: true
gpu_type: nvidia
gpu_model: "RTX 4070"
vram_mb: 12282
# GPU-specific packages
extra_packages:
- nvidia-driver # NVIDIA driver (if not already installed via proprietary)
- cuda-toolkit # CUDA toolkit for ML workloads
- nvtop # GPU monitoring (better than nvidia-smi for live view)
- nethogs # Network per-process monitoring
- iotop # I/O per-process monitoring
# Ollama models — largest VRAM headroom, can run big models
ollama_models:
- gemma4:e4b # Already pulled — keep it
- qwen2.5-coder:14b # Primary coding model
- qwen2.5:14b # General purpose large model
- mistral:7b # Fallback fast model
# Services
managed_services:
- name: ollama
enabled: true
- name: open-webui
enabled: true
- name: hermes-gateway
enabled: true
# Ollama port override (standard)
ollama_port: 11434
open_webui_port: 8080

View File

@@ -0,0 +1,30 @@
---
# Mark5 (Suitcase) — Mobile/light GPU node
node_type: gpu_light
has_gpu: true
gpu_type: nvidia
gpu_model: "RTX 4060 Laptop"
vram_mb: 8188
# Laptop-specific packages
extra_packages:
- nvtop # GPU monitoring
- powertop # Power management analysis
- tlp # Laptop power management
- htop # Already baseline, ensure present
# Ollama models — limited VRAM, smaller models only
ollama_models:
- qwen2.5-coder:7b # Small coding model
- gemma3:4b # Tiny, fast
- llama3.1:8b # Balanced
# Services
managed_services:
- name: ollama
enabled: true
- name: hermes-gateway
enabled: true
# Ollama port
ollama_port: 11434

View File

@@ -5,8 +5,9 @@
tasks: tasks:
- name: Print start message - name: Print start message
debug: debug:
msg: "Ansible Pull baseline running on {{ ansible_hostname }} ({{ inventory_hostname }})" msg: "Ansible Pull running on {{ ansible_hostname }} ({{ inventory_hostname }}) — role: {{ node_type | default('unspecified') }}"
# --- ALL NODES: baseline ---
- name: Ensure apt packages are updated - name: Ensure apt packages are updated
apt: apt:
update_cache: yes update_cache: yes
@@ -23,49 +24,64 @@
- tmux - tmux
- jq - jq
- vim - vim
- python3-pip
state: present state: present
when: ansible_os_family == "Debian" when: ansible_os_family == "Debian"
tags: [baseline] tags: [baseline]
# --- Artemis-specific placeholder --- # --- NODE-SPECIFIC: extra packages ---
- name: Ensure Artemis monitoring packages - name: Ensure node-specific extra packages installed
apt:
name: "{{ extra_packages }}"
state: present
when:
- ansible_os_family == "Debian"
- extra_packages is defined
- extra_packages | length > 0
tags: [node_specific]
# --- NODE-SPECIFIC: Ollama model management ---
- name: Ensure Ollama is installed
command: which ollama
register: ollama_check
ignore_errors: true
changed_when: false
tags: [ollama]
- name: Pull node-specific Ollama models
command: "ollama pull {{ item }}"
loop: "{{ ollama_models }}"
when:
- ollama_check.rc == 0
- ollama_models is defined
- ollama_models | length > 0
register: ollama_pull_result
tags: [ollama]
# --- NODE-SPECIFIC: Service management (placeholder) ---
- name: Ensure managed services are enabled
systemd:
name: "{{ item.name }}"
enabled: "{{ item.enabled | default(true) }}"
loop: "{{ managed_services }}"
when:
- managed_services is defined
- managed_services | length > 0
ignore_errors: true
tags: [services]
# --- Artemis-specific: monitoring dashboard ---
- name: Ensure Artemis cockpit available
apt: apt:
name: name:
- nethogs - cockpit
- iotop - cockpit-pcp
state: present state: present
when: inventory_hostname == "Artemis" when:
- inventory_hostname == "artemis.ai.home"
- ansible_os_family == "Debian"
tags: [artemis] tags: [artemis]
# --- Mark44 GPU node placeholder ---
- name: Ensure GPU node tools
package:
name:
- nvidia-smi
state: present
when: inventory_hostname == "mk44"
ignore_errors: true
tags: [gpu]
# --- Mark5 laptop node placeholder ---
- name: Ensure laptop power management (example)
package:
name:
- powertop
state: present
when: inventory_hostname == "mk5"
ignore_errors: true
tags: [laptop]
# --- Bones headless placeholder ---
- name: Ensure headless essentials
apt:
name:
- cpufrequtils
state: present
when: inventory_hostname == "bones"
tags: [bones]
- name: Print completion message - name: Print completion message
debug: debug:
msg: "Baseline complete on {{ ansible_hostname }}" msg: "Baseline complete on {{ ansible_hostname }} — node_type={{ node_type | default('unspecified') }}, gpu={{ has_gpu | default(false) }}"