Jan Ulrich Hasecke
2019-11-14 f7e338054717e6e5e27214f5b9e4cacd37427ec5
commit | author | age
b4f134 1 .. _kap-hsscript-skript:
JUH 2
f7e338 3 ===========================
JUH 4 HSAdmin über Skript steuern
5 ===========================
b4f134 6
JUH 7 In :numref:`kap-hsadmin-syntax` haben wir die Option :option:`-f` erwähnt, die wir setzen können, um HSAdmin eine Datei zu übergeben, in der sich die Befehle befinden.
8 Dies ermöglicht es uns, ohne großen Aufwand Skriptdateien zu pflegen, mit denen wir wiederkehrende Aufgaben bequem erledigen können.
9 In diesem Kapitel zeigen wir, wie Sie die Anlage einer neuen Wordpress-Website mit Hilfe eines solchen Skripts vereinfachen können.
10 Bevor man die Wordpress-Software installiert, müssen mehrere Schritte erledigt sein.
11
12 1. Es existiert ein :role:`Domain-Admin` bzw. es wird ein neuer Domain-Admin angelegt.
13 2. Es wird eine Domain erstellt und dem Domain-Admin zugewiesen.
14 3. Es wird ein :role:`Datenbank-Nutzer` angelegt.
15 4. Es wird eine Datenbank angelegt und dem Datenbank-Nutzer zugewiesen.
16
17 Mit der folgenden Skript-Datei kann diese vier Schritte mit einem Befehl ausführen.
18
19 .. code-block:: text
20    :linenos:
21
22    user.add ({set:{name:'xyz00-domains',comment:'Domain-Admin',password:'!1?2-3aBc',shell:'/bin/bash'}})
23    domain.add ({set:{name:'beispiel.de',user:'xyz00-domains'}})
24    mysqluser.add  ({set:{name:'xyz00_owner',password:'?2?3-4cVg'}})
25    mysqldb.add ({set:{name:'xyz00_abc',owner:'xyz00_owner'}})
26
27
28 In Zeile 1 wird der Domain-Admin erzeugt, in Zeile 2 die Domain ``beispiel.de`` angelegt, in Zeile 3 der Datenbank-Nutzer und in Zeile 4 die Datenbank.
29 Es ist möglich, die Datei lesbarer zu formatieren, indem jedem Key-Value-Paar eine eigene Zeile zuweist.
30
31 .. code-block:: text
32    :linenos:
33
34    user.add ({set:{
35    name:'xyz00-domains',
36    comment:'Domain-Admin',
37    password:'!1?2-3aBc',
38    shell:'/bin/bash'
39    }})
40    domain.add ({set:{
41    name:'beispiel.de',
42    user:'xyz00-domains'
43    }})
44    mysqluser.add ({set:{
45    name:'xyz00_owner',
46    password:'?2?3-4cVg'
47    }})
48    mysqldb.add ({set:{
49    name:'xyz00_abc',
50    owner:'xyz00_owner'
51    }})
52
53 Wenn Sie die Datei unter dem Namen :file:`befehlsskript.txt` im Verzeichnis des :role:`Paket-Admin` speichern, können Sie alle Befehle mit einem HSAdmin-Aufruf abarbeiten:
54
55 .. code-block:: console
56
57    xyz00@h50:~$ hsscript -f befehlsskript.txt
58    
59 Wenn Sie beispielsweise häufig Wordpress-Websites installieren, können Sie für jede Website eine solche Befehlsdatei anlegen und unter einem sinnvollen Namen (z.B. :file:`wordpress-beispiel_de.txt`) abspeichern.
60
61 .. admonition:: Beachten Sie die richtige Reihenfolge
62
63    Bei der Anlage von Benutzern, Datenbanken und Domains ist die im Beispiel gezeigt Reihenfolge einzuhalten.
64    Um eine Domain anzulegen, muss der Domain-Admin bereits existieren.
65    Eine Datenbank kann nur erzeugt werden, wenn der Datenbank-Nutzer bereits angelegt ist.
66
67    Beim Löschen müssen Sie die Reihenfolge umkehren: Datenbank löschen, Datenbank-Nutzer löschen, Domain löschen, Domain-Admin löschen. 
f7e338 68    
JUH 69 Noch bequemer ist es, die notwendigen Benutzer, Domains und Datenbanken mit einem JS-Skript anzulegen.
70 Im Folgenden zeigen wir zwei Skripts.
71 Mit dem ersten Skript erstellen wir eine Domain und weisen ihr einen eigenen Domain-Admin zu, dessen Name aus dem Namen der Domain abgeleitet wird.
72 Mit dem zweiten Skript erzeugen wir eine Datenbank und einen Datenbank-Nutzer, sodass wir unter der gewünschten Domain zum Beispiel eine PHP-Anwendung wie Wordpress einrichten können.
73
74 Skript zur Erzeugung von Domain und Domain-Admin
75 ================================================
76
77 Ein Skript, um eine Domain mit einem gesonderten Domain-Admin anzulegen, könnte so aussehen:
78
79 .. literalinclude:: createdomainandadmin.js
80    :linenos:
81
82 Die Funktion ``pwGen()`` erzeugt ein achtstelliges Passwort aus einer Reihe von vorgegebenen Zeichen.
83 Empfehlenswert sind längere Passworte.
84 Die Funktion ``createDomainAndDomainAdmin(args)`` erzeugt die Domain und den Domain-Admin.
85 Der Namen des Domain-Admin ergibt sich aus dem Namen der Domain.
86 Bei einer Domain, die einen Bindestrich enthält, muss dieser durch einen Unterstrich ersetzt werden, da Benutzernamen nur einen Bindestrich enthalten dürfen.
87
88 Das Skript wird folgendermaßen aufgerufen:
89
90 .. code-block:: console
91
92    xyz00@h50:~$ ./createdomainandadmin.js my-domain.de
93    created domain my-domain.de with domainadmin xyz00-my_domain.de and password slo%haY=
94
95 Wenn Sie alle Domains mit einem einzigen Domain-Admin verwalten, können Sie den Benutzernamen des Domain-Admin hart kodieren.
96 Zeile 18 lautet dann:
97
98 .. literalinclude:: createdomain.js
99    :lines: 18
100
101
102 Skript zur Anlage einer Datenbank und eines Datenbank-Nutzers
103 =============================================================
104
105 Das Skript zur Anlage einer Datenbank und eines Datenbank-Nutzers sieht ähnlich aus.
106
107 .. literalinclude:: createuseranddb.js
108    :linenos:
109
110 Die Funktion ``createMySQLUserAndDB(args)`` erzeugt den Datenbank-Nutzer und die Datenbank.
111 Da sich Datenbank und Datenbank-Nutzer nicht in die Quere kommen, haben sie der Einfachheit halber den gleichen Namen.
112
113 Beim Aufruf des Skripts muss eine Zeichenkette übergeben werden, die Bestandteil der Namen von Datenbank und Datenbank-Nutzer wird.
114
115 .. code-block:: console
116
117    xyz00@h50:~$ ./createuseranddb.js my_domain_wordpress
118    created user and database xyz00_my_domain_wordpress with password 4fo=s3xY
119    
120 .. attention::
121
122    Merken Sie sich die Passworte, da Sie diese später benötigen.
123    Bei einer Datenbank-Anwendungen müssen Sie bei der Konfiguration den Datenbank-Benutzer und sein Passwort angeben.