Jan Ulrich Hasecke
2019-11-14 d80dd3dd28e2960b877f2157d20fc7d8cfe7ac46
Skripte hinzugefügt
3 files added
1 files modified
153 ■■■■■ changed files
source/referenz/hsadmin/createall.py 34 ●●●●● patch | view | raw | blame | history
source/referenz/hsadmin/createdomain.py 12 ●●●●● patch | view | raw | blame | history
source/referenz/hsadmin/createuseranddb.py 12 ●●●●● patch | view | raw | blame | history
source/referenz/hsadmin/skript.rst 95 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/createall.py
New file
@@ -0,0 +1,34 @@
import random
import string
import sys
from hs.admin.api import API
api = API(cas=dict(
    uri='https://login.hostsharing.net/cas/v1/tickets',
    service='https://config.hostsharing.net:443/hsar/backend'),
    credentials=dict(username='xyz00', password='Y2kbZb)d*GQF%q1~m?7d8,]+'),
    backends=[
        'https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin',
        'https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin'])
def pwGen(stringLength=12):
    """Function to generate a random password """
    password_characters = string.ascii_letters + string.digits
    return ''.join(random.choice(password_characters) for i in range(stringLength))
pw_dadmin = pwGen()
pw_dbuser = pwGen()
domainname = sys.argv[1]
dbname = domainname.replace(".", "_")
api.user.add(set={'name': 'xyz00-'+domainname, 'password': pw_dadmin, 'shell': '/bin/bash'})
api.domain.add(set={'name': domainname, 'user': 'xyz00-'+domainname})
api.mysqluser.add(set={'name': 'xyz00_'+dbname, 'password': pw_dbuser})
api.mysqldb.add(set={'name': 'xyz00_'+dbname, 'owner': 'xyz00_'+dbname})
print("Domainname:" +domainname)
print("Domain-Admin: xyz00-"+domainname + "Passwort:" +pw_dadmin)
print("Datenbank-Nutzer: " +dbname + "Passwort:" +pw_dbuser)
print("Datenbank: " +dbname)
source/referenz/hsadmin/createdomain.py
New file
@@ -0,0 +1,12 @@
from hs.admin.api import API
api = API(cas=dict(
    uri='https://login.hostsharing.net/cas/v1/tickets',
    service='https://config.hostsharing.net:443/hsar/backend'),
    credentials=dict(username='xyz00', password='sehr-geheim'),
    backends=[
        'https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin',
        'https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin'])
api.user.add(set={'name': 'xyz00-domain.de', 'password': 'geheim', 'shell': '/bin/bash'})
api.domain.add(set={'name': 'domain.de', 'user': 'xyz00-domain.de'})
source/referenz/hsadmin/createuseranddb.py
New file
@@ -0,0 +1,12 @@
from hs.admin.api import API
api = API(cas=dict(
    uri='https://login.hostsharing.net/cas/v1/tickets',
    service='https://config.hostsharing.net:443/hsar/backend'),
    credentials=dict(username='xyz00', password='sehr-geheim'),
    backends=[
        'https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin',
        'https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin'])
api.mysqluser.add(set={'name': 'xyz00_domain_de', 'password': 'geheim'})
api.mysqldb.add(set={'name': 'xyz00_domain_de', 'owner': 'xyz00_domain_de'})
source/referenz/hsadmin/skript.rst
@@ -1,8 +1,8 @@
.. _kap-hsscript-skript:
===========================
HSAdmin über Skript steuern
===========================
============================
HSAdmin über Skripte steuern
============================
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.
Dies ermöglicht es uns, ohne großen Aufwand Skriptdateien zu pflegen, mit denen wir wiederkehrende Aufgaben bequem erledigen können.
@@ -26,7 +26,7 @@
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.
Es ist möglich, die Datei lesbarer zu formatieren, indem jedem Key-Value-Paar eine eigene Zeile zuweist.
Es ist möglich, die Datei lesbarer zu formatieren, indem man jedem Key-Value-Paar eine eigene Zeile zuweist.
.. code-block:: text
   :linenos:
@@ -66,13 +66,18 @@
   Beim Löschen müssen Sie die Reihenfolge umkehren: Datenbank löschen, Datenbank-Nutzer löschen, Domain löschen, Domain-Admin löschen. 
   
Noch bequemer ist es, die notwendigen Benutzer, Domains und Datenbanken mit einem JS-Skript anzulegen.
Im Folgenden zeigen wir zwei Skripts.
Noch bequemer ist es, die notwendigen Benutzer, Domains und Datenbanken mit einem Skript anzulegen.
Sie können HSAdmin mit Javascript und über eine Python-API ansprechen.
HSAdmin mit Javascript ansprechen
=================================
Im Folgenden zeigen wir zwei JS-Skripts, die in der Regel im Verzeichnis des :role:`Paket-Admin` mit dessen Benutzerrechten aufgerufen werden.
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.
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.
Skript zur Erzeugung von Domain und Domain-Admin
================================================
JS-Skript zur Anlage einer Domain
---------------------------------
Ein Skript, um eine Domain mit einem gesonderten Domain-Admin anzulegen, könnte so aussehen:
@@ -85,7 +90,7 @@
Der Namen des Domain-Admin ergibt sich aus dem Namen der Domain.
Bei einer Domain, die einen Bindestrich enthält, muss dieser durch einen Unterstrich ersetzt werden, da Benutzernamen nur einen Bindestrich enthalten dürfen.
Das Skript wird folgendermaßen aufgerufen:
Loggen Sie sich als Paket-Admin ein und rufen Sie das Skript folgendermaßen auf:
.. code-block:: console
@@ -98,9 +103,8 @@
.. literalinclude:: createdomain.js
   :lines: 18
Skript zur Anlage einer Datenbank und eines Datenbank-Nutzers
=============================================================
JS-Skript zur Anlage einer Datenbank
------------------------------------
Das Skript zur Anlage einer Datenbank und eines Datenbank-Nutzers sieht ähnlich aus.
@@ -120,4 +124,69 @@
.. attention::
   Merken Sie sich die Passworte, da Sie diese später benötigen.
   Bei einer Datenbank-Anwendungen müssen Sie bei der Konfiguration den Datenbank-Benutzer und sein Passwort angeben.
   Bei einer Datenbank-Anwendungen müssen Sie bei der Konfiguration den Datenbank-Benutzer und sein Passwort angeben.
Nutzung der Python-API
======================
Sie können HSAdmin auch remote über die Python-API des Programms ansprechen.
Das ermöglicht es Ihnen von einem entfernten Rechner aus HSAdmin zu bedienen.
Um mit der Python-API zu arbeiten müssen Sie zunächst die Python-Bindings für HSAdmin installieren.
Installation von hs.admin.api
-----------------------------
Wir installieren die Python-Bindings in einer virtuellen Python-Umgebung, sodass wir diese zunächst einrichten und aktivieren.
.. code-block:: console
   $ python3 -m venv /hsadmin
   $ . /hsadmin/bin/activate
Anschließend klonen wir die Python-Bindings und installieren sie.
.. code-block:: console
   $ git clone https://dev.hostsharing.net//r/ansible/hs.admin.api.git
   $ cd hs.admin.api
   $ python setup.py install
Nun steht uns das Modul mit dem Python-Bindings in der virtuellen Umgebung zur Verfügung, sodass wir es in einem Skript importieren können.
Python-Skript
-------------
Um die API in einem Skript nutzen zu können, müssen wir mit folgendem Code ein API-Objekt erzeugen.
.. literalinclude:: createdomain.py
   :linenos:
   :lines: 1-9
Nun ist es möglich, mit der üblichen Syntax HSAdmin im Skript anzusprechen.
Mit diesen beiden Befehlen legen wir beispielsweise einen Domain-Admin und eine neue Domain an.
.. literalinclude:: createdomain.py
   :lines: 11-12
Eine Datenbank lässt sich folgendermaßen anlegen.
.. literalinclude:: createuseranddb.py
   :lines: 11-12
Das vollständige Skript, mit dem man eine Domain mit Domain-Admin sowie eine Datenbank mit einem Datenbank-Nutzer erzeugt, sähe dann so aus:
.. literalinclude:: createall.py
   :linenos:
.. todo:: Skript läuft noch nicht.
Beim Aufruf des Skripts muss man nur noch den gewünschten Domainnamen übergeben:
.. code-block:: console
   $ python createall.py meine-domain.de