100 lines
3.2 KiB
Makefile
100 lines
3.2 KiB
Makefile
# Samba AD DC - operational entry points. `make` prints this list.
|
|
SHELL := /bin/bash
|
|
IMAGE ?= local/samba-ad-dc:4.22-debian13
|
|
CID ?= $(shell sed -n 's/^AD_CONTAINER=//p' .env 2>/dev/null | head -1)
|
|
CID := $(if $(CID),$(CID),ad-dc)
|
|
|
|
.PHONY: help build up down restart logs ps verify verify-full backup tls lab labdown smoke drill ldaps test \
|
|
shell secrets passwd fsmo repl-status clean
|
|
|
|
help:
|
|
@echo "Samba AD DC on Debian 13 (container: $(IMAGE), name: $(CID))"
|
|
@echo
|
|
@echo " make secrets create secrets/ad_admin.password (random, 0600)"
|
|
@echo " make build build the image"
|
|
@echo " make up start the DC (host networking - check ports 53/88/445 first)"
|
|
@echo " make down stop it make restart: same, harder"
|
|
@echo " make logs follow container logs"
|
|
@echo " make verify run the verification battery (add FULL=1 for dbcheck)"
|
|
@echo " make backup online full-domain backup into ./backups"
|
|
@echo " make tls build internal CA + LDAPS leaf cert"
|
|
@echo " make passwd rotate the administrator password (interactive)"
|
|
@echo " make fsmo show FSMO role ownership"
|
|
@echo " make repl-status replication status (meaningful once a replica exists)"
|
|
@echo
|
|
@echo " make lab isolated TESTLAB.LOCAL lab DC (no host ports)"
|
|
@echo " make labdown destroy the lab"
|
|
@echo " make smoke full isolated end-to-end test (build -> provision -> verify -> restart)"
|
|
@echo " make drill disaster-recovery drill (backup -> restore -> SID + data assertions)"
|
|
@echo " make ldaps LDAPS: chain verifies, SAN matches, untrusted clients rejected"
|
|
@echo " make test smoke + drill + ldaps (run before every upgrade)"
|
|
@echo " make restore BACKUP=backups/xxx.tgz disaster recovery drill"
|
|
|
|
build:
|
|
docker build -t $(IMAGE) -f image/Dockerfile .
|
|
|
|
up:
|
|
docker compose up -d
|
|
|
|
down:
|
|
docker compose down
|
|
|
|
restart:
|
|
docker compose restart
|
|
|
|
logs:
|
|
docker compose logs -f --tail=100
|
|
|
|
ps:
|
|
@docker compose ps -a
|
|
|
|
verify:
|
|
AD_CONTAINER=$(CID) ./scripts/verify.sh $(if $(FULL),--full,)
|
|
|
|
backup:
|
|
./scripts/backup.sh
|
|
|
|
tls:
|
|
./scripts/tls.sh
|
|
|
|
secrets:
|
|
./scripts/mksecrets.sh
|
|
|
|
passwd:
|
|
docker exec -it $(CID) samba-tool user setpassword $(shell grep -m1 '^AD_ADMIN_USER=' .env 2>/dev/null | cut -d= -f2 || echo administrator)
|
|
|
|
fsmo:
|
|
docker exec -it $(CID) samba-tool fsmo show
|
|
|
|
repl-status:
|
|
docker exec -it $(CID) samba-tool drs showrepl
|
|
|
|
lab:
|
|
docker compose -f docker-compose.lab.yml up -d
|
|
@echo "lab up: realm TESTLAB.LOCAL, host alias dc1.testlab.local -> 172.28.90.10"
|
|
@echo "destroy with: make labdown"
|
|
|
|
labdown:
|
|
docker compose -f docker-compose.lab.yml down -v
|
|
|
|
smoke:
|
|
./tests/smoke.sh
|
|
|
|
drill:
|
|
./tests/dr-drill.sh
|
|
|
|
ldaps:
|
|
./scripts/tls.sh
|
|
./tests/ldaps-test.sh
|
|
|
|
test: smoke drill ldaps
|
|
@echo "all test suites passed"
|
|
|
|
restore:
|
|
@test -n "$(BACKUP)" || { echo "usage: make restore BACKUP=backups/<file>.tgz"; exit 2; }
|
|
./scripts/restore.sh $(BACKUP)
|
|
|
|
clean:
|
|
docker compose down -v --remove-orphans || true
|
|
docker compose -f docker-compose.lab.yml down -v --remove-orphans || true
|
|
@echo "left ./conf ./data ./secrets ./backups in place (delete manually if you really mean it)"
|