Add an RPZ blocklist on the Unbound resolvers that returns NXDOMAIN for a set of domains (and subdomains) and logs only those matches under rpz-log tag "blocklist". Domains are templated from resolver_blocked_domains (single source of truth) into /etc/unbound/blocklist.rpz; respip module enabled for RPZ support. Fix deprecation warnings across the Ansible tree: - apt_repository -> deb822_repository (monitor, aprsc, uisp, grafana), removing stale .list files and adding update_cache where deb822 drops it - community.mysql.* -> ansible.mysql.* (monitor) and requirements.yml - top-level facts -> ansible_facts[...] (ansible_os_family, distribution_release, fqdn, architecture, default_ipv4) repo-wide |
||
|---|---|---|
| .. | ||
| defaults | ||
| files | ||
| handlers | ||
| tasks | ||
| templates | ||
| README.md | ||
monitor role
Builds an Icinga2 master + Icinga Web 2 stack matching the live install on
monitor.vntx.net:
- Ubuntu 22.04 + Apache 2.4 + mod_php + MariaDB 10.6 + Icinga 2.16
- Single zone, master-only (no satellites configured but
zones.confis templated to add them later) - IDO-MySQL backend;
icinga2daemon writes status,icingauser read-only-selects for the Web 2 UI,icingaweb2user owns the UI's own DB - 25 dormant
conf.d/*host + service files shipped underfiles/and copied verbatim. The live install hasinclude_recursive "conf.d"commented out (a node-setup CLI artifact); this role mirrors that. Seticinga2_load_confd: truein host_vars to rehydrate them.
Required vault variables
Encrypt these with ansible-vault (e.g. host_vars/monitor.vntx.net/vault.yml):
# Icinga API users (api-users.conf)
icinga2_api_user_root_password: "..."
icinga2_api_user_icingaweb2_password: "..."
# Icinga2 daemon → IDO database
icinga2_ido_db_password: "..."
# icingaweb2 UI → its own database
icingaweb2_db_password: "..."
# icingaweb2 UI → IDO database (separate read-only user)
icingaweb2_ido_db_password: "..."
# Constants
icinga2_iftraffic_snmp_community: "..."
icinga2_ticket_salt: "" # only needed for distributed setups
# PagerDuty integration keys
icinga2_pagerduty_key: "..."
icinga2_pagerduty_servers_key: "..."
# icingaweb2 admin user (web UI password). Generate the hash on any host
# with PHP installed: php -r 'echo password_hash("plaintext", PASSWORD_DEFAULT);'
icingaweb2_admin_password_hash: "$2y$10$..."
What the role does NOT manage
- Let's Encrypt certificate provisioning. The live install used
certbot --apache; this role assumes the cert already exists at/etc/letsencrypt/live/<host>/. Run certbot once by hand. - The
icingaweb2schema is imported once on first install. Schema upgrades after Icinga Web 2 minor version bumps are not handled here — see/usr/share/icingaweb2/schema/upgrades/and run the matching upgrade SQL by hand. - Distributed monitoring satellites. The role provisions a single-node
master; add Endpoint/Zone objects in
zones.d/(or extendzones.conf.j2) when you wire satellites in.