Compare commits
1 Commits
091f11f036
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75de374d83 |
26
README.md
26
README.md
@@ -14,14 +14,24 @@ Each node runs `ansible-pull` every 5 minutes via cron. It clones this repo and
|
|||||||
├── group_vars/
|
├── group_vars/
|
||||||
│ └── all.yml # Fleet-wide variables
|
│ └── all.yml # Fleet-wide variables
|
||||||
├── host_vars/
|
├── host_vars/
|
||||||
│ ├── artemis.yml # Artemis (AI Foreman) specific
|
│ ├── artemis.yml # Artemis (AI Foreman)
|
||||||
│ ├── mark44.yml # Mark44 (Hulkbuster) specific
|
│ ├── cinnamint--elitebook.yml # Cinnamint-EliteBook (WSL2 workstation)
|
||||||
│ ├── mark5.yml # Mark5 (Suitcase) specific
|
│ ├── hulkbuster.yml # Mark44 (GPU heavy)
|
||||||
│ └── bones.yml # Bones (Mark XLI) specific
|
│ ├── mark5.yml # Mark5 (GPU light / Suitcase)
|
||||||
└── roles/
|
│ ├── mark-vii.yml # Mark VII (Swarm manager + services)
|
||||||
└── common/
|
│ ├── mission-control.yml # Mission-Control (WSL2 workstation)
|
||||||
└── tasks/
|
│ ├── mk-33.yml # MK-33 Silver Centurion (Swarm worker)
|
||||||
└── main.yml
|
│ ├── mk-34.yml # MK-34 (Swarm worker)
|
||||||
|
│ ├── mk-39.yml # MK-39 (Swarm worker)
|
||||||
|
│ ├── mk-42.yml # MK-42 Extremis (Swarm worker)
|
||||||
|
│ └── nebuchadnezzar.yml # Neo (Nextcloud + Vaultwarden)
|
||||||
|
├── new-build/
|
||||||
|
│ └── portainer/
|
||||||
|
│ └── docker-compose.yml # Portainer CE stack for Swarm manager
|
||||||
|
├── ubuntu-autoinstall/
|
||||||
|
│ └── autoinstall.yaml # Fleet-standard headless autoinstall
|
||||||
|
└── archive/
|
||||||
|
└── maas/
|
||||||
```
|
```
|
||||||
|
|
||||||
## Adding Node-Specific Tasks
|
## Adding Node-Specific Tasks
|
||||||
|
|||||||
12
ansible-pull-fixed.service
Normal file
12
ansible-pull-fixed.service
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Ansible Pull — Iron Legion fleet baseline
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
WorkingDirectory=/var/lib/ansible/local
|
||||||
|
ExecStartPre=/bin/bash -c 'if [ ! -d /var/lib/ansible/local/.git ]; then git clone -b main https://gitea.nb.bobbysh.me/Iron-Legion/ansible-pull-deploy.git /var/lib/ansible/local; else git -C /var/lib/ansible/local pull origin main; fi'
|
||||||
|
ExecStart=/usr/bin/ansible-playbook /var/lib/ansible/local/local.yml
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
12
ansible-pull.service
Normal file
12
ansible-pull.service
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Ansible Pull — Iron Legion fleet baseline
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
WorkingDirectory=/var/lib/ansible/local
|
||||||
|
ExecStartPre=/bin/bash -c 'if [ ! -d /var/lib/ansible/local/.git ]; then git clone -b main https://gitea.nb.bobbysh.me/Iron-Legion/ansible-pull-deploy.git /var/lib/ansible/local; else git -C /var/lib/ansible/local pull origin main; fi'
|
||||||
|
ExecStart=/usr/bin/ansible-playbook /var/lib/ansible/local/local.yml
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
10
ansible-pull.timer
Normal file
10
ansible-pull.timer
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Run ansible-pull every 15 minutes
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=2min
|
||||||
|
OnUnitActiveSec=15min
|
||||||
|
Persistent=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
---
|
|
||||||
# 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"
|
|
||||||
17
iventoy.service
Normal file
17
iventoy.service
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=iVentoy PXE Server
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/iventoy
|
||||||
|
Environment=LD_LIBRARY_PATH=/opt/iventoy/lib/lin64
|
||||||
|
ExecStart=/opt/iventoy/lib/iventoy
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
9
shield-restart-iventoy.sh
Normal file
9
shield-restart-iventoy.sh
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export SUDO_ASKPASS=/tmp/askpass/askpass.sh
|
||||||
|
sudo -A pkill -f "iventoy" || true
|
||||||
|
sleep 2
|
||||||
|
cd /opt/iventoy
|
||||||
|
export LD_LIBRARY_PATH=/opt/iventoy/lib/lin64
|
||||||
|
nohup ./lib/iventoy > /dev/null 2>&1 &
|
||||||
|
sleep 3
|
||||||
|
pgrep -f iventoy
|
||||||
160
ssh-config
Normal file
160
ssh-config
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
|
||||||
|
|
||||||
|
# Core Services
|
||||||
|
# Reverse Proxy
|
||||||
|
#***********#
|
||||||
|
# Local Net #
|
||||||
|
#***********#
|
||||||
|
Host artemis
|
||||||
|
HostName 192.168.15.182
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host mark5
|
||||||
|
HostName 192.168.6.5
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host mark44
|
||||||
|
HostName 192.168.5.214
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
|
||||||
|
#========================#
|
||||||
|
# Tailscale alternatives #
|
||||||
|
#========================#
|
||||||
|
Host ts-artemis
|
||||||
|
HostName 100.100.97.18
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host ts-mark44
|
||||||
|
HostName 100.75.26.83
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host ts-mark5
|
||||||
|
HostName 100.118.67.105
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
#======================#
|
||||||
|
# Netbird alternatives #
|
||||||
|
#======================#
|
||||||
|
Host nb-artemis
|
||||||
|
HostName 100.100.97.18
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Host nebuchadnezzar
|
||||||
|
HostName 100.99.123.16
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/id_nebuchadnezzar
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host gitea.nb.bobbysh.me
|
||||||
|
HostName gitea.nb.bobbysh.me
|
||||||
|
User git
|
||||||
|
IdentityFile ~/.ssh/gitea_api_key
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host cinnamint
|
||||||
|
HostName 100.99.65.75
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host shield
|
||||||
|
HostName 192.168.27.205
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host mk7
|
||||||
|
HostName 192.168.7.7
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk7
|
||||||
|
HostName 100.66.70.51
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-33 Silver Centurion
|
||||||
|
Host mk33
|
||||||
|
HostName 192.168.0.190
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk33
|
||||||
|
HostName 100.125.155.41
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-34 Southpaw
|
||||||
|
Host mk34
|
||||||
|
HostName 192.168.0.123
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk34
|
||||||
|
HostName 100.94.190.43
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-39 Gemini
|
||||||
|
Host mk39
|
||||||
|
HostName 192.168.0.106
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk39
|
||||||
|
HostName 100.125.155.41
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-42 Extremis
|
||||||
|
Host mk42
|
||||||
|
HostName 192.168.0.196
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk42
|
||||||
|
HostName 100.94.190.43
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# Shield (iVentoy PXE Server, formerly Bones)
|
||||||
|
Host ts-shield
|
||||||
|
HostName 100.109.254.36
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# Igor (ZimaOS NAS, Mark XXXVIII)
|
||||||
|
Host igor
|
||||||
|
HostName 192.168.10.211
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# TrueNAS (beelink-tns)
|
||||||
|
Host truenas
|
||||||
|
HostName 192.168.16.254
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host mission-control
|
||||||
|
HostName 100.96.128.121
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_windows
|
||||||
|
IdentitiesOnly yes
|
||||||
160
ssh-config-artemis
Normal file
160
ssh-config-artemis
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
|
||||||
|
|
||||||
|
# Core Services
|
||||||
|
# Reverse Proxy
|
||||||
|
#***********#
|
||||||
|
# Local Net #
|
||||||
|
#***********#
|
||||||
|
Host artemis
|
||||||
|
HostName 192.168.15.182
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host mark5
|
||||||
|
HostName 192.168.6.5
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host mark44
|
||||||
|
HostName 192.168.5.214
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
|
||||||
|
#========================#
|
||||||
|
# Tailscale alternatives #
|
||||||
|
#========================#
|
||||||
|
Host ts-artemis
|
||||||
|
HostName 100.100.97.18
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host ts-mark44
|
||||||
|
HostName 100.75.26.83
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
Host ts-mark5
|
||||||
|
HostName 100.118.67.105
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
#======================#
|
||||||
|
# Netbird alternatives #
|
||||||
|
#======================#
|
||||||
|
Host nb-artemis
|
||||||
|
HostName 100.100.97.18
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Host nebuchadnezzar
|
||||||
|
HostName 100.99.123.16
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/id_nebuchadnezzar
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host gitea.nb.bobbysh.me
|
||||||
|
HostName gitea.nb.bobbysh.me
|
||||||
|
User git
|
||||||
|
IdentityFile ~/.ssh/gitea_api_key
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host cinnamint
|
||||||
|
HostName 100.99.65.75
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
Host shield
|
||||||
|
HostName 192.168.27.205
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
IdentitiesOnly yes
|
||||||
|
|
||||||
|
# Shield iVentoy PXE Server (Tailscale)
|
||||||
|
Host ts-shield
|
||||||
|
HostName 100.109.254.36
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host mk7
|
||||||
|
HostName 192.168.7.7
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk7
|
||||||
|
HostName 100.66.70.51
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-33 Silver Centurion
|
||||||
|
Host mk33
|
||||||
|
HostName 192.168.0.190
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk33
|
||||||
|
HostName 100.125.155.41
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-34 Southpaw
|
||||||
|
Host mk34
|
||||||
|
HostName 192.168.0.123
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk34
|
||||||
|
HostName 100.94.190.43
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-39 Gemini
|
||||||
|
Host mk39
|
||||||
|
HostName 192.168.0.106
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk39
|
||||||
|
HostName 100.125.155.41
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# mk-42 Extremis
|
||||||
|
Host mk42
|
||||||
|
HostName 192.168.0.196
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host ts-mk42
|
||||||
|
HostName 100.94.190.43
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# Igor (ZimaOS NAS, Mark XXXVIII)
|
||||||
|
Host igor
|
||||||
|
HostName 192.168.10.211
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
# TrueNAS (beelink-tns)
|
||||||
|
Host truenas
|
||||||
|
HostName 192.168.16.254
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/artemis_key
|
||||||
|
StrictHostKeyChecking accept-new
|
||||||
|
|
||||||
|
Host mission-control
|
||||||
|
HostName 100.96.128.121
|
||||||
|
User jarvis
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_windows
|
||||||
|
IdentitiesOnly yes
|
||||||
Reference in New Issue
Block a user