Bug 29460 - Vollständiges Entfernen eines Samba4-DCs
Vollständiges Entfernen eines Samba4-DCs
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Samba4
UCS 3.0
Other Linux
: P5 enhancement (vote)
: UCS 3.1-0-errata
Assigned To: Arvid Requate
Stefan Gohmann
:
Depends on:
Blocks: 30544
  Show dependency treegraph
 
Reported: 2012-11-29 14:15 CET by Ingo Steuwer
Modified: 2013-02-25 14:05 CET (History)
4 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:
requate: Patch_Available+


Attachments
purge_s4_computer.py (7.12 KB, patch)
2012-11-29 17:39 CET, Arvid Requate
Details | Diff
purge_s4_computer.py (16.45 KB, text/plain)
2012-11-29 20:00 CET, Arvid Requate
Details
purge_s4_computer.py mit site-Unterstützung (13.03 KB, text/plain)
2012-12-01 12:47 CET, Arvid Requate
Details
purge_s4_computer.py (13.18 KB, text/plain)
2013-02-07 14:50 CET, Arvid Requate
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ingo Steuwer univentionstaff 2012-11-29 14:15:29 CET
Das Entfernen eines Samba4-DCs aus UCS und Samba4 benötigt im Moment mehrere, teils sehr technische und potentiell gefährliche Schritte. Dazu sollte es ein Tool geben oder es sollte vollständig über den S4-Connector/Samba4 abgebildet werden.

Mindestens notwendig sind:
- Entfernen via UDM inkl. DNS/DHCP-Einträge
- (rekursives) Entfernen der Server-Objekte unter cn=configuration,$LDAP_BASE im Samba4 per ldbdel

Entfernt werden sollten auch weitere Einträge im S4 sofern vorhanden sowie Einträge im DNS (Service Records, Alias sofern nicht automatisch entfernt).
Comment 1 Arvid Requate univentionstaff 2012-11-29 17:39:55 CET
Created attachment 4850 [details]
purge_s4_computer.py

Eine erste Version eines solchen Skriptes.
Comment 2 Arvid Requate univentionstaff 2012-11-29 20:00:48 CET
Created attachment 4851 [details]
purge_s4_computer.py

Sollte das System jetzt auch aus den DNS SRV records herausnehmen und das Server GUID DNS Alias entfernen.
Comment 3 Stefan Gohmann univentionstaff 2012-11-29 21:41:26 CET
Vielleicht könnte das automatisch vor dem erneuten Joinen ausgeführt werden.

Siehe Bug #29459 und Bug #29083.
Comment 4 Ingo Steuwer univentionstaff 2012-11-30 09:26:48 CET
(In reply to comment #3)
> Vielleicht könnte das automatisch vor dem erneuten Joinen ausgeführt werden.
> 
> Siehe Bug #29459 und Bug #29083.

Das sollte aber auch separat möglich sein, wenn ein DC wirklich "ausser Betrieb" geht. Idealer Weise würden diese "Aufräumarbeiten" direkt über die UDM-Änderung ausgelöst werden können. Auch müsste man mal klären wie sich AD beim Löschen des Rechnerkontos verhält und Samba4 hier auf "Kompatibilität" prüfen.
Comment 5 Arvid Requate univentionstaff 2012-12-01 12:47:53 CET
Created attachment 4854 [details]
purge_s4_computer.py mit site-Unterstützung

Dieses Skript ist aktuell nur ein Werkzeug. Im Produkt sollte man wirklich besser Detailverbesserungen für spezifische Szenarien schaffen:

* Re-Install eines DCs unter gleichem Namen wird per Bug 29083 behandelt.
* Re-Join eines DCs wird per Bug 29504 behandelt.
* Konsistenzcheck-Tool für Samba4 DNS-Records wird zusätzlich per Bug 29461 verbessert.
Comment 6 Malte S. Stretz 2013-02-07 14:15:05 CET
Ich wurde im Forum auf dieses Script verwiesen (http://forum.univention.de/viewtopic.php?f=48&t=2203).  Dummerweise löscht die letzte Version die Objekte nicht vollständig.  Das mag an dem sys.exit(1) in Zeile 238 liegen.  Ist das vergessener Debugging-Code und ist es sicher, das Script von dort aus händisch fortzusetzen?

root@vp-s01:~/tmp/purge_s4_computer# ./purge_s4_computer.py --computername=vp-s10
Really remove vp-s10 from Samba 4 and UDM? [y/N]: y
If you are really sure type YES and hit enter: YES
Ok, continuing as requested.

Removing dns/alias '89ea4890-a26e-43fc-a01e-b6ab90d9621a._msdcs' from Univention Directory Manager
Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp via UDM
Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._udp via UDM
Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp.dc._msdcs via UDM
Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp.Default-First-Site-Name._sites via UDM
Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs via UDM
Removing location '0 100 464 vp-s10.doa.example.net.' from dns/srv_record _kpasswd._tcp via UDM
Removing location '0 100 464 vp-s10.doa.example.net.' from dns/srv_record _kpasswd._udp via UDM
Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp via UDM
Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.dc._msdcs via UDM
Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.9cc80316-f99b-46fb-90ea-0dc6251302d2.domains._msdcs via UDM
Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.Default-First-Site-Name._sites via UDM
Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs via UDM
Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _gc._tcp via UDM
Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.gc._msdcs via UDM
Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _gc._tcp.Default-First-Site-Name._sites via UDM
Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.Default-First-Site-Name._sites.gc._msdcs via UDM

root@vp-s01:~/tmp/purge_s4_computer# udm computers/domaincontroller_backup list

DN: cn=vp-s10,cn=dc,cn=computers,dc=doa,dc=example,dc=net
ARG: None
  domain: doa.example.net
  ManageableBy: None
  nagiosContactEmail: None
  ip: 10.135.3.16
  nagiosServices: cn=UNIVENTION_PING,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_DISK_ROOT,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_DNS,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_SWAP,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_LDAP_AUTH,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_NTP,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_SMTP2,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_SSL,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_LOAD,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_REPLICATION,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_NSCD,cn=nagios,dc=doa,dc=example,dc=net
  nagiosServices: cn=UNIVENTION_JOINSTATUS,cn=nagios,dc=doa,dc=example,dc=net
  network: None
  service: LDAP
  service: NFS
  service: DNS
  service: Samba 4
  reinstalloption: None
  unixhome: /dev/null
  dnsEntryZoneForward: zoneName=doa.example.net,cn=dns,dc=doa,dc=example,dc=net 10.135.3.16
  instprofile: None
  shell: /bin/sh
  description: None
  inventoryNumber: None
  mac: 52:54:00:14:d1:a6
  reinstalltext: None
  groups: cn=DC Backup Hosts,cn=groups,dc=doa,dc=example,dc=net
  groups: cn=DC Slave Hosts,cn=groups,dc=doa,dc=example,dc=net
  groups: cn=Domain Controllers,cn=groups,dc=doa,dc=example,dc=net
  primaryGroup: cn=DC Backup Hosts,cn=groups,dc=doa,dc=example,dc=net
  password: {crypt}$6$GnsVDZdjQeIWOPct$MRk77ZlA2nzm3cfCSR62OQ2QeinQTUv7xUIKl2fMSgdmsPSqTxWMOx8B3WP2hwAZ5r/Zh/StZyU7qoGmGhZRv0
  reinstall: None
  serverRole: backup
  name: vp-s10
  fqdn: vp-s10.doa.example.net
  dnsEntryZoneReverse: zoneName=3.135.10.in-addr.arpa,cn=dns,dc=doa,dc=example,dc=net 10.135.3.16
  sambaRID: 1196
Comment 7 Arvid Requate univentionstaff 2013-02-07 14:50:31 CET
Created attachment 5058 [details]
purge_s4_computer.py

Zu Comment 6: Ja, das war debug code, ist in der angehängten Version entfernt.
Comment 8 Malte S. Stretz 2013-02-07 15:06:53 CET
Das lief besser durch, hat aber nicht alle Referenzen aus dem LDAP gelöscht.  Ich gucke gerade genauer welche Objekte betroffen sind (zumindest der DNS-User sollte gelöscht werden denke ich).

root@vp-s01:~/tmp/purge_s4_computer# ./purge_s4_computer.py --computername=vp-s10
Really remove vp-s10 from Samba 4? [y/N]: y 
If you are really sure type YES and hit enter: YES
Ok, continuing as requested.

Removing CN=VP-S10,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=doa,DC=example,DC=net from SAM database.
Removing CN=VP-S10,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=doa,DC=example,DC=net from SAM database.
Removing CN=RID Set,CN=VP-S10,OU=Domain Controllers,DC=doa,DC=example,DC=net from SAM database.
Removing CN=VP-S10,OU=Domain Controllers,DC=doa,DC=example,DC=net from SAM database.
Really remove vp-s10 from UDM as well? [y/N]: y
Removing Samba 4 computer account 'vp-s10' from Univention Directory Manager
root@vp-s01:~/tmp/purge_s4_computer# udm computers/domaincontroller_backup list
root@vp-s01:~/tmp/purge_s4_computer# univention-ldapsearch | grep -ni vp-s10
176:univentionSharesObject: cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example,
635:univentionFileServer: vp-s10.doa.example.net
840:memberUid: dns-vp-s10
888:uniqueMember: uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net
27485:# vp-s10.doa.example.net, shares, doa.example.net
27486:dn: cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example,dc=net
27491:cn: vp-s10.doa.example.net
27493:# dns-vp-s10, users, doa.example.net
27494:dn: uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net
27495:uid: dns-vp-s10
27496:krb5PrincipalName: dns-vp-s10@DOA.EXAMPLE.NET
27517:description: DNS Service Account for vp-s10
27526:homeDirectory: /home/dns-vp-s10
Comment 9 Malte S. Stretz 2013-02-07 15:17:04 CET
Betroffen sind folgende LDAP-Objekte:

cn=default containers,cn=univention,dc=doa,dc=example,dc=net
univentionSharesObject: cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example,dc=net

cn=default-settings,cn=thinclient,cn=policies,dc=doa,dc=example,dc=net
niventionFileServer: vp-s10.doa.example.net

cn=Domain Users,cn=groups,dc=doa,dc=example,dc=net
memberUid: dns-vp-s10
uniqueMember: uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net

cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example,dc=net
objectClass: top
objectClass: organizationalRole
objectClass: univentionObject
univentionObjectType: container/cn
cn: vp-s10.doa.example.net

uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net
uid: dns-vp-s10
krb5PrincipalName: dns-vp-s10@DOA.EXAMPLE.NET
objectClass: top
objectClass: person
objectClass: univentionPWHistory
objectClass: posixAccount
objectClass: shadowAccount
objectClass: univentionMail
objectClass: sambaSamAccount
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: krb5Principal
objectClass: krb5KDCEntry
objectClass: univentionObject
uidNumber: 2091
sambaAcctFlags: [U          ]
sambaPasswordHistory: 363D6B65354422D2EBD14BB4646A4E0F55162137C6C426AA09E5B68B1757F434
krb5MaxLife: 86400
cn: none
krb5MaxRenew: 604800
krb5KeyVersionNumber: 1
description: DNS Service Account for vp-s10
loginShell: /bin/bash
univentionObjectType: users/user
krb5KDCFlags: 126
displayName: none
sambaSID: S-1-5-21-3276660907-1952098613-674485150-1601
gecos: none
sn: none
pwhistory: 0B7D160C2B017EE3CF33A6761650FCEB26A34641
homeDirectory: /home/dns-vp-s10
gidNumber: 5001
sambaPrimaryGroupSID: S-1-5-21-3276660907-1952098613-674485150-513
sambaNTPassword: 376CBF481D0499147517B9D84BBB526E
krb5Key:: MB2hGzAZoAMCARehEgQQN2y/SB0EmRR1F7nYS7tSbg==
krb5Key:: MDuhEzARoAMCAQOhCgQIKrrOjPv7W4miJDAioAMCAQOhGwQZRE9BLlYtUExBTkUuTkVUZG5zLXZw
 LXMxMA==
krb5Key:: MDuhEzARoAMCAQGhCgQIKrrOjPv7W4miJDAioAMCAQOhGwQZRE9BLlYtUExBTkUuTkVUZG5zLXZw
 LXMxMA==
userPassword: {K5KEY}
sambaPwdLastSet: 1351007825
Comment 10 Arvid Requate univentionstaff 2013-02-07 15:36:06 CET
Entfernung von dns-user und share-Objekten aus UDM sind nicht primäres Ziel des Skripts. Ursprüngliches Ziel war hier, die Grundlage für einen erneuten sauberen Join zu schaffen.
Comment 11 Malte S. Stretz 2013-02-07 16:18:29 CET
Ich habe die Einträge händisch gelöscht.  Ob die DNS-Einträge bei einem Re-Join Probleme gemacht hätten kann ich nicht beurteilen.  Mein Ziel war es, einen kaputten Backup DC vollständig aus dem System zu entfernen.  Ich denke dies sollte in Zukunft über den normalen Weg funktionieren und dieses Script dann im Hintergrund die Aufräumarbeiten machen.

Aus meiner Sicht ist soweit alles ok, das Script funktioniert wie gewünscht :)
Comment 12 Stefan Gohmann univentionstaff 2013-02-09 11:59:07 CET
Arvid, kannst du das Skript in das nächste S4 Erratum aufnehmen? Oder spricht etwas dagegen?
Comment 13 Arvid Requate univentionstaff 2013-02-11 20:03:17 CET
Ist jetzt Teil von univention-samba4 in errata3.1-0 und ucs3.1-1.

Advisory: 2013-02-07-univention-samba4.yaml
Comment 14 Stefan Gohmann univentionstaff 2013-02-21 17:02:45 CET
Die Berechtigungen scheinen noch nicht zu stimmen (errata):

root@master501:~# /usr/share/univention-samba4/scripts/purge_s4_computer.py
-bash: /usr/share/univention-samba4/scripts/purge_s4_computer.py: Permission denied
root@master501:~#
Comment 15 Arvid Requate univentionstaff 2013-02-21 19:02:05 CET
Berechtigungen sind jetzt angepasst.
Comment 16 Stefan Gohmann univentionstaff 2013-02-22 07:56:43 CET
(In reply to comment #15)
> Berechtigungen sind jetzt angepasst.

OK, jetzt funktioniert es.

YAML: OK

Function errata: OK

Changelog: OK

Function 3.1-1: OK
Comment 17 Moritz Muehlenhoff univentionstaff 2013-02-25 14:05:53 CET
http://errata.univention.de/3.1-errata44.html