Commit Graph

60 Commits

Author SHA1 Message Date
JARVIS
9ed7466fd8 feat(expand_root_lv): new role to grow root LV to fill VG + resize fs
Reclaims the half-disk LV left by the Ubuntu Server autoinstall
template default. Idempotent — no-ops cleanly when there are no free PE
in the VG, and exits the play cleanly on hosts without LVM.

Supports ext4 and xfs. Does not handle partition resize (cloud-utils
growpart) — out of scope for the template fix-up case.

Wired into day1_deploy_honcho.yml ahead of the honcho role so newly
provisioned VMs get the fix-up automatically. Suitable to add to any
day1 playbook by simply listing it before the application role.
2026-05-30 23:03:10 -05:00
JARVIS
4d7766d1b1 feat(honcho): add role + day1 playbook + traefik route for lincoln
Deploys Honcho (plastic-labs/honcho) as a rootful Podman + Quadlet
service on the lincoln VM (10.1.71.132). Three containers on a
user-defined network:

  - honcho-postgres  pgvector/pgvector:pg16
  - honcho-api       FastAPI on :8000
  - honcho-deriver   background worker for theory-of-mind derivations

LLM provider: Anthropic Claude (claude-sonnet-4-5). Switching providers
is two env-var changes — see README.

Traefik route hall-of-presidents.local.mk-labs.cloud -> lincoln:8000
added under boilerplates/traefik/dynamic/. JARVIS itself talks to
Honcho directly at lincoln:8000 (east-west); the Traefik alias exists
only for browser access to the Swagger /docs UI.

Requires three new vault entries before first run:
  - vault_honcho_database_password
  - vault_honcho_jwt_secret
  - vault_honcho_anthropic_api_key
2026-05-30 22:41:37 -05:00
Hermes Agent service account
80f810fb0c feat(semaphore): rewrite role with rootful Podman Quadlet + PostgreSQL
Complete rewrite of the semaphore role. Supersedes three prior
iterations whose admin-user-creation logic was unreliable across
Semaphore CLI versions.

Architecture:
  - Rootful Podman Quadlet under /etc/containers/systemd/
  - Separate PostgreSQL 16-alpine container on a user-defined
    podman network (semaphore-net)
  - Named volumes for both data stores (semaphore_data,
    semaphore_postgres_data) so container recreation is
    non-destructive
  - Pinned image tags: semaphoreui/semaphore:v2.18.5-ansible2.16.5
    and postgres:16-alpine
  - Post-deploy HTTP health check fails the playbook if Semaphore
    doesn't respond on /api/ping within ~60s

Admin user creation remains intentionally manual after first deploy;
the role README documents the exact podman exec command.

Removes the duplicate deploy_semaphore.yml and the now-unneeded
cleanup_semaphore.yml; day1_deploy_semaphore.yml is the canonical
entry point.
2026-05-29 21:34:22 -05:00
Hermes Agent service account
91b5817e5f feat(ansible): add linux-baseline role and day0_linux_baseline playbook
Introduces a single, idempotent baseline role to supersede the
overlapping day0-baseline and common roles. Capabilities are
feature-flagged so they can be toggled per-host:

  - packages (common + OS-family + per-host extras)
  - timezone + locale
  - chrony time sync against sundial
  - baseline users (jarvis admin account with SSH key + NOPASSWD sudo)
  - SSH hardening via /etc/ssh/sshd_config.d/ drop-in
  - unattended security upgrades (Debian family)
  - sysctl drop-in at /etc/sysctl.d/99-mk-labs.conf
  - journald retention caps
  - branded MOTD

Ubuntu/Debian is first-class; vars/RedHat.yml provides a placeholder
for future distros via the ansible_os_family pattern.

The legacy day0-baseline and common roles remain in place for now and
will be removed during the playbook cleanup sweep, alongside the
existing playbook naming inconsistencies.
2026-05-29 20:40:04 -05:00
Hermes Agent service account
1dfa7889ab chore(playbooks): switch day0_baseline.yml to new day0-baseline role 2026-05-28 22:06:49 -05:00
Hermes Agent service account
1d7dcb7d82 fix(semaphore): load role defaults in cleanup playbook so variables are defined 2026-05-28 14:02:33 -05:00
Hermes Agent service account
d63ca0b4f9 docs(semaphore): add cleanup playbook reference to deploy playbook 2026-05-28 14:01:00 -05:00
Hermes Agent service account
e9440327aa feat(semaphore): add dedicated cleanup playbook
- Explicit playbook for removing old container, systemd services, and quadlets
- Optional semaphore_force_clean variable for data removal
- Safer than tags for destructive operations
2026-05-28 10:25:56 -05:00
Hermes Agent service account
0116ec4cc3 fix(dns): improve hostname extraction in add_service_route.yml
- Use explicit Jinja2 loop for more reliable parsing of Host() rules
- Handles multi-host router definitions correctly
2026-05-27 21:39:51 -05:00
Hermes Agent service account
f962d0a6d7 feat(dns): rewrite add_service_route.yml to support multi-host Traefik configs
- Parse Host() rules from router definitions
- Supports multiple hostnames per service file (e.g. semaphore + imagineering)
- More robust and future-proof
2026-05-27 21:31:41 -05:00
Hermes Agent service account
92b2a9d609 refactor: consolidate all roles into ansible/roles/ and update ansible.cfg
- Move all roles from playbooks/roles/ to roles/
- Update roles_path in ansible.cfg
- Add cast user to common role
- Create standalone podman role
- Add semaphore role with Podman + Quadlet support
2026-05-26 22:22:08 -05:00
24869f47ee deply hermes VM 2026-05-26 11:48:23 -05:00
be8e50d590 deploy hermes 2026-05-25 20:21:24 -05:00
f4c60d7560 add grafana dashboards 2026-05-19 21:12:54 -05:00
9f3ac95d8d gitea and authentik 2026-05-16 16:22:14 -05:00
84523d0054 configure prometheus for ubiquiti and proxmox cluster 2026-05-08 00:25:55 -05:00
f8c6b327f9 Deploy gites 2026-05-07 22:07:53 -05:00
79662aa545 Deployed prometheus/grafana 2026-04-26 23:00:37 -05:00
69b91a2e1d Move nextcloud external access to traefik. 2026-04-18 21:51:28 -05:00
9961fe1ed4 deploy nextcloud 2026-04-18 00:36:40 -05:00
4db6f0b06f added test playbook 2026-03-22 23:47:47 -05:00
307413f3f2 Ansible deployed via boilerplates and playbooks 2026-03-22 18:15:55 -05:00
836ef66cf0 fix dash 2026-03-21 19:48:17 -05:00
4cbaebc98b rename playbook 2026-03-21 19:46:59 -05:00
c1d85b7f89 Remove NetBox Traefik config - deferred until Compose rebuild 2026-03-21 19:10:10 -05:00
c087f32355 redeploy authentic policies as code. 2026-03-21 14:00:37 -05:00
9ad585681f fix ssh handler 2026-03-19 16:53:45 -05:00
40ab77f061 update test file 2026-03-19 16:44:59 -05:00
1d0adb7689 step enrollment 2026-03-19 16:29:09 -05:00
df0d81ec4d fix directory permissions 2026-03-14 22:32:40 -05:00
ea7d079f27 update step playbook 2026-03-14 22:30:18 -05:00
42ea1e2d03 deploy step 2026-03-14 22:15:28 -05:00
b85b237129 rename turnstile to guest-relations 2026-03-14 21:08:35 -05:00
6f14d48d5e oidc again 2026-03-10 20:34:00 -05:00
fa9fd9c65f fix oidc 2026-03-10 20:30:07 -05:00
86cf979453 debugging 2026-03-10 20:28:06 -05:00
643fefb4bf ansible for proxmox config 2026-03-09 22:36:42 -05:00
35c1bdb3bf ansible for authentik deployment. 2026-03-08 20:30:51 -05:00
ea7e05dcc2 fixed docker install 2026-03-08 15:47:18 -05:00
26f7d3214f switched ntp client to chrony 2026-03-08 15:41:09 -05:00
173a36c518 changed hosts 2026-03-08 15:31:23 -05:00
fcb1777336 move roles 2026-03-08 15:28:09 -05:00
344e8dff69 updated ansible for lightning-lane 2026-03-07 22:47:37 -06:00
7187dc8280 refactor: move shared Ansible tasks to ansible/tasks/ 2026-02-25 20:51:02 -06:00
86708542c9 refactor: move Ansible roles to standard ansible/roles/ location 2026-02-25 20:46:33 -06:00
8c8835d1d5 chore: archive deprecated Ansible content (OpenShift, Fastpass, FreeIPA, k8s) 2026-02-25 20:44:49 -06:00
7c2ef04d47 Sync before Archive 2026-02-25 20:36:50 -06:00
73eee46101 ansible vm creation (depreciated) 2025-11-21 05:48:43 -08:00
510da9c2a4 Sync 11-19 2025-11-19 09:36:59 -08:00
702c71fcff sync 2025-10-19 17:02:16 -05:00