Files
computer-playbook/scripts/system/network/dns/setup
kevinveenbirkenbachandClaude Opus 4.7 4d0ebc2b91 refactor(suppress): migrate # noqa: <rule> to # nocheck: <rule> repo-wide
Reason: ruff parses every `# noqa: <code>` marker as a flake8 directive
and warns on every non-flake8 rule key. Every catalog rule in
`docs/contributing/actions/testing/suppression.md` is project-specific
(kebab-case), so `# noqa:` markers fired the warning on every parse.
`# nocheck:` is the project synonym ruff ignores.

Scope:
- 41 `roles/*/meta/services.yml` + 1 task + 1 .cfg.j2 template: pure
  noqa→nocheck swap for catalog rules. Mixed flake8 markers
  (`# noqa: E402, X`) preserved verbatim.
- 5 production .py + 2 production scripts: same swap.
- All catalog-rule lints' docstrings updated; redundant "or # nocheck:"
  parentheticals collapsed to a single nocheck form.
- `utils/annotations/suppress.py`: docstring rewritten to spell out
  the new convention. Parser still accepts both keywords as synonyms.
- `docs/contributing/actions/testing/suppression.md`: convention
  rewritten to mandate `nocheck:`; missing `domain-spot` and
  `literal-protocol-lookup` rows added; "enforced by" pointer added.

New guard:
- `tests/lint/repository/test_noqa_only_ruff_codes.py`: meta-lint
  failing any `# noqa: <code>` whose codes don't match `[A-Z]+\d+`
  (real ruff/flake8 shape). Allowlists the impl, its unit test, the
  catalog page, the direct-yaml lint, and itself.
- `tests/lint/repository/test_no_direct_yaml_calls.py`: hardened to
  reject the `noqa:` form via inlined regex (no longer routed through
  `utils.annotations.suppress`).

Tangential cleanups carried in this same commit:
- `utils/cache/yaml.py`, `utils/handler/yaml.py`: 6 `direct-yaml`
  markers swapped.
- `utils/cache/base.py`: `from . import PROJECT_ROOT, ROLES_DIR` moved
  up to the import block (E402).
- `cli/create/role/__init__.py`: reordered so PROJECT_ROOT is defined
  before `__main__` is imported (also fixed a latent circular import).
- PROJECT_ROOT migration tail: 2 new `__init__.py` modules + 10 test
  files swapped from `def repo_root()` to `from . import PROJECT_ROOT`.
- ~20 ruff auto-fix removals of unused `from pathlib import Path`.

Verification:
- `ruff check .` clean.
- 23 suppression-related tests pass.
- The new lint detects all three regression shapes (project rule alone,
  mixed with real ruff code, lowercase-only).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 14:07:55 +02:00
..
…

🌐 DNS Setup Scripts

This directory contains platform-specific scripts for setting up local DNS resolution for the infinito.example domain (and subdomains) on the development machine.

All scripts map *.infinito.example → 127.0.0.1 so that local deployments are reachable via their expected hostnames.


📄 Scripts

🐧 linux.sh

General-purpose DNS setup for Linux systems. Supports multiple strategies depending on the environment:

  • NetworkManager + dnsmasq. preferred path when NetworkManager is active; configures the NM dnsmasq plugin with a wildcard zone entry.
  • System dnsmasq. fallback when NetworkManager is not running; configures a standalone dnsmasq service.
  • /etc/hosts fallback. used in non-systemd environments (e.g. Docker containers, LXC) where service management is unavailable; writes a managed block of host entries directly into the hosts file.

Shared helper functions are sourced from ../common.sh.

🪟 wsl.sh

WSL2-specific DNS setup. Only executes when running inside a WSL2 environment (detected via /proc/version). Configures:

  • dnsmasq with the discovered WSL2 upstream DNS gateway as forwarder.
  • systemd-resolved stub listener disabled to avoid port conflicts.
  • /etc/resolv.conf pointed at the local dnsmasq instance (127.0.0.1).
  • /etc/wsl.conf set to generateResolvConf=false to prevent WSL from overwriting the resolver config on restart.