Restructure: move infra packages to root level

This commit is contained in:
Artemis
2026-06-14 19:53:10 -04:00
parent 6f4c54cdbb
commit a54d4cb0c9
49 changed files with 0 additions and 0 deletions

4
ansible-push/ansible.cfg Normal file
View File

@@ -0,0 +1,4 @@
[defaults]
stdout_callback = dense
deprecation_warnings = False
host_key_checking = False

6
ansible-push/configure.sh Executable file
View File

@@ -0,0 +1,6 @@
# Renamed to configure.sh and added playbooks to stack
docker compose up -d
docker exec -it ansible ansible-playbook playbooks/main.yml -i inventory.yml
docker compose down

View File

@@ -0,0 +1,14 @@
services:
ansible:
build: .
container_name: ansible
image: ansible
environment:
- ANSIBLE_HOST_KEY_CHECKING=false
- ANSIBLE_PYTHON_INTERPRETER=/usr/bin/python3.12
volumes:
- .:/ansible
- ./keys:/root/.ssh
working_dir: /ansible
entrypoint: ["/bin/sh", "-c"]
command: ["tail -f /dev/null"]

2
ansible-push/dockerfile Normal file
View File

@@ -0,0 +1,2 @@
FROM python:3.14.5-alpine3.23
RUN pip install --no-cache-dir ansible==14.0.0 && apk add --no-cache curl openssh-client

167
ansible-push/inventory.yml Normal file
View File

@@ -0,0 +1,167 @@
# Iron Legion Fleet Inventory
# Generated: 2026-06-03
# Source: fleet documentation + live SSH config
#
# Usage with Ansible:
# ansible all -m ping -i inventory.yml
# ansible pve_workers -m setup -i inventory.yml
# ansible swarm_manager -a "docker service ls" -i inventory.yml
#
# FIX: Group-specific variables (e.g. pve_workers:) were previously
# placed outside `all:` scope, breaking inventory parsing.
# All group vars are now merged into the group definitions below.
---
all:
vars:
ansible_ssh_private_key_file: /root/.ssh/id_ed25519
children:
# ──────────────────────────────────────────
# Physical / Virtual Fleet Nodes
# ──────────────────────────────────────────
fleet_nodes:
children:
# Core fleet services
core_services:
hosts:
mk7:
ansible_host: 192.168.7.7
ansible_user: jarvis
node_role: swarm_manager
docker_host: true
description: "Swarm manager + Traefik + service stack host"
# PVE hosts nodes
pve_hosts:
vars:
ansible_user: root
ansible_ssh_pass: "proxmox12"
ansible_become: true
ansible_python_interpreter: /usr/bin/python3
hosts:
mk33:
ansible_host: 192.168.7.33
node_role: pve_worker
pve_api_url: "https://192.168.7.33:8006/"
description: "PVE Silver Centurion"
mk34:
ansible_host: 192.168.7.34
node_role: pve_worker
pve_api_url: "https://192.168.7.34:8006/"
description: "PVE Southpaw"
mk39:
ansible_host: 192.168.7.39
node_role: pve_worker
pve_api_url: "https://192.168.7.39:8006/"
description: "PVE Gemini"
mk50:
ansible_host: 192.168.50.41
node_role: pve_worker
pve_api_url: "https://192.168.50.41:8006/"
description: "PVE MK50 Bleeding Edge"
# Active physical agents
physical_agents:
hosts:
artemis:
ansible_host: 192.168.15.182
ansible_user: jarvis
node_role: discord_gateway
hermes_agent: true
description: "Primary AI orchestrator + Discord gateway"
mark44:
ansible_host: 192.168.5.214
ansible_user: jarvis
ansible_ssh_private_key_file: /root/.ssh/vscode_ed25519
node_role: gpu_host
gpu: true
description: "Hulkbuster — GPU/Ollama standby"
mark5:
ansible_host: 192.168.6.5
ansible_user: jarvis
node_role: tbd
description: "Mark 5 — being repurposed"
mk42:
ansible_host: 192.168.0.196
ansible_user: jarvis
ansible_become_pass: "ubuntu"
node_role: swarm_worker
description: "Swarm Extremis"
mk85:
ansible_host: 100.75.79.47
ansible_user: jarvis
node_role: mobile_gamer
ansible_connection: ssh
description: "Mobile Gamer — Tailscale primary, no fixed LAN"
# Infrastructure / support nodes
infrastructure:
hosts:
shield:
ansible_host: 192.168.27.205
ansible_user: jarvis
ansible_become_pass: "ubuntu"
node_role: pxe_server
description: "iVentoy PXE deployment server"
igor:
ansible_host: 192.168.10.211
ansible_user: jarvis
node_role: nas
description: "ZimaOS NAS (MK-38)"
vars:
nfs_shares:
- src: "192.168.16.254:/mnt/Ice/Repo"
path: "/home/jarvis/repo"
# ──────────────────────────────────────────
# Managed nodes (apt update/upgrade target)
# Physical agents + core services, NOT PVE, NOT Neo, NOT igor, NOT ephemeral LXCs
# ──────────────────────────────────────────
managed_nodes:
children:
physical_agents:
core_services:
# Wolfstack host nodes (includes PVE hosts for now)
wolfstack:
children:
pve_hosts:
# Tailscale fallback aliases (uncomment if LAN fails)
# tailscale_fallback:
# hosts:
# ts-mk7:
# ansible_host: 100.66.70.51
# ansible_user: jarvis
# ts-mk33:
# ansible_host: 100.125.155.41
# ansible_user: jarvis
# ts-mk34:
# ansible_host: 100.94.190.43
# ansible_user: jarvis
# ts-nebuchadnezzar:
# ansible_host: 100.99.123.16
# ansible_user: jarvis
# Docker host targeting groups (uncomment when needed)
# docker_hosts:
# children:
# swarm_manager:
# hosts:
# mk7:
# standalone_docker:
# hosts:
# nebuchadnezzar:

View File

@@ -0,0 +1,8 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACD0ga0QkTlBzomV/SAd7XhCvPVRX4IW3buzheTaCdWOoAAAAKAofwxyKH8M
cgAAAAtzc2gtZWQyNTUxOQAAACD0ga0QkTlBzomV/SAd7XhCvPVRX4IW3buzheTaCdWOoA
AAAEBcve+GuhnjxJYBCNn+In+ZOzaGpDguXC6Kuhs1Neuo6PSBrRCROUHOiZX9IB3teEK8
9VFfghbdu7OF5NoJ1Y6gAAAAFEdlbmVyYXRlZCBCeSBUZXJtaXVzAQIDBAUGBwgJ
-----END OPENSSH PRIVATE KEY-----

View File

@@ -0,0 +1,2 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPSBrRCROUHOiZX9IB3teEK89VFfghbdu7OF5NoJ1Y6g Generated By Termius

View File

@@ -0,0 +1,49 @@
192.168.15.182 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEotq4gp1TaI6KY+ZlzU+Sp6wKOQxCsBOXcTedsscdnr
192.168.5.214 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIA3LSBVGXwU8beehCbOnrXaF7v//nDbOzZJIo77KKAg
192.168.0.196 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILyV6JsdRGtCcDuxk1Btf/6o21lPFUmxcKtGQQ0KGznf
192.168.6.5 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICQ9ZfPqssWaCjx9WGZu23nN1uSyEpuHR1cFqy5x9cBv
192.168.15.182 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7i2ToCbuFKb9w3cZLQstGM1XjsHpIUpWta68NN2XsRfjltfozGBcd+RkTyDwpzgb1ElEzJFoHMtKNmIX4ueavFdQeM6GdjKUD0pSjb3K+oBUDDAS2z3vyehbj9Nf4soFn5e3pP9OvxQ6Fkl5Fln8ySbCvvybA7Z61ws44Nk9Bt1GTH4aC0R1ZvzBoE2eXe0crg7x53i6EO3EzkUOebwaUiaTE4B/bIjLda0gQbr2u0idEaTY6aIAARWDnHwXD/KYtFxi/9RZ3SCHWksSBTVje4hHWYgwjCjRzPuZZ7FAmRtTTu6q90Ja1SSAk6myI4K5T/Gzo/HBsJ99OFs/NuTAXLjK4j+QnDsTfBlOIwneZeNw95L+4CUowP4LyaT3FA5ZKtMMnzfNKQcDyDu7vzQC216Vdio5WowazeQOUnOK3Af+t7oVH5RZ6IoafRZmTWBUVTSSHW5iTHa0gVGAerH8lakLo9pKzu9t+nv3iOQWL5rIOfWoAvNxDcGEdIh0SWfc=
192.168.15.182 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPV51QE7y1uc+7vAnD2rm5GHlv9vJfqHcxlA7gy7mSb0VQ89TgyOnXEHy8yZJ5cRdCNvvX68CEt+FnZkaK8IjkQ=
192.168.6.5 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDP0/X9xIy0R2jHPwBdM5KydJCk3qfelRiW+6vpFMKKUd7PL/QHEVmRfd28HMnPRoBuY3tzbx6/u2VTYwwsQQaW+5g1L7o3ju5qlBdKY1XFAvm0En6DVg6gz4RRBIlRJPx6DbSdRVdzYLsGCs9T4GFBZG4d39gnR2kWGEYfV6jCYKULGXf1CQBg6mFUdcjCORXX548CgYVj5jNmXC8BRVOezOTkPMaODUJN/fwcCB6Jasfwuv+4DKADhs91tDca4dGcWfdLH2jLT5sGkp3CkFNEu2XNoct6+tJEq7v212nSErFnAO9VMPIQagZGfuoUspjoPPNN0i0/AWSx0I3TwtGw4FdUwDb+WH5ZqPOgnwF5i9utEJETihJF2f8bac0gDKVPErd4EnyWjfT1wcqscNeJ/6Q9zl5Mj6VbxKRi62PSkpjHAk+qjO3GLlKZpVv5lUr9nz2efIUH2ZMSqKdrffkfDzatO4S53YLhpKJB54ka6W2l/eOA+vO+Q/BkoWp1DPE=
192.168.6.5 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHh302+xQi3WZ05mCLW5oKwUOkCjos4BpOyfiCOnc6MmcV8aXoiOlueV/uqQlYuG2ZxJQ6OpRTjONOsSKSbCnhM=
192.168.5.214 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDEL4xa599zwNOKAxXvVbUhuuxRS5Acj0RHVUskJsqA5Ll5Poa1uFHZXExgZap98YLy5RT1NwYXLy6ElE2ly32STfiVRP2cX80LHspvtr8+xl65qTlE9oSiA/imY2vifd6NAxC0K+kfYMLO4l6/GBbd9OVrfJLju5x6aijzoF820wqm3OrlhuibMmgkAn8TmQnih+pQCYxrjgMCWZFbzv5i8C6EBBCtArW950NPJHwoTFrcvGydpZU1hlh6o6rKWcf1fJ2VYSXNTG7TFzhiB+ezZnmy+hgtF52E+tTBnFkPlSRfQIdAYxi93HIrsh4Vk0fyVuaffMRXH9FmH/2VPRqvplaTVO0fDrghufB/eiW/HhlYuRHtZsx5/ZFJQDeViBtxHn0lQevIaDQvCkrJio59IG1mzVa7Pf7yh1XmWV0ipbX47CUNs9O97y/Z1fl80qycLzr9L+dYpGKGrJpqKndMKsW026WSvaTeuvz6r3F58HJHa+Eu+L3FGE1/rTrI5S8=
192.168.5.214 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKrxrlDM1kv3GtLl04xkDmXFKTQjmISt+v5Y3sVire/CJxVygzZei6xYeZcWgWzdNnTKccX10kKGiWUy9nqn71M=
192.168.0.196 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDR8JGtc6afihCVPAKt8N4/UNhXqPikFzRkWrAlZTWcnVPKzExR/bu+d+wIRB4qdDxX/i/oG+Q+OwfFPeMn0trF0CBGvS/AbmQci+rw/eHgsd5kL+7CHG0vjxV5wXV+uhgEBtD6Js546G8pXkHUcbjIWFDPTOresepMhZIKQBUGMQOuuoOny95UUKt1P1lidi5GpQ4Uprc7brDDfORmskGN6ZUNRzwuhImdBS2mriJpQGdWtGuwEtOEu8bh1z2pxLl/6GPiq+eALi0MjdRSQT/EQ4qySRacDwmaFbYf/GjQ6lFoNi8mbSVXLa7Q7cNMSn0EK0iU6sqVb27q4VtyG4tPrd9mWT+ktlriddfMETKbcidyRZyNsMXcxd/vUCZ3i8zSU6iGZjl/zExRtlmoWbk4l8ei7Q6InSkfhm/CjoVYCzlj0puv9Gkts1hOaSkzBC27RVM8ozhRQiZK9RI7d0tw4ctMCDF9dQeiP337ERm9ySfpSgiUZorOfr15TN4a17s=
192.168.0.196 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMnda1pPxmo0Y6P7w/zL91wuvogHQRkWtgpKP+EGkyiRxABQMfQeRQcHBA8iS1HlQGjJXXZBqLQ9O66GV8skn48=
192.168.27.205 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOOzGgg2/yT08NcAB3gFGAEBLpLhqvxlMat4jtd3rTaA
192.168.10.211 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEi6WlACkMGgkVdb1VnIkO7VEuVbgP0DJ/D87moHWqOb
192.168.7.33 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGVK1+ZBO03DdZHI1OoMA8757P3Bm6QoxV04oZdVAuXm
192.168.7.34 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZJJyRDsLdUWMRTx7R8v8b5T1yoRhYmngJc6mp/TiMk
192.168.7.39 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMp2w6b/5owCtWKKVHMoZ5fMU//HkJWSG2KVu8wDpmBe
192.168.7.7 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFFlhwOsWFBDSkHhyO+Pi81bPLHul7fOV6EvObWT+qrD
192.168.10.211 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCCGTIdi5wwNsJpFAk5cVd6I1keWD1Hfi6KVJkKnbqtrSeH0QIF55ne3SqUlMPZJfuKMXQXIhRgnsuHZZyneNBD/U4TULQWgoXriB/tgCyw1p5rHCv07+L/Lb9bBef9uoJcpNMfkhMEu8HCxy8DVTyV/uUmrNmduLCNNLAnRjoU/Fcq1qbKGHDUv2jPwCrD1ppbo2wktURqw78s2Ds5fqtt4EMriwAgh/lJQACySYxAX8nHK+yW9KwmRq1bjGJ3A09KR6Mqr70yFjjD4xdnoT9AL+91ij/u7kRR8ltaAjg80M+pxnwKcO6rgOf1a1Yr+ITVJGwnpiF9L8WDKhdrGphISR5bikPPektgwwxl2Iv1gRFB8Uh6UlgAxkuiyPAcdXgfcsG4vfqJzw81SsWMdYN0qKt68noEEekeuPMMZQrJ5nir7vjlf9lVVXPECvz7T3y/hBjj/7RK2wXuO2CiRPlxUZAE4J3t6u0dCkX7WkJPidre0HS4nkXAWkiugn+VSM=
192.168.10.211 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK8/waWJ1Ygx0tyhz05kNrCKNC8lnPXPZzLXIkzpBo0haKr+FkRs3QiIX2HbNkGuWxoohaAqDyna/WfiTEATYZU=
192.168.27.205 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDVsK1XVB+JXJcSLZVoXGRYURFqVLe5yBF5TU7ivHWDv9i6j/CQyYQ2Vlej2rSw6Ke/BEN+Oq/vSUDbdN6y1D+r7VEZ3PeMGEiYAX6aeTRpT998Jr5wdUELj9YV04SIVVXXVDXSiJbzXDx7q0klkTjiqWMK6VirV0PzmEvgrsz2c6hwvLgVlz+fUj2auukhBv3TOhcuvnCHrhfVnJxRtQkbZAj5D8hw95p3bia0rLCgcww/PlSgFKfbJzmyZ0SVBcq+bFx75C558hKL5x4EKqRcWdXYJnOQT/OvjuiqbgDQXO7BziDkc6Vpz7/dh26UhH63kexpgxQ//s0MzQyPm1HbTdblUjajzFOjfO7GtuLbbGdSN40Ve8n9qwQmiwtbpKPwmsP9/b4Vs1Lzd+GRV2miw4umweRGBLejq231audtOcZ6DPcbafUlv3/fhTP3q+PlepUWUPfsnxUCusmwivgRSA6gFbXMdaTqEzCJqlwP/fTPTdErFeEfpIhSWIXqIYs=
192.168.27.205 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBI7sl6SFn5qSEDjppViXdAFYV5AIQUaPXrqc7EwSYwUpMMO4sLzrXO2C2+LtzuDzw+K+bYmkOUVzlKu6o3ZmRP8=
192.168.7.39 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCukRVDCkX9v56UBEZgPhfEifbaMJAdwAg/38PbV9zvJeM8M2+LFObhgjnlrU4rw977TbenjpifpBcenaI8bK/uPAgz6PGBxF/b1EQ9HwZDrq1K61Eq4BAQOWaXikAcrzALp7BlbRxXQ18mhT3CTpU8Mm0cEPTixNBIc84V2/5iONoNFlG9gGrA0pcJoffrcZQqzZNEu4z86NvT2nUm9UKbqOru2tzhNLrfksaiIkv6mdeAImZ+8IxNey4WmQM9hMwNKdkgXZ7xpDGQHbS3MqAgVaW5PzwJLqfRq2hEq2lxsxuI/ldg+SYmnUflA4FSjq6xcUCJo3jr62JcgG3qhzQQLGQ3m/Xxz50+SMF4KiFGwMTdas+7LoKhkX5iPRbTKymuGf+uc51p3jquv2sb3Eh08S1HGk3/v9MdpyoQsO9k/Wvtj2ykxsdPxY2chTirIC7FAlqUGqC4VIEVjV6Nxa2XS1DXe/1YkoqTRTTCNJ9RyAsmNiycHbctSgnmYYdm4VM=
192.168.7.39 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBD5mhLaDlpL9R3HEy3unZfBkdwRK3DIa0XGz2G3W9bmlVZ706DNzTW7/fAXaaI3OHOQ/+mwx5p0M6HA6aCSIWok=
192.168.7.33 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClmcKiM9vjJ4qoSVb5Vcn0l2wXyNs/qDKZls4HFgMNx6Hy1c1RqBW7owxaL0BUdteU8Ar7/zFG4GwhmtoKQNBcMwo/2XkdHcL1IHHQ5lceczAhS1Qd8XLK4xK51SostxY3H8xmxxMNh9VF4F0D/lZvXC4Eb+aMPJEOe5xJb5JumvNCKX0kGLrd5FJ1g1taHSKZcPjtxcqBXgRuaPADh6PrBqHg9z/rgzwrJwTlSTON+Sy18LHgDpgCerUD8y1G8Iad9sfuIAeED6S9gFZV8oFl0+buK/Nfw5ju32nxM2KVrb5eES4q02v1Tbz3I3SXcK0tUDY9vCv/6k+Joxl3xUtG7WWq2qF0f2+a7I2vVH7VPpR8pxUIUgGosLPJdGuf5qVsj4R+YbxSklF1eoPPLXvUn7IIRa2+MwOW2ybU8vyQV4k1gCbof3JKpByiC+jfEKe7ZBqRXYRJ0ehop5Cu9eFYDyZCDFP2ygerVeJ9sLeMHAdGBxgIzUXbpuOD0AcW1nE=
192.168.7.33 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFcv91R9UD8y+7ngkgaWDBu0apqSTHOXd8rUuBRWUFWW0CpvDl0TlwYGjxXEfAz6ca7cfEYavbVqgSjPc/RsR8o=
192.168.7.34 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCreZi3n77vQBSXGUMbPj+G+DS/0YRowxqXH2o4AdfZEBmzgPa1O9u9XhKCjqeFqeQUMWp/a5EXwqmeqh80Ty/wrq66vaR0EyhxDFWvV45euSLv4WUz7oV7SO844ygt3iwc67UYPz7vk1y+UFxYW1n/Ya8tyXqL6aymHw1Sjy79+fWoTOM3eqmaoft5Q9MQmQT09ks7Wts1p2aHWdVs5dFahlF/Q4z+KC4EILiMcyr0U5VMkSpduAmSaopy/2qujUwZUynysP5UGx7virncSI0wuJSv/N63igeXTcfkYQKdw4iOkB4MWWeMwgKv1PjOvse2x4fH6bnRFtm4Zr2a79SlE7vqwzZCpqF0FAh8LGT3xgDVjfeRKIRiXTN43Hi5rNRvE5cgICKUMPX1ztOFTW0tUFoti21zTHRrMZGhsl7lhjolz9m8sD3Yv4Za1M8IZHCQET1VWJbNBmgeOtW1PvuIS6x/158cHRovj3BcHqh48nTv4oE7wdVAzMBlR7rYZv0=
192.168.7.34 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH8AfCqibVctmBw8r9fQTUwsWMwXJX0sWLCNsG7OA3C4nGLaWW8Go7wrrPlcGADX4TfpjmvKOFO+LdvK4MZgB6w=
192.168.7.7 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOvAVwkT7DLu5u06fG14gEAjBnMLjUIkRVRSCvtxOi3EJcT7VrG9OkS65Q5seAKO1wORFAhhKeszf+d7SgpnPZ7di1KNE67gFodxlI0MqlD0l/k04wd/zIFTsWZCCMZZBCNcS0eL0xYT8mPjKiLF7kmPUmWNCwDn70V2jaWqsknAUHmvGqTbUgKyBoKyt/B5mB6DWND4tVlnMZqWHgDMCWhDszPLMN1R99C+5nWFwlWSsRLIOC6VzX5jEZrbDBf6+YYucqyhk+p7cd219tEMPWxhG3fmwhlGWURW0SRPdsY+kQkue3r5KPZF7fVeTiq7RxshuoUK3KKoHnP4cTWjkNUbDL/1ZT8wQe0ju/Zi7q7iEV4X/Cy/AXGsevPW/M9lJURcI6ML5laHWoLORj2G97+4nl9rZjjYAMjut+4q/8txrAa0Z4tNZ6Am6GfcpsiRzL0FZ/SbWj8qexoICb3o5Cy9KmiCMbbrl3a39nvlxgRYURl3bRoT4Gzci1l2nE+3s=
192.168.7.7 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBxz4F9L3QBaNRo6FelZPfkptORSqkOxrpKKE0NH2f2oKILJLCmGA3tXUGTFDNdP0WD79YLphwzWsDOLJIrIPG4=
192.168.32.10 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJxjNw/JPdhqFJNROddbG6gvpCu9RQKg6vycgtEy6Z4J
192.168.32.11 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAj2HRnhG1KiHre5TAmTC0RB2d3seeud6VELaWwiEDPB
192.168.32.12 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEsqfgjH2aIqAUe70Tee1hCzYDAg9nWnlwJlDVZonLoD
192.168.32.13 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOWBozwUgS3BjBsf4BnyqNlWpQVCmRAJ0sYjj/MrNLbw
192.168.3.38 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKQh3rwLm7zJLoKal82RCps3oClsCOxKaDWCW1fBF+PQ
192.168.3.39 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJBaYbJyvFt6YbrNs+Hw1xpNnTktBARZI7Bon3CY4oEu
192.168.3.40 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE9+kfeKGhv7jIzNomyNpTDS8HJX3Ji/Plz8rssbS0YU
192.168.3.42 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII85+SoGNmcuqgAPKAzyymDLL0vrmJxJ9kBpRuLekWzK
192.168.3.41 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMkSIaJdPRfIRTZNDEECrQL5z+f225q6DRMccWEzfV8b
192.168.12.34 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIOd3NnovP0Cx/pLKJbr5fiE2VERVe837k4D4RBqYSFW
192.168.12.35 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF2j0uPxZGRIeKjxtmSA+dZtE/LhdczIOLkrp+nvgEhh
192.168.12.36 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAt0h28NVbrnyt8yc8BjWxCdNiYNnCa9PlkJfEL/y1lu
192.168.12.37 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINxfKbnPhXf009YJUIv641hqRmtEtfn2qwv1wD3IVqqn
192.168.61.23 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILWCUT7Xd0Ah91rmngKaFDYN/15/QWNVEfJAMpwHpjM6
192.168.61.24 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIESllML+WHWWi58d0STdL6kJSZlV1xVcKHbtv/Dm7pVV
192.168.61.25 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILezLcvmUXSL1chhCFaeZz4iSzlB700lsqEibPms38UK
192.168.61.26 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA1AkSyuJOf9yhV+D8/KJZMwxEq37OdIfHnqHLEI6EQC
192.168.61.27 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIWwK0LsPVo4l1/slWF+tcFveNzACJxQAeal+m9A7pV5
192.168.50.41 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJAX91JvjhqCG2/p7iBrXGhvR1UTnlqvEzEKR46JFRGN

View File

@@ -0,0 +1,28 @@
192.168.15.182 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEotq4gp1TaI6KY+ZlzU+Sp6wKOQxCsBOXcTedsscdnr
192.168.5.214 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIA3LSBVGXwU8beehCbOnrXaF7v//nDbOzZJIo77KKAg
192.168.0.196 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILyV6JsdRGtCcDuxk1Btf/6o21lPFUmxcKtGQQ0KGznf
192.168.6.5 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICQ9ZfPqssWaCjx9WGZu23nN1uSyEpuHR1cFqy5x9cBv
192.168.15.182 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7i2ToCbuFKb9w3cZLQstGM1XjsHpIUpWta68NN2XsRfjltfozGBcd+RkTyDwpzgb1ElEzJFoHMtKNmIX4ueavFdQeM6GdjKUD0pSjb3K+oBUDDAS2z3vyehbj9Nf4soFn5e3pP9OvxQ6Fkl5Fln8ySbCvvybA7Z61ws44Nk9Bt1GTH4aC0R1ZvzBoE2eXe0crg7x53i6EO3EzkUOebwaUiaTE4B/bIjLda0gQbr2u0idEaTY6aIAARWDnHwXD/KYtFxi/9RZ3SCHWksSBTVje4hHWYgwjCjRzPuZZ7FAmRtTTu6q90Ja1SSAk6myI4K5T/Gzo/HBsJ99OFs/NuTAXLjK4j+QnDsTfBlOIwneZeNw95L+4CUowP4LyaT3FA5ZKtMMnzfNKQcDyDu7vzQC216Vdio5WowazeQOUnOK3Af+t7oVH5RZ6IoafRZmTWBUVTSSHW5iTHa0gVGAerH8lakLo9pKzu9t+nv3iOQWL5rIOfWoAvNxDcGEdIh0SWfc=
192.168.15.182 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPV51QE7y1uc+7vAnD2rm5GHlv9vJfqHcxlA7gy7mSb0VQ89TgyOnXEHy8yZJ5cRdCNvvX68CEt+FnZkaK8IjkQ=
192.168.6.5 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDP0/X9xIy0R2jHPwBdM5KydJCk3qfelRiW+6vpFMKKUd7PL/QHEVmRfd28HMnPRoBuY3tzbx6/u2VTYwwsQQaW+5g1L7o3ju5qlBdKY1XFAvm0En6DVg6gz4RRBIlRJPx6DbSdRVdzYLsGCs9T4GFBZG4d39gnR2kWGEYfV6jCYKULGXf1CQBg6mFUdcjCORXX548CgYVj5jNmXC8BRVOezOTkPMaODUJN/fwcCB6Jasfwuv+4DKADhs91tDca4dGcWfdLH2jLT5sGkp3CkFNEu2XNoct6+tJEq7v212nSErFnAO9VMPIQagZGfuoUspjoPPNN0i0/AWSx0I3TwtGw4FdUwDb+WH5ZqPOgnwF5i9utEJETihJF2f8bac0gDKVPErd4EnyWjfT1wcqscNeJ/6Q9zl5Mj6VbxKRi62PSkpjHAk+qjO3GLlKZpVv5lUr9nz2efIUH2ZMSqKdrffkfDzatO4S53YLhpKJB54ka6W2l/eOA+vO+Q/BkoWp1DPE=
192.168.6.5 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHh302+xQi3WZ05mCLW5oKwUOkCjos4BpOyfiCOnc6MmcV8aXoiOlueV/uqQlYuG2ZxJQ6OpRTjONOsSKSbCnhM=
192.168.5.214 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDEL4xa599zwNOKAxXvVbUhuuxRS5Acj0RHVUskJsqA5Ll5Poa1uFHZXExgZap98YLy5RT1NwYXLy6ElE2ly32STfiVRP2cX80LHspvtr8+xl65qTlE9oSiA/imY2vifd6NAxC0K+kfYMLO4l6/GBbd9OVrfJLju5x6aijzoF820wqm3OrlhuibMmgkAn8TmQnih+pQCYxrjgMCWZFbzv5i8C6EBBCtArW950NPJHwoTFrcvGydpZU1hlh6o6rKWcf1fJ2VYSXNTG7TFzhiB+ezZnmy+hgtF52E+tTBnFkPlSRfQIdAYxi93HIrsh4Vk0fyVuaffMRXH9FmH/2VPRqvplaTVO0fDrghufB/eiW/HhlYuRHtZsx5/ZFJQDeViBtxHn0lQevIaDQvCkrJio59IG1mzVa7Pf7yh1XmWV0ipbX47CUNs9O97y/Z1fl80qycLzr9L+dYpGKGrJpqKndMKsW026WSvaTeuvz6r3F58HJHa+Eu+L3FGE1/rTrI5S8=
192.168.5.214 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKrxrlDM1kv3GtLl04xkDmXFKTQjmISt+v5Y3sVire/CJxVygzZei6xYeZcWgWzdNnTKccX10kKGiWUy9nqn71M=
192.168.0.196 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDR8JGtc6afihCVPAKt8N4/UNhXqPikFzRkWrAlZTWcnVPKzExR/bu+d+wIRB4qdDxX/i/oG+Q+OwfFPeMn0trF0CBGvS/AbmQci+rw/eHgsd5kL+7CHG0vjxV5wXV+uhgEBtD6Js546G8pXkHUcbjIWFDPTOresepMhZIKQBUGMQOuuoOny95UUKt1P1lidi5GpQ4Uprc7brDDfORmskGN6ZUNRzwuhImdBS2mriJpQGdWtGuwEtOEu8bh1z2pxLl/6GPiq+eALi0MjdRSQT/EQ4qySRacDwmaFbYf/GjQ6lFoNi8mbSVXLa7Q7cNMSn0EK0iU6sqVb27q4VtyG4tPrd9mWT+ktlriddfMETKbcidyRZyNsMXcxd/vUCZ3i8zSU6iGZjl/zExRtlmoWbk4l8ei7Q6InSkfhm/CjoVYCzlj0puv9Gkts1hOaSkzBC27RVM8ozhRQiZK9RI7d0tw4ctMCDF9dQeiP337ERm9ySfpSgiUZorOfr15TN4a17s=
192.168.0.196 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMnda1pPxmo0Y6P7w/zL91wuvogHQRkWtgpKP+EGkyiRxABQMfQeRQcHBA8iS1HlQGjJXXZBqLQ9O66GV8skn48=
192.168.27.205 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOOzGgg2/yT08NcAB3gFGAEBLpLhqvxlMat4jtd3rTaA
192.168.10.211 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEi6WlACkMGgkVdb1VnIkO7VEuVbgP0DJ/D87moHWqOb
192.168.7.33 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGVK1+ZBO03DdZHI1OoMA8757P3Bm6QoxV04oZdVAuXm
192.168.7.34 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZJJyRDsLdUWMRTx7R8v8b5T1yoRhYmngJc6mp/TiMk
192.168.7.39 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMp2w6b/5owCtWKKVHMoZ5fMU//HkJWSG2KVu8wDpmBe
192.168.7.7 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFFlhwOsWFBDSkHhyO+Pi81bPLHul7fOV6EvObWT+qrD
192.168.10.211 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCCGTIdi5wwNsJpFAk5cVd6I1keWD1Hfi6KVJkKnbqtrSeH0QIF55ne3SqUlMPZJfuKMXQXIhRgnsuHZZyneNBD/U4TULQWgoXriB/tgCyw1p5rHCv07+L/Lb9bBef9uoJcpNMfkhMEu8HCxy8DVTyV/uUmrNmduLCNNLAnRjoU/Fcq1qbKGHDUv2jPwCrD1ppbo2wktURqw78s2Ds5fqtt4EMriwAgh/lJQACySYxAX8nHK+yW9KwmRq1bjGJ3A09KR6Mqr70yFjjD4xdnoT9AL+91ij/u7kRR8ltaAjg80M+pxnwKcO6rgOf1a1Yr+ITVJGwnpiF9L8WDKhdrGphISR5bikPPektgwwxl2Iv1gRFB8Uh6UlgAxkuiyPAcdXgfcsG4vfqJzw81SsWMdYN0qKt68noEEekeuPMMZQrJ5nir7vjlf9lVVXPECvz7T3y/hBjj/7RK2wXuO2CiRPlxUZAE4J3t6u0dCkX7WkJPidre0HS4nkXAWkiugn+VSM=
192.168.10.211 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK8/waWJ1Ygx0tyhz05kNrCKNC8lnPXPZzLXIkzpBo0haKr+FkRs3QiIX2HbNkGuWxoohaAqDyna/WfiTEATYZU=
192.168.27.205 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDVsK1XVB+JXJcSLZVoXGRYURFqVLe5yBF5TU7ivHWDv9i6j/CQyYQ2Vlej2rSw6Ke/BEN+Oq/vSUDbdN6y1D+r7VEZ3PeMGEiYAX6aeTRpT998Jr5wdUELj9YV04SIVVXXVDXSiJbzXDx7q0klkTjiqWMK6VirV0PzmEvgrsz2c6hwvLgVlz+fUj2auukhBv3TOhcuvnCHrhfVnJxRtQkbZAj5D8hw95p3bia0rLCgcww/PlSgFKfbJzmyZ0SVBcq+bFx75C558hKL5x4EKqRcWdXYJnOQT/OvjuiqbgDQXO7BziDkc6Vpz7/dh26UhH63kexpgxQ//s0MzQyPm1HbTdblUjajzFOjfO7GtuLbbGdSN40Ve8n9qwQmiwtbpKPwmsP9/b4Vs1Lzd+GRV2miw4umweRGBLejq231audtOcZ6DPcbafUlv3/fhTP3q+PlepUWUPfsnxUCusmwivgRSA6gFbXMdaTqEzCJqlwP/fTPTdErFeEfpIhSWIXqIYs=
192.168.27.205 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBI7sl6SFn5qSEDjppViXdAFYV5AIQUaPXrqc7EwSYwUpMMO4sLzrXO2C2+LtzuDzw+K+bYmkOUVzlKu6o3ZmRP8=
192.168.7.39 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCukRVDCkX9v56UBEZgPhfEifbaMJAdwAg/38PbV9zvJeM8M2+LFObhgjnlrU4rw977TbenjpifpBcenaI8bK/uPAgz6PGBxF/b1EQ9HwZDrq1K61Eq4BAQOWaXikAcrzALp7BlbRxXQ18mhT3CTpU8Mm0cEPTixNBIc84V2/5iONoNFlG9gGrA0pcJoffrcZQqzZNEu4z86NvT2nUm9UKbqOru2tzhNLrfksaiIkv6mdeAImZ+8IxNey4WmQM9hMwNKdkgXZ7xpDGQHbS3MqAgVaW5PzwJLqfRq2hEq2lxsxuI/ldg+SYmnUflA4FSjq6xcUCJo3jr62JcgG3qhzQQLGQ3m/Xxz50+SMF4KiFGwMTdas+7LoKhkX5iPRbTKymuGf+uc51p3jquv2sb3Eh08S1HGk3/v9MdpyoQsO9k/Wvtj2ykxsdPxY2chTirIC7FAlqUGqC4VIEVjV6Nxa2XS1DXe/1YkoqTRTTCNJ9RyAsmNiycHbctSgnmYYdm4VM=
192.168.7.39 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBD5mhLaDlpL9R3HEy3unZfBkdwRK3DIa0XGz2G3W9bmlVZ706DNzTW7/fAXaaI3OHOQ/+mwx5p0M6HA6aCSIWok=
192.168.7.33 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClmcKiM9vjJ4qoSVb5Vcn0l2wXyNs/qDKZls4HFgMNx6Hy1c1RqBW7owxaL0BUdteU8Ar7/zFG4GwhmtoKQNBcMwo/2XkdHcL1IHHQ5lceczAhS1Qd8XLK4xK51SostxY3H8xmxxMNh9VF4F0D/lZvXC4Eb+aMPJEOe5xJb5JumvNCKX0kGLrd5FJ1g1taHSKZcPjtxcqBXgRuaPADh6PrBqHg9z/rgzwrJwTlSTON+Sy18LHgDpgCerUD8y1G8Iad9sfuIAeED6S9gFZV8oFl0+buK/Nfw5ju32nxM2KVrb5eES4q02v1Tbz3I3SXcK0tUDY9vCv/6k+Joxl3xUtG7WWq2qF0f2+a7I2vVH7VPpR8pxUIUgGosLPJdGuf5qVsj4R+YbxSklF1eoPPLXvUn7IIRa2+MwOW2ybU8vyQV4k1gCbof3JKpByiC+jfEKe7ZBqRXYRJ0ehop5Cu9eFYDyZCDFP2ygerVeJ9sLeMHAdGBxgIzUXbpuOD0AcW1nE=
192.168.7.33 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFcv91R9UD8y+7ngkgaWDBu0apqSTHOXd8rUuBRWUFWW0CpvDl0TlwYGjxXEfAz6ca7cfEYavbVqgSjPc/RsR8o=
192.168.7.34 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCreZi3n77vQBSXGUMbPj+G+DS/0YRowxqXH2o4AdfZEBmzgPa1O9u9XhKCjqeFqeQUMWp/a5EXwqmeqh80Ty/wrq66vaR0EyhxDFWvV45euSLv4WUz7oV7SO844ygt3iwc67UYPz7vk1y+UFxYW1n/Ya8tyXqL6aymHw1Sjy79+fWoTOM3eqmaoft5Q9MQmQT09ks7Wts1p2aHWdVs5dFahlF/Q4z+KC4EILiMcyr0U5VMkSpduAmSaopy/2qujUwZUynysP5UGx7virncSI0wuJSv/N63igeXTcfkYQKdw4iOkB4MWWeMwgKv1PjOvse2x4fH6bnRFtm4Zr2a79SlE7vqwzZCpqF0FAh8LGT3xgDVjfeRKIRiXTN43Hi5rNRvE5cgICKUMPX1ztOFTW0tUFoti21zTHRrMZGhsl7lhjolz9m8sD3Yv4Za1M8IZHCQET1VWJbNBmgeOtW1PvuIS6x/158cHRovj3BcHqh48nTv4oE7wdVAzMBlR7rYZv0=
192.168.7.34 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH8AfCqibVctmBw8r9fQTUwsWMwXJX0sWLCNsG7OA3C4nGLaWW8Go7wrrPlcGADX4TfpjmvKOFO+LdvK4MZgB6w=

10
ansible-push/lxc-common.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
# LXC Common Provisioning Runner (based on configure.sh)
# Spins up persistent ansible container, runs lxc_common role, then stops
docker compose up -d
docker exec -it ansible ansible-playbook playbooks/main.yml -i terraform-prefill/inventory-lxc.yml --limit lxcs --tags lxc_common -v
docker compose down

View File

@@ -0,0 +1,33 @@
- name: Prepare Systems
hosts: physical_agents:core_services
become: true
roles:
- prepare
- name: Install NFS client
hosts: fleet_nodes:!pve_hosts:!igor
become: false
roles:
- nfs_client
- name: Fleet update (apt update + upgrade)
hosts: managed_nodes
become: true
tags:
- fleet_update
roles:
- prepare
- name: LXC common provisioning (git + ansible)
hosts: lxcs
become: true
tags:
- lxc_common
roles:
- lxc_common
- name: Install Wolfstack and keepalived
hosts: wolfstack
become: true
roles:
- wolfstack

View File

@@ -0,0 +1,69 @@
- name: Ensure apt cache is updated
ansible.builtin.apt:
update_cache: yes
cache_valid_time: 3600
become: true
no_log: true
when: ansible_os_family == "Debian"
- name: Install git
ansible.builtin.apt:
name: git
state: present
become: true
no_log: true
when: ansible_os_family == "Debian"
- name: Install Python pip (needed for ansible via pip)
ansible.builtin.apt:
name: python3-pip
state: present
become: true
no_log: true
when: ansible_os_family == "Debian"
- name: Create jarvis user with UID 1000
ansible.builtin.user:
name: jarvis
uid: 1000
shell: /bin/bash
create_home: true
groups: sudo
append: true
become: true
- name: Ensure jarvis .ssh directory exists
ansible.builtin.file:
path: /home/jarvis/.ssh
state: directory
owner: jarvis
group: jarvis
mode: "0700"
become: true
- name: Copy root authorized_keys to jarvis
ansible.builtin.copy:
src: /root/.ssh/authorized_keys
dest: /home/jarvis/.ssh/authorized_keys
owner: jarvis
group: jarvis
mode: "0600"
remote_src: true
become: true
- name: Ensure jarvis has passwordless sudo
ansible.builtin.lineinfile:
path: /etc/sudoers.d/jarvis
line: "jarvis ALL=(ALL) NOPASSWD:ALL"
create: true
mode: "0440"
validate: "visudo -cf %s"
become: true
- name: Install ansible via pip as jarvis
ansible.builtin.pip:
name: ansible
state: present
break_system_packages: true
become: true
no_log: true

View File

@@ -0,0 +1,59 @@
- name: Install nfs-common
ansible.builtin.apt:
name: nfs-common
state: present
become: true
when: ansible_os_family == "Debian"
- name: Ensure NFS mount directories exists
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: '0755'
owner: jarvis
group: jarvis
become: true
loop: "{{ nfs_shares }}"
loop_control:
label: "Directory: {{ item.path }}"
when: ansible_os_family == "Debian"
- name: Create local repogroup matching TrueNAS GID 568
ansible.builtin.group:
name: repogroup
gid: 568
state: present
become: true
- name: Add jarvis to repogroup
ansible.builtin.user:
name: jarvis
groups:
- repogroup
append: true
become: true
- name: Mount an NFS volume (root, because kernel mount)
ansible.posix.mount:
src: "{{ item.src }}"
path: "{{ item.path }}"
opts: "vers=4.2,proto=tcp,_netdev"
state: mounted
fstype: nfs
become: true
loop: "{{ nfs_shares }}"
loop_control:
label: "Mounted: {{ item.src }}"
when: ansible_os_family == "Debian"
- name: Set mount permissions so jarvis (repogroup member) can write
ansible.builtin.file:
path: "{{ item.path }}"
mode: '0770'
owner: root
group: repogroup
become: true
loop: "{{ nfs_shares }}"
loop_control:
label: "Permission fix: {{ item.path }}"
when: ansible_os_family == "Debian"

View File

@@ -0,0 +1,12 @@
- name: Run "apt update"
ansible.builtin.apt:
update_cache: yes
cache_valid_time: 3600
when: ansible_os_family == "Debian"
- name: Upgrade the OS (apt-get dist-upgrade)
ansible.builtin.apt:
upgrade: dist
when:
- ansible_os_family == "Debian"
- not (gpu | default(false))

View File

@@ -0,0 +1,27 @@
---
- name: Check for existing wolfstack installation
ansible.builtin.command: which wolfstack
register: wolfstack_exists
ignore_errors: true
changed_when: false
- name: Run Wolfstack installer
ansible.builtin.shell: |
curl -sSL https://raw.githubusercontent.com/wolfsoftwaresystemsltd/WolfStack/master/setup.sh | bash
args:
executable: /bin/bash
when: wolfstack_exists.rc != 0
- name: Ensure wolfstack service is running and enabled
ansible.builtin.systemd:
name: wolfstack
state: started
enabled: true
daemon_reload: true
- name: Install keepalived package
ansible.builtin.apt:
name: keepalived
state: present
update_cache: true
when: ansible_os_family == "Debian"