Bug 29418 - Skript zum anlegen einer großen Testumgebung
Skript zum anlegen einer großen Testumgebung
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC - Domain management (Generic)
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.2
Assigned To: Stefan Gohmann
Lukas Walter
: interim-1
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-11-27 16:33 CET by Alexander Kläser
Modified: 2019-03-05 18:02 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:
Ticket number:
Bug group (optional):
Max CVSS v3 score:
klaeser: Patch_Available+


Attachments
Skript zum exportieren von LDAP-Daten (1.20 KB, text/plain)
2012-11-29 13:47 CET, Alexander Kläser
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kläser univentionstaff 2012-11-27 16:33:53 CET
Für die Produkttest benötigen wir eine einfach Möglichkeit, ein großes Testsystem aufzusetzen (50k User, 20k Gruppen, 200 Slaves). Ideal wäre dies im Stil des Join-Skripts 01univention-ldap-server-init.inst zu machen als ldif und über "ucr filter" geparst, so dass LDAP-Base usw. angepasst werden:

> root@master55:~# grep -A 4 base.ldif /usr/lib/univention-install/01univention-ldap-server-init.inst 
>         cat /usr/share/univention-ldap/base.ldif | \
>                  sed -e \
>                 "s|@@%%@@ldap\.pw@@%%@@|$pw_crypt|;s|@@%%@@backup\.pw@@%%@@|$backup_crypt|;s|@@%%@@sambadomain@@%%@@|$sambadomain|;s|@@%%@@firstdc@@%%@@|$firstdc|;s|@@%%@@realm@@%%@@|$realm|;s|@@%%@@sid@@%%@@|$sid|;s|@@%@@domain@@%@@|$Domain|" | \
>                 univention-config-registry filter | slapadd >>/var/log/univention/join.log 2>&1
Comment 1 Alexander Kläser univentionstaff 2012-11-27 16:46:47 CET
Das Skript sollte Bestandteil von ucs-test-tools sein.
Comment 2 Alexander Kläser univentionstaff 2012-11-27 16:55:33 CET
Gut wäre es, wenn das Skript auch automatisch die autosearch UCR-Variablen für UDM anpasst (vielleicht noch andere?).
Comment 3 Dirk Wiesenthal univentionstaff 2012-11-27 18:10:44 CET
Man sollte aufpassen, dass man weder alle 50k User in eine einzige der 20k Gruppen steckt (sodass alle anderen leer bleiben), noch dass man sie zu gleichmäßig aufteilt (sodass jede Gruppe nur 2 oder 3 Mitglieder hat).

Interessant in UDM sind Abhängigkeiten.

Eine besondere Abhängigkeit hat eine Druckergruppe. Dort hängt groupMember (Drucker) von spoolHost (Computer) ab.

Ich hätte gerne in dem Skript

1500 Slaves mit Service=Print
und
2500 Printer allesamt auf einem der 1500 Slaves

Dann kann man beim Anlegen einer Druckergruppe nämlich beobachten, wie sich die Dependencies verhalten, wenn die Grenze überschritten wird, bis zu der sich die ComboBoxen normal (lies: uninteressant) verhalten (auch wenn wohl niemals 2500 Drucker an einem Computer hängen werden).
Comment 4 Dirk Wiesenthal univentionstaff 2012-11-27 18:12:36 CET
(In reply to comment #3)
> 1500 Slaves mit Service=Print
Vielleicht besser MemberServer
Comment 5 Arvid Requate univentionstaff 2012-11-27 19:16:22 CET
Per slapadd angelegte Objekte durchlaufen nicht die Listener-Module.
Comment 6 Stefan Gohmann univentionstaff 2012-11-27 19:23:36 CET
Ja, die sollten per ldapadd angelegt werden. Es sollten dabei auch die UIDs in einem bestimmten Bereich angelegt werden, damit die nicht im Konflikt zu bereits bestehenden Benutzern, Gruppen, Servern stehen.
Comment 7 Alexander Kläser univentionstaff 2012-11-28 16:10:28 CET
(In reply to comment #4)
> (In reply to comment #3)
> > 1500 Slaves mit Service=Print
> Vielleicht besser MemberServer

200 Slaves und vielleicht 200 MemberServer?
Comment 8 Dirk Wiesenthal univentionstaff 2012-11-28 16:27:18 CET
(In reply to comment #7)
> (In reply to comment #4)
> > (In reply to comment #3)
> > > 1500 Slaves mit Service=Print
> > Vielleicht besser MemberServer
> 
> 200 Slaves und vielleicht 200 MemberServer?

Zur Not geht auch das. Ich bräuchte so viele, damit das LDAP-Limit überschritten wird. Aber ob ich das Limit auf 1000 setze oder auf 100...
Comment 9 Alexander Kläser univentionstaff 2012-11-29 13:47:15 CET
Created attachment 4849 [details]
Skript zum exportieren von LDAP-Daten

Anbei ein erstes Skript, dass die vorhandenen LDAP-Daten auf einem (Master-) System ausliest, filtert, parset und dumpt. Den Import teste ich gerade noch.
Comment 10 Alexander Kläser univentionstaff 2012-11-29 14:07:27 CET
Dazu fehlt noch ein import-Skript, das die Einträge der Gruppen Domain Users, DC Slave Hosts, DC Backup Hosts, Computers ausliest, dann diese Gruppen löscht und nach ldapadd die alten Einträge wieder hinzufügt.
Comment 11 Alexander Kläser univentionstaff 2012-11-30 10:15:14 CET
Hinweis: ucr filter ist in meinen Testfällen sehr langsam und hat 50K Benutzer mit 10K Gruppen nach einigen Stunden noch nicht abgearbeitet. Also besser mit sed arbeiten.
Comment 12 Alexander Kläser univentionstaff 2012-12-03 09:41:39 CET
(In reply to comment #11)
> Hinweis: ucr filter ist in meinen Testfällen sehr langsam und hat 50K Benutzer
> mit 10K Gruppen nach einigen Stunden noch nicht abgearbeitet. Also besser mit
> sed arbeiten.

Bzgl. UCR filter siehe auch Bug 29484.
Comment 13 Jascha Geerds univentionstaff 2012-12-06 12:08:24 CET
(In reply to comment #11)
> Hinweis: ucr filter ist in meinen Testfällen sehr langsam und hat 50K Benutzer
> mit 10K Gruppen nach einigen Stunden noch nicht abgearbeitet. Also besser mit
> sed arbeiten.

`ucr filter` ist wirklich ziemlich langsam. Das kann man auch per Hand machen.

In dem dump müssen alle @%@foo/bar@%@ Vorkommnisse individuell ersetzt werden, d.h:

@%@ldap/base@%@
@%@domainname@%@

Des Weiteren gibt es auch ein paar Zeilen, dessen statische Werte ausgetauscht werden müssen, z.B.:

krb5PrincipalName: host/mem30.@%@domainname@%@@DIRK.UCS31.QA
-> DIRK.UCS31.QA müsste in dem Fall auch angepasst werden.

Importiert habe ich die Daten dann wie folgt:
`slapadd -c -l $ldiff_dump`
Comment 14 Jascha Geerds univentionstaff 2012-12-06 12:10:24 CET
(In reply to comment #13)
> Importiert habe ich die Daten dann wie folgt:
> `slapadd -c -l $ldiff_dump`

Vorher sollte natürlich der slapd gestoppt werden!
Comment 15 Stefan Gohmann univentionstaff 2012-12-06 12:16:31 CET
(In reply to comment #14)
> (In reply to comment #13)
> > Importiert habe ich die Daten dann wie folgt:
> > `slapadd -c -l $ldiff_dump`
> 
> Vorher sollte natürlich der slapd gestoppt werden!

Bei slapadd wird der Listener nicht angesprochen. Wenn das gewünscht ist, dann besser ldapadd verwenden.
Comment 16 Stefan Gohmann univentionstaff 2013-07-01 12:25:59 CEST
Es gibt nun zwei Tools:
 a) /usr/sbin/import_ldif_with_listener
 b) /usr/sbin/import_ldif_without_listener

Diese importieren ein vorbereitestes LDIF importieren. Ein ldif gibt es jetzt:
 /usr/share/ucs-test-tools/customer5000.ldif

Das ldif besteht aus:

 - 5 DC Backups
 - 400 DC Slaves
 - 200 Memberservern
 - 5000 Windows PCs
 - inkl. Forward + Reverse Einträge

 - 1000 Gruppen
 - 5000 Benutzern

 - 1600 Drucker
 - 2400 Shares
Comment 17 Alexander Kläser univentionstaff 2013-07-02 17:07:23 CEST
(In reply to Stefan Gohmann from comment #16)
> Es gibt nun zwei Tools:
>  a) /usr/sbin/import_ldif_with_listener
>  b) /usr/sbin/import_ldif_without_listener

In welchem Paket denn?
Comment 18 Dirk Wiesenthal univentionstaff 2013-07-02 17:25:04 CEST
(In reply to Alexander Kläser from comment #17)
> In welchem Paket denn?

ucs-test-tools
Comment 19 Lukas Walter univentionstaff 2013-08-22 16:00:27 CEST
ok: import script

ok: predefined ldif.

LDIF creates:
  users
  5 DC Backups
  400 DC Slaves
  200 Memberserver
  3735 Windows hosts
Comment 20 Lukas Walter univentionstaff 2013-08-22 16:04:03 CEST
(In reply to Lukas Walter from comment #19)
> ok: import script
> 
> ok: predefined ldif.
> 
> LDIF creates:
>   users
>   5 DC Backups
>   400 DC Slaves
>   200 Memberserver
>   3735 Windows hosts

 5000 users
 Forward/reverse entries for the created computers
 1000 groups
 2400 shares
 1600 printer

Should be enough for now.
Comment 21 Stefan Gohmann univentionstaff 2013-11-19 06:42:16 CET
UCS 3.2 has been released:
 http://docs.univention.de/release-notes-3.2-en.html
 http://docs.univention.de/release-notes-3.2-de.html

If this error occurs again, please use "Clone This Bug".
Comment 22 Florian Best univentionstaff 2015-03-25 13:08:31 CET
The scripts are currently broken, See Bug #36695.
Comment 23 Florian Best univentionstaff 2019-03-05 18:02:16 CET
For the product tests:
ucr set repository/online/unmaintained=yes
apt-get update -qq
apt-get install ucs-test-tools
/usr/sbin/import_ldif_without_listener /usr/share/ucs-test-tools/customer5000.ldif