10 Commits
Author SHA1 Message Date
jmrothst eb2dd37385 feat(ensure_apache): synchronize website content from local temp staging
Replace remote git checkouts on target web nodes with an orchestrated
local staging and rsync deployment pipeline.

Recent OpenSSH updates in Fedora dropped agent forwarding into remote
sessions, breaking remote git fetch operations. Furthermore, pulling
directly from Git on production servers exposed .git repositories in
public webroots and required target servers to hold Git credentials.

- Create an ephemeral, unguessable local staging directory (0700) on
  localhost via ansible.builtin.tempfile scoped by inventory_hostname.
- Stage checkouts using repo hash prefixes to prevent collision when
  public and private servers share identical FQDNs.
- Execute shallow checkouts (depth: 1) on the control node using local
  credentials.
- Push website content to /srv/http/{fqdn}/ via ansible.posix.synchronize
  with checksum delta comparisons and automated cleanup (--delete).
- Introduce ensure_apache_rsync_excludes in role defaults to strip
  .git*, .env*, CI/CD pipelines (.gitea, .github), editor swap files,
  and OS metadata while preserving .htaccess and /.well-known/.
- Enforce httpd_sys_content_t SELinux context recursively across webroots.
- Guarantee staging directory cleanup on localhost via an always block.
2026-09-07 23:35:05 -05:00
jmrothst 4078b0b064 refactor(roles): remove redundant post-task service and package assertions
Eliminate post-verification discovery and assert tasks (service_facts
and package_facts) across all 19 roles and align AGENTS.md.

Ansible's built-in declarative modules (package, service) already enforce
target state natively and abort execution immediately on failure. The
subsequent assertion loops were redundant, added significant runtime
overhead, and produced false positives on non-service systemd units
(.socket, .timer) and service aliases (e.g., dbus.socket failing under
service_facts).

- Remove service_facts and Assert Managed Services Are Active across
  11 service roles (ensure_apache, ensure_cockpit, ensure_dbus,
  ensure_dovecot, ensure_fail2ban, ensure_firewalld, ensure_gitea,
  ensure_mariadb, ensure_podman, ensure_postfix, ensure_timezone).
- Remove package_facts and Assert Managed Packages Are Installed across
  8 package roles (ensure_ansible_prereq, ensure_git, ensure_os_patch,
  ensure_os_upgrade, ensure_repo_epel, ensure_repo_rpmfusion,
  ensure_rsync, ensure_vim).
- Update AGENTS.md Section 8.2, Section 10, and Section 21 to codify
  declarative state enforcement and prohibit redundant post-task
  assertion loops.
2026-09-07 23:34:19 -05:00
jmrothst a81059d4e4 Roles only run on intended supported OS, and minor cleanup of when statements to match 2026-09-01 22:01:59 -05:00
jmrothst fca5c83e4d Fix the name on all "name" tasks, but not name variables to pass ansible linting 2026-08-10 21:03:13 -05:00
jmrothst 306397517d yaml and ansible linting clean ups 2026-08-09 23:04:34 -05:00
jmrothst 331f8beb3b Add firewalld configuration role, and have services that need it depend on it. 2026-08-09 11:29:08 -05:00
jmrothst 6c7ecfc724 Add fail2ban role and clean up yaml lint noise 2026-08-08 23:50:32 -05:00
jmrothst 44ccab8f9b Git needs the directory root owned, not apache owned... Bad ansible-lint repair suggestion 2026-08-02 23:35:17 -05:00
jmrothst 07222209ff ansible-lint cleanups 2026-08-02 21:43:04 -05:00
jmrothst 64ae500730 Add 'roles/ensure_apache/' from commit '5f5133a14d007558861282c4925c468052706bc8'
git-subtree-dir: roles/ensure_apache
git-subtree-mainline: 0869eeaaf4
git-subtree-split: 5f5133a14d
2026-05-10 21:44:33 -05:00