chore(demo-gymburgdorf): finish ACME, LDAP, DMZ routing for live inventory
- ACME via DNS-01 against internal NS (172.16.9.169) with TCP-only + disableANSChecks so the DMZ traefik can issue LE certs without reaching public NS IPs. - Migrate single-domain vars to `*_domains` lists (authentik, nextcloud, collabora, garage_s3) so public + *.int.* SANs share one cert and server-to-server traffic stays in the LAN. - Wire `traefik_dmz_exposed_services` per backend host (application, storage) with explicit `backend_host` overrides pointing at internal FQDNs — DMZ traefik now validates upstream certs against SAN names. - Nextcloud notify_push setup on internal FQDN to avoid DMZ hairpin; collabora WOPI / authentik LDAP outpost wired to *.int.* equivalents. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
103d95740d
commit
b59b2df82a
13 changed files with 553 additions and 171 deletions
57
README.md
57
README.md
|
|
@ -1,14 +1,61 @@
|
|||
# reference-ansible
|
||||
|
||||
Ansible-Setup für Demo-Deployments (`demo-gymburgdorf`,
|
||||
`demo-mbazürich`, `demo-phbern`) und lokale Vagrant-Tests. Rollen
|
||||
kommen aus der Collection
|
||||
[`digitalboard.core`](https://git.digitalboard.ch/Digitalboard/digitalboard.core)
|
||||
(via [requirements.yml](requirements.yml)).
|
||||
|
||||
> Architektur, Variablen-Hierarchie, Service-Topologie und der
|
||||
> Walkthrough zum Aufsetzen neuer Mandanten: siehe
|
||||
> **[ARCHITECTURE.md](ARCHITECTURE.md)**.
|
||||
|
||||
### Secrets
|
||||
Secrets are managed using [OpenBao](https://bao.digitalboard.ch).
|
||||
The bao CLI needs to be installed. e.g `sudo pacman -S openbao python-hvac`
|
||||
## Voraussetzungen
|
||||
|
||||
- `ansible` (Core ≥ 2.15)
|
||||
- `bao` CLI ([OpenBao](https://openbao.org/)) — z. B.
|
||||
`sudo pacman -S openbao python-hvac` (Arch) oder Homebrew
|
||||
- `python-hvac` (für `community.hashi_vault` Lookups)
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
make install # installiert digitalboard.core + community.hashi_vault nach ./collections/
|
||||
```
|
||||
|
||||
## Secrets (OpenBao)
|
||||
|
||||
Vor jedem Deploy in **derselben Shell** authentisieren:
|
||||
|
||||
Authenticate and export token before running playbooks:
|
||||
```bash
|
||||
export BAO_ADDR=https://bao.digitalboard.ch
|
||||
bao login -method=oidc -path=Digitalboard
|
||||
export VAULT_TOKEN=$(bao print token)
|
||||
```
|
||||
```
|
||||
|
||||
> ⚠️ `make bao` allein reicht **nicht** — jedes `make`-Target läuft in
|
||||
> einer neuen Shell, der dort gesetzte `VAULT_TOKEN` lebt nur während
|
||||
> `make bao` selbst. Entweder die drei Befehle oben manuell im Shell
|
||||
> ausführen oder `make bao deploy_site_demo_gymburgdorf` als **einen**
|
||||
> Aufruf chainen.
|
||||
|
||||
## Deploy
|
||||
|
||||
```bash
|
||||
make ping_demo # Smoke-Test gegen alle Demo-Inventories
|
||||
make deploy_site_demo_gymburgdorf # einzelnes Demo-Site
|
||||
make deploy_site_demo # alle drei Demo-Sites
|
||||
```
|
||||
|
||||
Auf macOS setzt das [Makefile](Makefile) zusätzlich
|
||||
`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES` — ohne diese Env-Var
|
||||
crashen Ansible-Forks beim ersten `community.hashi_vault`-Lookup.
|
||||
|
||||
## Inventories
|
||||
|
||||
| Inventory | Zweck |
|
||||
|---|---|
|
||||
| [`inventories/demo-gymburgdorf/`](inventories/demo-gymburgdorf/) | Demo-Mandant — als Vorlage für neue Mandanten empfohlen, siehe [ARCHITECTURE.md § 10](ARCHITECTURE.md#10-walkthrough-neuen-demo-mandanten-anlegen) |
|
||||
| [`inventories/demo-mbazürich/`](inventories/demo-mbazürich/) | Demo-Mandant |
|
||||
| [`inventories/demo-phbern/`](inventories/demo-phbern/) | Demo-Mandant |
|
||||
| [`inventories/vagrant/`](inventories/vagrant/) | lokale Test-VMs; **inkompatible Gruppen-Topologie** zu den Demo-Inventories |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue