Commit Graph
11 Commits
Author SHA1 Message Date
mrcharles cefe2f7cfa feat(security): add SSH hardening role
Port Modules/Security/secharden-ssh.sh.

Deploys:
- Authorized keys for root, localuser, subodev (conditional on existence)
- Hardened /etc/ssh/sshd_config (skipped on dev workstations)
- ssh-audit hardening drop-in for algorithm restrictions (skipped on
  Ubuntu where it breaks openssh-server)
- Lockdown of sshd_config.d directory permissions

SSH service is validated (sshd -t) before restart.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:16:13 -05:00
mrcharles 3919ff400d feat(oam): add LibreNMS/check_mk monitoring agent role
Port Modules/OAM/oam-librenms.sh.

Deploys the check_mk agent and systemd socket for LibreNMS monitoring,
along with the local plugins: distro, dmi, dpkg, ntp-client,
os-updates, postfixdetailed, and postfix-queues.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:16:07 -05:00
mrcharles 50c3f50d11 feat(system-config): add system service configuration role
Port global-systemServiceConfigurationFiles() and
global-postPackageConfiguration().

Manages:
- Global zsh config (/etc/zshrc)
- Mail aliases and postfix relay (local-only, smarthost to Cloudron)
- Static DNS resolv.conf (replaces systemd-resolved symlinks)
- rsyslog forwarding to LibreNMS (skipped on LibreNMS server itself)
- DHCP client config (skipped on DHCP servers pfv-netinfra-01/02)
- SNMP daemon config selected by host class (Pi/physical/Proxmox/VM)
- NTP client config (skipped on NTP server hosts)
- LLDP network discovery
- Cockpit disallowed-users
- Default user shells (zsh, conditional on user existence)
- Process accounting (accton)
- CPU governor on physical/Proxmox hosts (performance)
- tuned profile on VM guests (virtual-guest)

Infrastructure configs use Jinja2 templates parameterized by variables
in group_vars/all.yml.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:16:02 -05:00
mrcharles 78c8ba2208 feat(packages): add package management role
Port global-installPackages() and scripts/up2date.sh.

Features:
- Deploy /usr/local/bin/up2date.sh helper for operators
- Install webmin and tailscale apt repositories
- apt dist-upgrade + autoremove (up2date equivalent)
- Remove unwanted packages (systemd-timesyncd, chrony, telnet, etc.)
- Install fleet toolset with platform-aware filtering:
  - Proxmox hosts: skip cockpit/tuned (conflicts with PVE)
  - Kali hosts: skip unavailable packages (latencytop, fonts-powerline)
- Install KVM guest agent on virtual guests
- Install bare-metal power/perf packages on physical AND Proxmox hosts

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:15:56 -05:00
mrcharles 3672227f94 feat(preflight): add host-class detection role
Port PreflightCheck.sh and pi-detect.sh to the preflight role.

Detects at runtime:
- Physical Dell host (dmidecode, NOT Proxmox, NOT Pi)
- Proxmox VE host (dpkg-query proxmox-ve)
- Virtual guest (virt-what: hyperv/kvm)
- KVM guest specifically
- Raspberry Pi (device-tree model file)
- Distro: Debian, Ubuntu, Kali
- User existence: localuser, subodev

Derives from inventory groups:
- NTP server, DHCP server, DNS server
- LibreNMS server, Wazuh server
- Dev workstation

All facts are cacheable so downstream roles can branch on them without
re-running detection commands.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:15:50 -05:00
mrcharles 6eedfb7344 feat(playbooks): add hello world and setup new system playbooks
Add two playbooks:

- hello_world.yml: AWX smoke test that asserts Debian-family OS and
  reports facts. Use this as the first Job Template to confirm AWX
  can reach hosts, become root, and gather facts.

- setup_new_system.yml: Full host provisioning playbook that mirrors
  the function call order of SetupNewSystem.sh. Each role is gated by
  a run_* feature toggle so the same template can do partial runs.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:15:43 -05:00
mrcharles 754b47fb37 feat(inventory): add fleet inventory with all host groups
Add inventory/hosts.yml with real fleet hostnames organized into
functional groups:

- proxmox_hosts: 7 physical Dell hypervisors (pfv-tsys1/3/4/5/6/7/9)
- virtual_guests: VMs running on Proxmox (tsys-awx, tsys-librenms, etc.)
- ntp_servers: pfv-netinfra-01/02, pfv-netboot (skip client config)
- dhcp_servers: pfv-netinfra-01/02 (skip dhclient.conf deploy)
- dns_servers: Technitium/Pi-hole hosts
- librenms_server: tsys-librenms (skip rsyslog forward)
- wazuh_server: tsys-nsm (skip agent install)
- dev_workstations: subopi-dev, CharlesDevServer, kali-tsys
- kubernetes_nodes: control plane and worker nodes

Add inventory/group_vars/all.yml with all tunable variables (packages,
DNS servers, NTP servers, postfix relayhost, feature toggles) that
mirror the hard-coded values from the legacy bash scripts.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:15:36 -05:00
mrcharles 7a2ad022c8 chore: add Ansible project scaffolding
Add ansible.cfg (roles_path, inventory, become, fact caching),
requirements.yml placeholder for future collections, .gitignore for
Ansible artifacts, and .ansible-lint config for code quality.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:15:30 -05:00
mrcharles 81a811aedd docs: update AGENTS.md with auto-commit and push policy
Make explicit that agents must commit and push automatically after every
logical unit of work — never wait to be asked.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-30 12:15:24 -05:00
Charles N Wyble ee0b181463 docs: add AGENTS.md with git commit guidelines
Add agent guidelines for AI assistants working on this repository:

- Document atomic commit requirements
- Specify conventional commit format with examples
- Require verbose, formatted commit messages
- Emphasize immediate commit/push behavior

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 17:08:35 -05:00
reachableceo e076664de6 Initial commit 2025-07-18 18:52:48 +00:00