Commit Graph

3 Commits (61ff61d432d1d12b0618adeec7def2aa92954370)

Author SHA1 Message Date
Amir Alexander Abdelbaki 61ff61d432 fix(modules): guard remaining interactive prompts for unattended installs
Audited every module for prompts that would hang an answerfile/unattended run.
The EWW form-factor question and several interactive-config modules were still
unguarded (only hyprlua had been fixed):

- hyprland.sh, niri.sh: skip the EWW form-factor `read` when MARCHY_UNATTENDED=1
  or stdin is not a TTY, defaulting to the desktop/no-battery bar (matches hyprlua).
- mail-notmuch.sh, caldav-sync.sh: install the tools, then exit cleanly in
  unattended mode instead of blocking on the account/server credential prompts —
  the user configures the account after first boot.
- freeipa-server.sh: bail out early in unattended mode; FreeIPA server provisioning
  is interactive and must run on a booted system (ipa-server-install needs running
  services), so it can never run during the install.

freeipa-client.sh is left as-is: it has a genuine --unattended enrolment path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R5kHioUMK3mtf2eiLEozCM
2026-06-27 02:09:04 +02:00
Amir Alexander Abdelbaki 0c88a09a0f feat(installer): add structured logging to all modules and installers
Add modules/lib/logging.sh with log(), skip(), warn(), err() helpers.
Source it in all 84 scripts (core, DEs, optional apps) and replace bare
echo calls with structured log messages. Add log file capture to install.sh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 01:44:31 +02:00
Amir Alexander Abdelbaki 7279a781b0 setup: add FreeIPA server module and generic client script
freeipa-server.sh: interactive installer that collects domain, realm,
IP, admin/DM passwords, DNS, KRA, NTP, and AWX/Ansible settings;
runs conflict pre-flight (checks for existing named/dirsrv/krb5kdc,
ports 389/636/88, and /etc/ipa/default.conf); configures firewalld/ufw;
runs ipa-server-install; and outputs a ready-to-distribute client
package to ~/freeipa-output/ containing:
  - freeipa-enroll.sh (server defaults baked in)
  - freeipa-client.sh (server defaults baked in)
  - freeipa-client-answerfile.json (pre-filled, password intentionally blank)
  - auto-enroll-ansible.sh (AWX defaults embedded, still overridable)
  - README.txt

freeipa-client.sh: thin wrapper around freeipa-enroll.sh with three modes:
  --answerfile FILE   read JSON with jq, build args, exec freeipa-enroll.sh
  --interactive       prompt for every field, then exec freeipa-enroll.sh
  [flags]             passthrough directly to freeipa-enroll.sh

freeipa-client-answerfile.json: template with current server defaults
(freeipa.abdelbaki.eu); freeipa-server.sh sed-replaces these when
generating customized copies.

Supported server OS: RHEL/Rocky/AlmaLinux/Fedora (primary), Arch (warned).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 11:12:31 +02:00