Fix a SYSVOL sync service that terminated itself, and record the test results
Deploying the image found a real defect. adc-sysvol-sync.service declared Requires=samba-ad-dc.service, and the sync restarts samba-ad-dc after copying idmap.ldb. systemd stops units that *require* a service being restarted, so the sync killed itself with SIGTERM part way through: adc-sysvol-sync[2065]: syncing idmap.ldb from 10.10.10.22 (one time) adc-sysvol-sync.service: Main process exited, code=killed, status=15/TERM adc-sysvol-sync.service: Failed with result 'signal' The timer started it again and the second run succeeded, so the end state looked correct while the mechanism was broken — the kind of fault that stays hidden until it matters. The dependency is Wants= now, which gives the ordering without the stop propagation, and the restart is --no-block. The image was tested end to end: two DCs deployed from MAAS, the first provisioning the domain in 21 seconds and the second joining in 23, both unattended and on the first attempt. DRS replication is healthy, the FSMO roles sit where they should, and a file written into SYSVOL on one DC reached the other within a timer interval, ACLs reset. A Windows Server 2025 machine then joined the domain: it found the DC through the _ldap._tcp.dc._msdcs SRV record, Add-Computer succeeded, and after rebooting the secure channel tested good. nltest reports the DC with the full set of capabilities Windows expects — PDC GC DS LDAP KDC TIMESERV GTIMESERV WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST FULL_SECRET. Group Policy refresh completed, and LDAP queries from the client listed both DCs, the Windows machine account and the domain users. One genuine limitation surfaced and now has its own section: Samba does not implement ADWS, so port 9389 is closed and the PowerShell ActiveDirectory module cannot be used against these DCs. ADUC, ADSI and raw LDAP are unaffected, which is what the LDAP queries above demonstrate. Verified status now separates what was observed from what was not. Notably still untested: applying an actual GPO, an interactive domain logon, seizing FSMO roles after losing a DC, BIND9_DLZ, and real bare metal. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,11 @@
|
||||
Description=Replicate SYSVOL from another domain controller
|
||||
Documentation=https://wiki.samba.org/index.php/SysVol_replication_(DFS-R)
|
||||
After=samba-ad-dc.service
|
||||
Requires=samba-ad-dc.service
|
||||
# Wants=, deliberately not Requires=. The sync restarts samba-ad-dc after it
|
||||
# copies idmap.ldb, and a Requires= dependency makes systemd stop this unit when
|
||||
# the thing it requires restarts - so the sync killed itself mid-run with
|
||||
# SIGTERM. Ordering is all that is wanted here; the script checks for SYSVOL.
|
||||
Wants=samba-ad-dc.service
|
||||
ConditionPathExists=/etc/adc-maas/sysvol-sync.conf
|
||||
|
||||
[Service]
|
||||
|
||||
Reference in New Issue
Block a user