feat: per-node host_vars for Artemis, Mark44, Mark5, Bones; dynamic local.yml
This commit is contained in:
31
host_vars/artemis.ai.home.yml
Normal file
31
host_vars/artemis.ai.home.yml
Normal 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
27
host_vars/bones.yml
Normal 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"
|
||||
35
host_vars/hulkbuster.ai.home.yml
Normal file
35
host_vars/hulkbuster.ai.home.yml
Normal 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
35
host_vars/mark44.yml
Normal 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
|
||||
30
host_vars/mark5.ai.home.yml
Normal file
30
host_vars/mark5.ai.home.yml
Normal 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
|
||||
88
local.yml
88
local.yml
@@ -5,8 +5,9 @@
|
||||
tasks:
|
||||
- name: Print start message
|
||||
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
|
||||
apt:
|
||||
update_cache: yes
|
||||
@@ -23,49 +24,64 @@
|
||||
- tmux
|
||||
- jq
|
||||
- vim
|
||||
- python3-pip
|
||||
state: present
|
||||
when: ansible_os_family == "Debian"
|
||||
tags: [baseline]
|
||||
|
||||
# --- Artemis-specific placeholder ---
|
||||
- name: Ensure Artemis monitoring packages
|
||||
# --- NODE-SPECIFIC: extra 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:
|
||||
name:
|
||||
- nethogs
|
||||
- iotop
|
||||
- cockpit
|
||||
- cockpit-pcp
|
||||
state: present
|
||||
when: inventory_hostname == "Artemis"
|
||||
when:
|
||||
- inventory_hostname == "artemis.ai.home"
|
||||
- ansible_os_family == "Debian"
|
||||
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
|
||||
debug:
|
||||
msg: "Baseline complete on {{ ansible_hostname }}"
|
||||
msg: "Baseline complete on {{ ansible_hostname }} — node_type={{ node_type | default('unspecified') }}, gpu={{ has_gpu | default(false) }}"
|
||||
|
||||
Reference in New Issue
Block a user