Commit Graph

137 Commits

Author SHA1 Message Date
chrisfu
79515fb0ec fix LUN PROLE-PI-2 iqn 2026-01-26 16:55:56 -08:00
chrisfu
862f21fe1d reusability 2026-01-26 00:08:29 -08:00
chrisfu
035d63090c Fix Ansible YAML parsing errors and standardize host_vars. Removed invalid '---' document separators from host_vars files, merged redundant myrddin config, and renamed host_vars to use .yml extension. Verified with successful ansible-playbook --syntax-check. 2026-01-25 23:36:25 -08:00
chrisfu
ff1150fa9e add iscsi mount guardrails. get k3s server token script 2026-01-25 22:18:10 -08:00
chrisfu
613d9bfbc6 ansible add myrddin.prole.org host_vars 2026-01-25 21:27:53 -08:00
chrisfu
20d408ff36 add iscsi role and vault 2026-01-25 15:31:33 -08:00
chrisfu
5cb2dbdc57 fix k3s role 2026-01-25 06:00:38 -08:00
chrisfu
7c25d731ce /var/log/pihole SAN mounted 2026-01-25 05:33:40 -08:00
chrisfu
b250d17a93 added iscsi role, ensure /var/lib/rancher storage is mounted before k3s 2026-01-25 01:26:07 -08:00
chrisfu
05f1058204 Refactor rsyslog template path and introduce noswap role:
- Modified `10-server.conf.j2` to use `%HOSTNAME%/%programname%.log` for log file paths.
- Added `noswap` role with tasks for swap management: disabling swap, removing swap entries, managing dphys-swapfile, and zramswap services.
- Included handlers for reloading systemd after changes.
2026-01-24 01:32:01 -08:00
chrisfu
63384fa309 fix missing file 2026-01-24 00:54:24 -08:00
chrisfu
c0b15f2609 Update Ansible configuration to enable run_logger callback plugin
- Added `callback_plugins` and `callbacks_enabled` configurations in `ansible.cfg` and `infrastructure/ansible.cfg` to activate the `run_logger`.
2026-01-24 00:41:34 -08:00
chrisfu
829d8d14fd k3s should not initialize and start yet, install, ensure stopped. k3s storage next before init 2026-01-24 00:35:11 -08:00
chrisfu
1a5c6d844e Enhance install.py to manage prole.cfg generation and configuration capturing
- Introduced `prole_cfg_data` to maintain configuration sections like Global, Network, and Kerberos Authentication.
- Implemented `_save_prole_cfg` to generate the `prole.cfg` file used for Ansible deployment.
- Captured environment and network settings into the configuration data structure.
- Integrated configuration updates throughout the installer workflow, ensuring comprehensive data capture for subsequent processes.
2026-01-23 20:33:29 -08:00
chrisfu
59cc9f7edf Update K3s and Samba DNS configurations
- Change K3s service to be stopped and disabled by default.
- Adjust PTR records in the inventory to ensure correct FQDN mappings.
- Refactor Samba DNS task to use include_tasks for PTR records.
2026-01-23 20:33:17 -08:00
chrisfu
dfed907938 Fix k3s_node_ip detection on hosts without wired IP: Added fallback to default IPv4 address if none of the specified wired interfaces have an IP address. 2026-01-21 20:39:10 -08:00
chrisfu
a604e8f6eb Fix samba_reverse_dns role by ensuring ad_dc vault variables are loaded: Restructured group_vars/ad_dc into a directory to allow multiple variable files to be loaded by Ansible. 2026-01-21 20:09:13 -08:00
chrisfu
6b24abf839 Configure Ansible to run from project root and improve vault integration: Added root ansible.cfg, updated infrastructure/ansible.cfg, added etc/init_ansible.sh, and updated ad_dc.yml for vault integration. 2026-01-21 19:10:52 -08:00
chrisfu
9d96a94bec ansible: replace no_swap role with swap role and enhance K3s setup
- Removed the `no_swap` role and replaced it with the new `swap` role for managing swap configurations.
- Updated the K3s role to dynamically detect the first available wired interface IP and validate it.
- Enhanced K3s installation by adding support for disabling SELinux RPM.
- Adjusted inventory and `site.yml` to align with the updated roles.
- Added `.vault_pass` to `.gitignore`.
- Updated Ansible configuration with result format compatibility for different versions.
2026-01-21 16:19:17 -08:00
chrisfu
1a30f44106 ansible: replace no_swap role with swap role and enhance K3s setup
- Removed the `no_swap` role and replaced it with the new `swap` role for managing swap configurations.
- Updated the K3s role to dynamically detect the first available wired interface IP and validate it.
- Enhanced K3s installation by adding support for disabling SELinux RPM.
- Adjusted inventory and `site.yml` to align with the updated roles.
- Added `.vault_pass` to `.gitignore`.
- Updated Ansible configuration with result format compatibility for different versions.
2026-01-21 16:19:14 -08:00
chrisfu
e69b5f2008 ansible: replace no_swap role with swap role and enhance K3s setup
- Removed the `no_swap` role and replaced it with the new `swap` role for managing swap configurations.
- Updated the K3s role to dynamically detect the first available wired interface IP and validate it.
- Enhanced K3s installation by adding support for disabling SELinux RPM.
- Adjusted inventory and `site.yml` to align with the updated roles.
- Added `.vault_pass` to `.gitignore`.
- Updated Ansible configuration with result format compatibility for different versions.
2026-01-21 16:16:14 -08:00
chrisfu
bee7c09d89 infrastructure: rsyslogd use fqdn directory names 2026-01-21 16:00:53 -08:00
chrisfu
1a69097699 fix hostname typo 2026-01-21 10:38:39 -08:00
chrisfu
f4d96211d8 ansible: add K3s role files 2026-01-21 10:27:27 -08:00
chrisfu
772a36294e ansible: configure K3s cluster and update inventory
- Added `k3s_hosts` group to the inventory and associated host entries.
- Updated `site.yml` to include roles for disabling swap and setting up the K3s cluster.
2026-01-21 10:23:05 -08:00
chrisfu
a6cc1173e9 ansible: update inventory and configure rsyslog for Linux hosts
- Add `Linux_Hosts` group in inventory with child nodes.
- Update `site.yml` to apply `rsyslog` role to `Linux_Hosts` with privilege escalation.
2026-01-20 22:16:32 -08:00
chrisfu
11746f40e9 chore: remove legacy Analysis-00.toc file from build directory
Deleted outdated and unused Analysis-00.toc file to clean up the project structure.
2026-01-19 23:35:07 -08:00
chrisfu
cbfe930b78 feat: add ncurses interface, build system, and embedded resources
Major feature additions and infrastructure improvements for the Prole
Database Installer, enabling command-line operation and packaged binary
distribution.

## Ncurses Terminal Interface

- Add installer/ncurses_ui.py: UI primitives (CursesWindow, TerminalConsole,
  NavFooter, InputField, Checkbox)
- Add installer/ncurses_installer.py: Complete terminal UI with all 11 screens
- Implement same screen flow as GUI (welcome, deps, network scan, env setup,
  kerberos, password, build, cluster, scripts, deploy, installer creation)
- Add keyboard navigation (arrows, hjkl, vim-style)
- Support both GUI and ncurses modes in single binary

## Automatic Display Detection

- Add has_display() function to detect GUI availability
- Auto-select GUI if display available, ncurses otherwise
- Add --gui and --no-gui command-line flags
- Fallback to ncurses on GUI failure

## Build System and Packaging

- Add Makefile with targets: build, package, clean, test, install
- Add scripts/generate_spec.py: PyInstaller spec generator
- Add installer.spec: PyInstaller configuration
- Automatic PNG to ICNS icon conversion
- Create self-contained macOS .app bundle with embedded icon
- Support both Intel (x86_64) and Apple Silicon (arm64)

## Embedded Resources

- Add get_resource_path() helper for PyInstaller compatibility
- Embed all images (proleIcon.png, proleLogo.png, proleLogoSepia.png)
- Embed prole-net/prole-scan binary (6.8 MB universal binary)
- Embed prole-app/dist/Prole Tools.app (12 MB app bundle)
- Embed prole-db/ Docker build context

## Writable Directory Fixes

- Create ~/.prole/build/prole-db/ for Docker builds (fixes read-only _MEIPASS)
- Create ~/.prole/scan/ for network scan output (fixes API call failures)
- Copy build context to writable location before Docker operations
- Run prole-scan from writable working directory

## Documentation

- docs/build-system.md: Complete build system guide
- docs/ncurses-installer.md: Ncurses interface documentation
- docs/RELEASE-NOTES.md: Feature overview and release notes
- docs/IMAGE-RESOURCES.md: Image resource management
- docs/EMBEDDED-RESOURCES.md: Binary and app bundle embedding
- docs/DOCKER-BUILD-FIX.md: Docker build hang solution
- docs/PROLE-HOME-DIRECTORY.md: ~/.prole directory structure
- BUILD.md: Quick build reference

## Key Changes

install.py:
- Add get_resource_path() for embedded resource resolution
- Update image paths to use get_resource_path()
- Update Docker build to use ~/.prole/build/prole-db/
- Update network scan to use ~/.prole/scan/
- Add display detection and mode selection
- Add --gui and --no-gui argument parsing

## Testing

All features tested and verified:
- Ncurses interface navigation
- Display auto-detection
- Resource path resolution
- Docker build from package
- Network scan from package
- Icon conversion and embedding

Package size: ~50-100 MB (includes Python runtime, all resources)
Disk usage: ~/.prole/ uses ~2-6 MB

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 23:10:37 -08:00
chrisfu
bc0ff26f87 feat(install): restore Initialization Scripts screen and refactor for stability
- Restored "Initialization Scripts" screen (step #9) and corrected wizard navigation flow.
- Refactored UI/logic separation by introducing `ProleController` for script execution.
- Implemented sequential execution of initialization scripts with automatic tab switching:
    1. init_openbao.sh initialize
    2. init_cloudnative_pg.sh initialize
    3. init_prole-db.sh start
    4. init_port_forwards.sh start
- Integrated AI-powered environment summary using local Ollama (llama3) and kubectl.
- Fixed Tkinter `TclError` race conditions using `safe_after` and widget existence checks.
- Resolved `SyntaxError` related to `PROJECT_ROOT` global declaration.
- Synchronized sidebar numbering and footer navigation across the 11-step installer.
2026-01-19 21:14:52 -08:00
chrisfu
5b76fc9b6e pihole ansible management fixes 2026-01-19 01:41:45 -08:00
chrisfu
9cfac76b4c ansible managed rsyslog 2026-01-18 22:49:49 -08:00
chrisfu
d55459b83f ansible managed piholes 2026-01-18 22:01:23 -08:00
chrisfu
031bd51a80 Configure Pi-hole DNS forwarding and Samba AD reverse DNS zone 2026-01-18 20:38:24 -08:00
chrisfu
d9418b8b43 ansible roles: pihole_dnx samaba_reverse_dns 2026-01-18 20:12:59 -08:00
chrisfu
9b50fb963d Merge branch 'main' of github.com:dredx/prole 2026-01-18 20:03:18 -08:00
chrisfu
c4156f58d0 ansible starts here 2026-01-18 20:02:41 -08:00
chrisfu
8fff62721d Merge remote-tracking branch 'origin/main' 2026-01-18 16:35:38 -08:00
chrisfu
96b68c493f remove background files 2026-01-18 16:35:30 -08:00
chrisfu
15a60575ad remove background files 2026-01-18 16:14:09 -08:00
chrisfu
f2fea37302 remove unnecessary files 2026-01-18 16:07:12 -08:00
chrisfu
c462c3fb71 Cleanup: Remove unused ProleRouter components and update network scan references
- Deleted ProleRouter-related YAML files (services, deployments, storage) and unused `call_openapi.py`.
- Updated installer to reference `prole-net/prole-scan` instead of outdated `net/scan`.
- Renamed `network_prompt.txt` to match the new directory structure.
2026-01-18 15:12:21 -08:00
chrisfu
197c72dd7a Refactor prole-app and establish temporary release process
- Moved prole-tools-app to prole-app at the project root to make it self-contained for transition to its own repository.
- Created prole-tools-app/dist/ directory to host build artifacts.
- Generated distribution artifacts (Prole Tools.app and Prole Tools.zip) using prole-app/build.sh package.
- Checked in the generated artifacts to prole-tools-app/dist/ (bypassing .gitignore for temporary release process).
Changes Summary
•
Renamed directory prole-tools-app/ to prole-app/.
•
Populated prole-tools-app/dist/ with the latest build output from prole-app/build.sh.
•
Staged all changes, including the forced addition of ignored artifacts in prole-tools-app/dist/.
2026-01-18 15:04:23 -08:00
chrisfu
a4d0a2e0a3 Update prole-db docker tag to 17.7-037 and update pg_prolelog deb package 2026-01-15 11:58:39 -08:00
chrisfu
8df19ba986 updated pg_prolelog packages 2026-01-12 23:00:46 -08:00
chrisfu
bc2d051dc7 temporarily add pg_prolelog artifact 2026-01-12 12:01:41 -08:00
chrisfu
f2cd348780 Merge branch 'main' of github.com:dredx/prole 2026-01-12 11:52:30 -08:00
chrisfu
adb68f0c73 remove overzealous check in cache files 2026-01-12 11:43:55 -08:00
chrisfu
80587c167c Fix navigation infinite loop in installer and add comprehensive test coverage - Fixed infinite loop in ProleInstaller.show_page by preventing default fallback to page 0 on invalid IDs - Improved on_next/on_prev logic with robust sequence checks - Added tests/test_navigation.py to verify navigation flows and edge cases - Cleaned up redundant imports and page registrations in install.py 2026-01-11 20:13:53 -08:00
chrisfu
f7ba4f6235 Milestone: Unified Prole Installation Experience. Successfully established a new user-friendly installation workflow for macOS: Restored traditional drag-and-drop installer for Prole.app; Introduced a standalone 'setup' binary built with PyInstaller, enabling users to run the full dependency installer without a local Python environment; Automated DMG creation with a clean layout including Prole.app, the setup tool, and an Applications symlink; Enhanced the internal app launcher to automatically source local environment configurations ($PROLE_HOME/env.sh); Streamlined the codebase by rolling back complex multi-terminal 'Remote Join' logic in favor of this robust, static-binary approach. 2026-01-11 15:37:10 -08:00
chrisfu
906392d462 feat(installer): improve UI and add test coverage for core features
- Refactored installer UI with updated canvas rendering, sidebar navigation, and footer buttons.
- Enhanced styling for macOS compatibility and consistent design across controls.
- Added Pytest-based unit tests for `screen.py` and `config.py`.
- Expanded dependency catalog with new tools like `tshark` and `pyshark`.
- Improved error tolerance for background rendering and added placeholders for Kerberos configuration.
2026-01-08 21:51:30 -08:00