diff --git a/docs/_optimist/faq/index.de.md b/docs/_optimist/faq/index.de.md index b3064d972..6c5daecdf 100644 --- a/docs/_optimist/faq/index.de.md +++ b/docs/_optimist/faq/index.de.md @@ -11,7 +11,7 @@ last_modified_date: 2021-03-02 ## Der Befehl `openstack --help` zeigt bei vielen Punkten "Could not load EntryPoint.parse" an. In diesem Fall ist eine der mit dem OpenStack Client installierten Komponenten nicht aktuell. Um zu sehen, welche der Komponenten -aktualisiert werden muss, rufen wir folgenden Befehl auf: +aktualisiert werden muss, rufen Sie folgenden Befehl auf: ```bash openstack --debug --help @@ -36,12 +36,12 @@ openstack security group rule create --remote-ip 10.0.0.0/24 --protocol vrrp --e ## Warum werden mir Floating IPs berechnet, die ich gar nicht benutze? Der Grund dafür ist mit hoher Wahrscheinlichkeit, dass Floating IPs erstellt wurden, aber nach der Benutzung nicht korrekt gelöscht wurden. -Um eine Übersicht über die aktuell verwendeten Floating IPs zu erhalten, kann man zum einen das +Um eine Übersicht über die aktuell verwendeten Floating IPs zu erhalten, können Sie das [Horizon Dashboard](https://dashboard.optimist.innovo.cloud/) nutzen. Dort befindet sich der entsprechende Punkt unter _Project_ → _Network_ → _Floating-IPs_. -Alternativ der Weg per OpenStack Client: +Alternativ dazu können Sie auch OpenStack Client benutzen: ```bash $ openstack floating ip list @@ -56,10 +56,10 @@ $ openstack floating ip list ### Resizing über die Command Line -Geben Sie den Namen oder die UUID des Servers an, dessen Größe Sie ändern möchten, und ändern Sie die Größe mit dem Befehl +Geben Sie den Namen oder die UUID des Servers an, dessen Größe Sie ändern möchten. Ändern Sie die Größe mit dem Befehl `openstack server resize`. -Geben Sie das gewünschte neue Flavor und dann den Instanznamen oder die UUID an: +Geben Sie das gewünschte neue Flavor an und anschließend den Instanznamen oder die UUID: ```bash openstack server resize --flavor FLAVOR SERVER @@ -67,7 +67,7 @@ openstack server resize --flavor FLAVOR SERVER Die Größenänderung kann einige Zeit in Anspruch nehmen. Während dieser Zeit wird der Instanzstatus als RESIZE angezeigt. -Wenn die Resizing abgeschlossen ist, wird der Instanzstatus VERIFY_RESIZE angezeigt. Sie können nun die Größenänderung bestätigen, um den +Wenn das Resizing abgeschlossen ist, wird der Instanzstatus VERIFY_RESIZE angezeigt. Sie können nun die Größenänderung bestätigen, um den Status auf ACTIVE zu ändern: ```bash @@ -76,11 +76,11 @@ openstack server resize --confirm SERVER ### Resizing über das Optimist-Dashboard -Navigieren Sie auf [Optimist Dashboard → Instances](https://dashboard.optimist.innovo.cloud/project/instances/) zu der Instanz, deren Größe +Navigieren Sie in [Optimist Dashboard → Instances](https://dashboard.optimist.innovo.cloud/project/instances/) zu der Instanz, deren Größe geändert werden soll, und wählen Sie dann _Actions_ → _Resize Flavor_. -Der aktuelle Flavor wird angezeigt, verwenden Sie die Dropdown-Liste "Select a new flavor", um den neuen Flavor auszuwählen und bestätigen -Sie mit "Resize". +Der aktuelle Flavor wird angezeigt. Verwenden Sie die Dropdown-Liste _Select a new flavor_, um den neuen Flavor auszuwählen. Bestätigen +Sie mit _Resize_. ## Warum ist das Logfile der Compute Instanz im Optimist Dashboard leer? @@ -89,16 +89,16 @@ neu angelegt und neue Meldungen werden wie gewohnt protokolliert. ## Warum erhalte ich den Fehler "Conflict (HTTP 409)" beim Erstellen eines Swift Containers? -Swift verwendet einzigartige Namen über die gesamte OpenStack Umgebung hinweg. Die Fehlermeldung besagt, dass der gewählte Name bereits in -Verwendung ist. +Swift verwendet einzigartige Namen über die gesamte OpenStack Umgebung hinweg. Die Fehlermeldung besagt, dass der gewählte Name bereits +verwendet wird. ## Anbringen von Cinder-Volumes an Instanzen per UUID Wenn Sie mehrere Cinder-Volumes an eine Instanz anhängen, werden die Mount-Punkte möglicherweise bei jedem Neustart neu gemischt. Durch das -Mounten der Volumes per UUID wird sichergestellt, dass die richtigen Volumes wieder an die richtigen Mount-Punkte angehängt werden, falls +Mounten der Volumes über UUID wird sichergestellt, dass die richtigen Volumes wieder an die richtigen Mount-Punkte angehängt werden, falls für die Instanz ein Aus- und Wiedereinschalten erforderlich ist. -Nachdem Sie die UUID des Volumes mit `blkid` in der Instanz abgerufen haben ändern Sie den Mountpunkt in `/etc/fstab` wie folgt, um die +Nachdem Sie die UUID des Volumes mit `blkid` in der Instanz abgerufen haben, ändern Sie den Mountpunkt in `/etc/fstab` wie folgt, um die UUID zu verwenden. Zum Beispiel: ```bash diff --git a/docs/_optimist/guided_tour/step24/index.de.md b/docs/_optimist/guided_tour/step24/index.de.md index d2ed924e5..0289ed86f 100644 --- a/docs/_optimist/guided_tour/step24/index.de.md +++ b/docs/_optimist/guided_tour/step24/index.de.md @@ -6,27 +6,23 @@ nav_order: 1240 parent: Guided Tour --- -Schritt 24: Der Octavia Loadbalancer -================================================= +# Schritt 24: Der Octavia Loadbalancer -Vorwort -------- +## Einführung In den vorherigen Schritten haben wir bereits einige interessante Bausteine kennengelernt. -Als nächstes widmen wir uns dem [Ocatavia Loadbalancer](https://wiki.openstack.org/wiki/Octavia). +Als nächstes beschäftigen wir uns mit dem [Ocatavia Loadbalancer](https://wiki.openstack.org/wiki/Octavia). Octavia ist eine hochverfügbare und skalierbare Open-Source Load-Balancing-Lösung, die für die Arbeit mit OpenStack entwickelt wurde. Octavia erledigt das Load-Balancing nach Bedarf, indem es virtuelle Maschinen – auch Amphoren genannt – in seinem Projekt verwaltet und konfiguriert. -In diesen Amphoren wirkt schlussendlich ein [HAproxy](https://www.haproxy.com/). +In diesen Amphoren wirkt ein [HAproxy](https://www.haproxy.com/). -Der Start ------ +## Der Start -Für die Nutzung von Octavia ist es notwendig, dass der Client auf dem eigenen System installiert ist. Eine Anleitung für sein System findet man unter [Schritt 4](/optimist/guided_tour/step04/)) +Für die Nutzung von Octavia muss der Client auf dem eigenen System installiert sein. Eine Anleitung dafür finden Sie in [Schritt 4](/optimist/guided_tour/step04/). -Erstellung eines Octavia-Ladbalancer ------ +## Erstellung eines Octavia-Loadbalancer -Für unser Beispiel nutzen wir das aus [Schritt 10](/optimist/guided_tour/step10/) schon bestehende BeispielSubnet. +Für unser Beispiel nutzen wir das schon bestehende Beispiel-Subnet aus [Schritt 10](/optimist/guided_tour/step10/). ```bash $ openstack loadbalancer create --name Beispiel-LB --vip-subnet-id 32259126-dd37-44d5-922c-99d68ee870cd @@ -54,7 +50,7 @@ $ openstack loadbalancer create --name Beispiel-LB --vip-subnet-id 32259126-dd37 +---------------------+--------------------------------------+ ``` -Nun geht Octavia her und spawned seine Amphoreninstanzen im Hintergrund. +Nun generiert Octavia seine Amphoreninstanzen im Hintergrund. ```bash $ openstack loadbalancer list @@ -65,7 +61,7 @@ $ openstack loadbalancer list +--------------------------------------+-------------+----------------------------------+--------------+---------------------+----------+ ``` -Mit dem provisioning_status `ACTIVE` ist dieser Vorgang erfolgreich abgeschlossen und der erste Octavia-Loadbalancer kann weiter konfiguiert werden. +Mit dem provisioning_status `ACTIVE` ist dieser Vorgang erfolgreich abgeschlossen und Sie können den ersten Octavia-Loadbalancer weiter konfiguieren. ```bash $ openstack loadbalancer list @@ -76,10 +72,9 @@ $ openstack loadbalancer list +--------------------------------------+-------------+----------------------------------+--------------+---------------------+----------+ ``` -Erstellen eines LB-Listener ------ +## Erstellen eines LB-Listener -In unserem Beispiel wollen wir einen Listener für den HTTP-Port 80 erstellen. +In unserem Beispiel erstellen wir einen Listener für den HTTP-Port 80. Als Listener ist hier - vergleichbar mit anderen LB-Lösungen - der Port des Frontends gemeint. @@ -127,11 +122,10 @@ $ openstack loadbalancer listener list +--------------------------------------+-----------------+-------------------+----------------------------------+----------+---------------+----------------+ ``` -Erstellen eines LB-Pools ------ +## Erstellen eines LB-Pools -Als LB-Pool ist hier eine Ansammlung aller Objekte (Listeners, Member, etc.) für zum Beispiel eine Region gemeint - vergleichbar mit einem Pool an öffentlichen IP-Adressen aus derer man sich eine belegen kann. -Einen Pool für unser Beispiel erstellt man wie folgt: +Mit LB-Pool ist hier eine Ansammlung aller Objekte (Listeners, Member, etc.), für z.B. eine Region gemeint. Dies ist vergleichbar mit einem Pool an öffentlichen IP-Adressen aus denen Sie sich eine Adresse belegen können. +Für unser Beispiel können Sie einen Pool wie folgt erstellen: ```bash $ openstack loadbalancer pool create --name Beispiel-pool --lb-algorithm ROUND_ROBIN --listener Beispiel-listener --protocol HTTP @@ -161,8 +155,8 @@ $ openstack loadbalancer pool create --name Beispiel-pool --lb-algorithm ROUND_R +----------------------+--------------------------------------+ ``` -Hier sei erwähnt, dass man mit `openstack loadbalancer pool create --help` sich alle möglichen Einstellungen anzeigen lassen kann. -Die häufigsten Einstellungen und deren Auswahlmöglichkeiten: +Mit `openstack loadbalancer pool create --help` können Sie sich alle möglichen Einstellungen anzeigen lassen. +Hier sind die häufigsten Einstellungen und deren Auswahlmöglichkeiten: ```bash --protocol: {TCP,HTTP,HTTPS,TERMINATED_HTTPS,PROXY,UDP} @@ -180,10 +174,9 @@ $ openstack loadbalancer pool list +--------------------------------------+---------------+----------------------------------+---------------------+----------+--------------+----------------+ ``` -Erstellen der LB-`member` ------ +## Erstellen der LB-`member` -Damit unser Loadbalancer weiß, an welche Backends er weiterleiten darf, fehlen uns noch sogenannte `member`, die wir wie folgt definieren: +Damit unser Loadbalancer weiß, an welche Backends er weiterleiten darf, fehlen noch die sogenannten `member`, die Sie wie folgt definieren: ```bash $ openstack loadbalancer member create --subnet-id 32259126-dd37-44d5-922c-99d68ee870cd --address 10.0.0.11 --protocol-port 80 Beispiel-pool @@ -208,8 +201,6 @@ $ openstack loadbalancer member create --subnet-id 32259126-dd37-44d5-922c-99d68 +---------------------+--------------------------------------+ ``` -und - ```bash $ openstack loadbalancer member create --subnet-id 32259126-dd37-44d5-922c-99d68ee870cd --address 10.0.0.12 --protocol-port 80 Beispiel-pool +---------------------+--------------------------------------+ @@ -233,8 +224,8 @@ $ openstack loadbalancer member create --subnet-id 32259126-dd37-44d5-922c-99d68 +---------------------+--------------------------------------+ ``` -Hier sei erwähnt, dass die beiden IP's aus 10.0.0.* bereits vorhandene, auf Port 80 lauschende Webserver sind, die eine einfache Webseite mit Info's über ihren Servicenamen ausliefern. -Unter der Vorraussetzung es handelt sich bei diesen Webservern im folgenden Beispiel um ein Ubuntu/Debian und man hat root-Berechtigungen, könnte man die einfache Webseite schnell erstellen mit: +Hier sei erwähnt, dass die beiden IP Adressen aus 10.0.0.* bereits vorhandene, auf Port 80 lauschende Webserver sind, die eine einfache Webseite mit Infos über ihren Servicenamen ausliefern. +Vorrausgesetzt, es handelt sich bei diesen Webservern im folgenden Beispiel um ein Ubuntu/Debian und Sie haben root-Berechtigungen, können Sie die einfache Webseite schnell erstellen mit: ```bash root@BeispielInstanz1:~# apt-get update; apt-get -y install apache2; echo "you hit: you hit: webserver1" > /var/www/html/index.html @@ -248,7 +239,7 @@ root@BeispielInstanz2:~# apt-get update; apt-get -y install apache2; echo "you h ``` -Das Resultat vom Anlegen der Member können wir wie folgt überprüfen: +Das Ergebnis vom Anlegen der Member können Sie wie folgt überprüfen: ```bash $ openstack loadbalancer member list Beispiel-pool @@ -264,19 +255,18 @@ Nun ist das "interne" Konstrukt des Loadbalancers konfiguriert. Wir haben nun: -* 2 `member` die über Port 80 den tatsächlichen Service bereitstellen und zwischen denen das Loadbalancing stattfindet, -* einen `pool` für diese `member`, -* einen `listener`, der auf Port TCP/80 lauscht und ein `ROUND_ROBIN` zu den beiden Endpunkten macht und -* einen Loadbalancer, über den wir alle Komponenten vereint haben. +* Zwei `member`, die über Port 80 den tatsächlichen Service bereitstellen und zwischen denen das Loadbalancing stattfindet +* Einen `pool` für diese `member` +* Einen `listener`, der auf Port TCP/80 lauscht und ein `ROUND_ROBIN` zu den beiden Endpunkten macht +* Einen Loadbalancer, über den wir alle Komponenten vereint haben. Der `operating_status` `NO_MONITOR` wird unter [healthmonitor](schritt24.md#erstellen-eines-healthmonitor) korrigiert. -Erstellen und konfigurieren der Floating-IP ------ +## Erstellen und Konfigurieren der Floating-IP -Damit wir auch den Loadbalancer außerhalb unseres Beispiel-Netzwerk einsetzen können, müssen wir eine FloatingIP reservieren und diese dann mit dem `vip_port_id` des `Beispiel-LB` verknüpfen. +Damit Sie auch den Loadbalancer außerhalb unseres Beispiel-Netzwerk einsetzen können, müssen Sie eine FloatingIP reservieren und diese dann mit dem `vip_port_id` des `Beispiel-LB` verknüpfen. -Mit folgendem Befehl erstellen wir uns eine Floating IP aus dem `provider`-Netz: +Mit dem folgendem Befehl erstellen Sie sich eine Floating IP aus dem `provider`-Netz: ```bash $ openstack floating ip create provider @@ -307,21 +297,21 @@ $ openstack floating ip create provider ``` -Im nächsten Schritt benötigen wir die vip_port_id des Loadbalancers. Diese bekommt man mit folgendem Befehl heraus: +Im nächsten Schritt benötigen Sie die vip_port_id des Loadbalancers. Diese bekommen Sie mit dem folgendem Befehl angezeigt: ```bash $ openstack loadbalancer show Beispiel-LB -f value -c vip_port_id 37fc5b34-ee07-49c8-b054-a8d591a9679f ``` -Mit dem folgendem Befehl weisen wir dem Loadbalancer nun die öffentliche IP Adresse zu. Damit ist der LB (und somit auch die Endpunkte dahinter) aus dem Internet erreichbar. +Mit dem folgendem Befehl weisen Sie dem Loadbalancer nun die öffentliche IP Adresse zu. Damit ist der LB (und somit auch die Endpunkte dahinter) aus dem Internet erreichbar. ```bash openstack floating ip set --port 37fc5b34-ee07-49c8-b054-a8d591a9679f 185.116.247.133 ``` -Wir sind soweit, dass wir unser Loadbalancer-Deployment testen können. Mit folgendem Befehl fragen wir unseren Loadbalancer über Port TCP/80 an und bekommen anschließend eine entsprechende Antwort von den einzelnen `member` zurück: +Nun können wir unser Loadbalancer-Deployment testen. Mit dem folgendem Befehl fragen wir unseren Loadbalancer über Port TCP/80 an und bekommen anschließend eine entsprechende Antwort von den einzelnen `member` zurück: ```bash $ for ((i=1;i<=10;i++)); do curl http://185.116.247.133; sleep 1; done @@ -335,8 +325,7 @@ you hit: webserver1 ... (usw.) ``` -Erstellen eines healthmonitor ------ +## Erstellen eines Healthmonitor Mit dem folgenden Befehl erstellen wir einen Monitor, der bei einem Ausfall eines der Backends genau dieses fehlerhafte Backend aus der Lastverteilung nimmt und somit die Webseite oder Applikation weiterhin sauber ausgeliefert wird. @@ -433,18 +422,17 @@ you hit: webserver1 Mi 22 Mai 2019 17:10:06 CEST ``` -Bekannte Probleme ------ +## Bekannte Probleme -Wenn sie bei der Zuweisung der öffentliche IP Adresse zum Loadbalancer folgenden Fehler bekommen: +Sie bekommen bei der Zuweisung der öffentliche IP Adresse zum Loadbalancer folgenden Fehler: `` ResourceNotFound: 404: Client Error for url: https://network.fra.optimist.innovo.cloud/v2.0/floatingips/46c0e8cf-783d-44a0-8256-79f8ae0be7fe, External network 54258498-a513-47da-9369-1a644e4be692 is not reachable from subnet 32259126-dd37-44d5-922c-99d68ee870cd. Therefore, cannot associate Port 37fc5b34-ee07-49c8-b054-a8d591a9679f with a Floating IP. `` -dann fehlt eine Verbindung zwischen ihrem Beispiel-Netz (Router) und dem Provider-Netz ([Schritt 10](/optimist/guided_tour/step10/)) +In diesem Fall fehlt eine Verbindung zwischen Ihrem Beispiel-Netz (Router) und dem Provider-Netz (siehe [Schritt 10](/optimist/guided_tour/step10/)), -Die default-connect-Einstellung der haproxy-Prozesse innerhalb einer Amphore liegen bei 50 Sekunden, d.h. wenn eine Verbindung länger als 50 Sekunden anhalten soll, müssen sie am Listener diese Werte entsprechend konfigurieren. +Die default-connect-Einstellung der haproxy-Prozesse innerhalb einer Amphore liegen bei 50 Sekunden, d.h. wenn eine Verbindung länger als 50 Sekunden anhalten soll, müssen Sie am Listener diese Werte entsprechend konfigurieren. Beispiel für einen Connect mit Timeout: ```bash @@ -453,7 +441,7 @@ $ time kubectl -n kube-system exec -ti machine-controller-5f649c5ff4-pksps /bin/ 50.69 real 0.08 user 0.05 sys ``` -Um in diesem Beispiel den Timeout auf 4h zu erweitern: +Um in diesem Beispiel den Timeout auf 4h zu erweitern, geben Sie folgenden Befehl ein: ```bash openstack loadbalancer listener set --timeout_client_data 14400000 @@ -462,8 +450,7 @@ openstack loadbalancer listener set --timeout_member_data 14400000 Wenn Octavia versucht, einen LB mit `port_security_enabled = False` in einem Netzwerk zu starten, wird der LB in den Status ERROR versetzt. -Abschluss ------ +## Zusammenfassung -Es macht durchaus Sinn immer einen Monitor für seinen Pool zu etablieren. +Es ist sinnvoll, immer einen Monitor für seinen Pool zu etablieren. ![](attachments/201905S240012.png) diff --git a/docs/_optimist/networking/port_forwarding/index.de.md b/docs/_optimist/networking/port_forwarding/index.de.md index 74fb66afa..92a81bbd4 100644 --- a/docs/_optimist/networking/port_forwarding/index.de.md +++ b/docs/_optimist/networking/port_forwarding/index.de.md @@ -6,22 +6,20 @@ parent: Netzwerke nav_order: 2100 --- -Port Forwarding auf Floating IPs -================================== +# Port Forwarding auf Floating IPs -Floating IP Port Forwarding erlaubt die Weiterleitung eines beliebigen TCP/UDP/anderen Protokoll-Ports einer Floating IP-Adresse an einen TCP/UDP/anderen Protokoll-Port, der mit einer festen IP-Adresse eines Neutron-Ports verbunden ist. +Floating IP Port Forwarding erlaubt Ihnen die Weiterleitung eines beliebigen TCP/UDP/anderen Protokoll-Ports einer Floating IP-Adresse an einen TCP/UDP/anderen Protokoll-Port, der mit einer festen IP-Adresse eines Neutron-Ports verbunden ist. -Port Forwarding auf einer Floating IP erstellen ---------------- +## Port Forwarding auf einer Floating IP erstellen -Um ein Port forwarding auf eine Floating IP anzuwenden, sind die folgenden Informationen erforderlich: +Um ein Port Forwarding auf eine Floating IP anzuwenden, werden die folgenden Informationen benötigt: * Die zu verwendende interne IP-Adresse * Die UUID des Ports, der mit der Floating IP assoziiert werden soll * Die Portnummer des Netzwerkports der festen IPv4-Adresse * Die externe Portnummer der Floating IP-Adresse * Das spezifische Protokoll, das bei der Port-Weiterleitung zu verwenden ist (in diesem Beispiel TCP) -* Die Floating IP, auf der dieser Port freigeschalten werden soll. (in diesem Beispiel 185.116.244.141) +* Die Floating IP, auf der dieser Port freigeschalten werden soll (in diesem Beispiel 185.116.244.141) Das folgende Beispiel zeigt die Erstellung eines Port Forwarding auf einer Floating IP unter Verwendung der erforderlichen Optionen: @@ -34,37 +32,34 @@ $ openstack floating ip port forwarding create \ --protocol tcp 185.116.244.141 ``` -Anzeigen der Port Forwarding Einstellungen bestimmter Floating IPs ---------------- +## Anzeigen der Port Forwarding Einstellungen bestimmter Floating IPs -Innerhalb eines Projekts kann eine Liste der Port Forwarding-Regeln, die für eine bestimmte Floating IP gelten, mit dem folgenden Befehl abgerufen werden: +Innerhalb eines Projekts können Sie eine Liste der Port Forwarding-Regeln, die für eine bestimmte Floating IP gelten, mit dem folgenden Befehl abrufen: `$ openstack floating ip port forwarding list 185.116.244.141` -Der obige Befehl kann weiter gefiltert werden, indem vor der Floating IP die Flags `--sort-column`, `--port`, `--external-protcol-port` und/oder `--protocol` verwendet werden. +Der obige Befehl kann weiter gefiltert werden, indem Sie vor der Floating IP die Flags `--sort-column`, `--port`, `--external-protcol-port` und/oder `--protocol` verwenden. -Anzeigen der Details einer port forwarding-Regel ---------------- +## Anzeigen der Details einer Port Forwarding-Regel -Um Details zu einer bestimmten Port Forwarding-Regel anzuzeigen, kann der folgende Befehl verwendet werden: +Um Details zu einer bestimmten Port Forwarding-Regel anzuzeigen, können Sie den folgenden Befehl verwenden: `$ openstack floating ip port forwarding show ` -Ändern von Floating IP Port Forwarding-Eigenschaften ---------------- +## Ändern von Floating IP Port Forwarding-Eigenschaften -Wenn eine Port Forwarding-Konfiguration auf einer Floating IP bereits mit `$ openstack floating ip port forwarding create` erstellt wurde, können Änderungen an der bestehenden Konfiguration mit `$ openstack floating ip port forwarding set ...` vorgenommen werden. +Wenn eine Port Forwarding-Konfiguration auf einer Floating IP bereits mit `$ openstack floating ip port forwarding create` erstellt wurde, können Sie Änderungen an der bestehenden Konfiguration mit `$ openstack floating ip port forwarding set ...` vornehmen. Die folgenden Parameter eines Port Forwardings können geändert werden: * `--port`: Die UUID des Ports -* `--internal-ip-address`: Die zum Zielport der Forwarding-Regel gehoerende feste interne IPv4-Adresse +* `--internal-ip-address`: Die feste interne IPv4-Adresse, die zum Zielport der Forwarding-Regel gehört * `--internal-protocol-port`: Die interne TCP/UDP/etc. Portnummer auf die die Floating IPs Port Forwarding-Regel weiterleitet * `--external-protocol-port`: Die TCP/UDP/etc. Portnummer der Floating-IP-Adresse des Port Forwardings * `--protocol`: Das IP-Protokoll, das in der Floating IP Port Forwarding-Regel verwendet wird (TCP/UDP/andere) * `--description`: Text zur Beschreibung der Verwendung der Port Forwarding-Konfiguration -Die Konfiguration jeder der oben genannten Parameter kann mit einer Variation des folgenden Befehls geändert werden: +Die Konfiguration der oben genannten Parameter kann mit einer Variation des folgenden Befehls geändert werden: ```bash $ openstack floating ip port forwarding set \ @@ -77,16 +72,13 @@ $ openstack floating ip port forwarding set \ ``` -Löschen der Port Forwarding-Konfiguration zu einer Floating IP ---------------- +## Löschen der Port Forwarding-Konfiguration zu einer Floating IP -Um eine Port Forwarding-Regel von einer Floating IP zu entfernen, benötigen wir die folgenden Informationen: +Um eine Port Forwarding-Regel von einer Floating IP zu entfernen, werden die folgenden Informationen benötigt: -* Die Floating IP dessen Port Forwarding-Regel entfernt werden soll -* Die Port Forwarding ID (Diese ID wird bei der Erstellung erzeugt und kann mit dem Befehl `$ openstack Floating ip port forwarding list ...` angezeigt werden) +* Die Floating IP, dessen Port Forwarding-Regel entfernt werden soll +* Die Port Forwarding ID (diese ID wird bei der Erstellung erzeugt und kann mit dem Befehl `$ openstack Floating ip port forwarding list ...` angezeigt werden) -Mit dem folgenden Befehl lässt sich die Konfiguration für ein Floating IP Port Forwarding löschen: +Mit dem folgenden Befehl können Sie die Konfiguration für ein Floating IP Port Forwarding löschen: `$ openstack floating ip port forwarding delete ` - -test diff --git a/docs/_optimist/networking/port_forwarding/index.en.md b/docs/_optimist/networking/port_forwarding/index.en.md index 1ef2ad1e7..d76072a27 100644 --- a/docs/_optimist/networking/port_forwarding/index.en.md +++ b/docs/_optimist/networking/port_forwarding/index.en.md @@ -6,24 +6,22 @@ parent: Networking nav_order: 2100 --- -Port Forwarding on Floating IPs -================================== +# Port Forwarding on Floating IPs Floating IP port forwarding allows users to forward traffic from a TCP/UDP/other protocol port of a floating IP to a TCP/UDP/other protocol port associated to one of the fixed IPs of a Neutron port. -Create a port forwarding rule on a floating IP ---------------- +## Create a port forwarding rule on a floating IP -In order to apply port forwarding on a floating IP, the following information is required: +To apply port forwarding on a floating IP, the following information is required: * The internal IP address to be used * The UUID of the port to be associated with the floating IP * The port number of the network port's fixed IPv4 address * The external port number of the port forwarding’s floating IP address * The specific protocol to be used in the port forwarding (in this example TCP) -* The floating IP for the port forwarding rule to be applied on. +* The floating IP for the port forwarding rule to be applied on -The example below demonstrates creation of port forwarding on a floating IP, using the required options: +The example below demonstrates the creation of port forwarding on a floating IP, using the required options: ```bash $ openstack floating ip port forwarding create \ @@ -34,34 +32,31 @@ $ openstack floating ip port forwarding create \ --protocol tcp 185.116.244.141 ``` -List port forwarding settings applied to floating IPs ---------------- +## List port forwarding settings applied to floating IPs -Within a project, a list of port forwarding rules applied to specific floating IPs can be obtained with the following command. +Within a project, you can obtain a list of port forwarding rules applied to specific floating IPs with the following command. `$ openstack floating ip port forwarding list 185.116.244.141` -The command above can be further refined using `--sort-column` `--port`, `--external-protcol-port` and `--protocol` flags before the floating IP. +You can further refine the command above using `--sort-column` `--port`, `--external-protcol-port` and `--protocol` flags before the floating IP. -Display details of a specific port forwarding rule ---------------- +## Display details of a specific port forwarding rule -To display the specific details of a Port Forwarding rule for a Floating IP, the following command can be used: +To display the specific details of a port forwarding rule for a floating IP, use the following command: `$ openstack floating ip port forwarding show ` -Modifying Floating IP Port Forwarding Properties ---------------- +## Modify floating IP port forwarding properties -If a port forwarding configuration on a floating IP has already been created using `$ openstack floating ip port forwarding create`, further changes can be made to the existing configuration using `$ openstack floating ip port forwarding set ...`. +If a port forwarding configuration on a floating IP has already been created with `$ openstack floating ip port forwarding create`, you can make further changes to the existing configuration with `$ openstack floating ip port forwarding set ...`. -The following aspects of the port forwarding can be modified: +You can modify the following aspects of the port forwarding: -* `--port`: The UUID of the network port -* `--internal-ip-address`: The fixed internal address associated with the floating IP port forwarding rule. -* `--internal-protocol-port`: The TCP/UDP/etc. port number of the network port fixed IPv4 address associated with the floating IP port forwarding rule -* `--external-protocol-port`: The TCP/UDP/etc. port number of the port forwarding rule's floating IP address -* `--protocol`: The IP protocol used in the floating IP port forwarding rule (TCP/UDP/other) +* `--port`: UUID of the network port +* `--internal-ip-address`: Fixed internal address associated with the floating IP port forwarding rule. +* `--internal-protocol-port`: TCP/UDP/etc. port number of the network port fixed IPv4 address associated with the floating IP port forwarding rule +* `--external-protocol-port`: TCP/UDP/etc. port number of the port forwarding rule's floating IP address +* `--protocol`: IP protocol used in the floating IP port forwarding rule (TCP/UDP/other) * `--description`: Text describing/contextualizing the use of the port forwarding configuration The configuration of any of the above options can be modified with a variation of the following command: @@ -77,14 +72,13 @@ $ openstack floating ip port forwarding set \ ` ``` -Delete port forwarding from a floating IP ---------------- +## Delete port forwarding from a floating IP -To remove a port forwarding rule from a floating IP, we need the following information: +To remove a port forwarding rule from a floating IP, you need the following information: -* The floating IP from which the port forwarding rule is to be removed from. -* The port forwarding ID (This ID is applied upon creation and can be obtained using the `$ openstack floating ip port forwarding list ...` command) +* The floating IP from which the port forwarding rule is to be removed from +* The port forwarding ID (this ID is applied upon creation and can be obtained with the `$ openstack floating ip port forwarding list ...` command) -The following command removes the port forwarding rule from a floating ip: +The following command removes the port forwarding rule from a floating IP: `$ openstack floating ip port forwarding delete ` diff --git a/docs/_optimist/networking/shared_networks/index.de.md b/docs/_optimist/networking/shared_networks/index.de.md index 5819c9cca..4eeb9427d 100644 --- a/docs/_optimist/networking/shared_networks/index.de.md +++ b/docs/_optimist/networking/shared_networks/index.de.md @@ -10,27 +10,31 @@ parent: Netzwerke ## Motivation -Es kommt oft die Frage auf, ob es möglich ist ein Netzwerk zwischen zwei Projekten im OpenStack zu teilen. +Es kommt oft die Frage auf, ob es möglich sei, ein Netzwerk zwischen zwei Projekten in OpenStack zu teilen. ## Netzwerk teilen ### Zugriff auf beide Projekte ist vorhanden: -Damit das Netzwerk geteilt werden kann, brauchen wir zum einen den [OpenStackClient](https://docs.openstack.org/python-openstackclient/latest/), sowie die Projekt-ID in welches das Netzwerk geteilt werden soll und die Netzwerk-ID des zu teilenden Netzwerks. +Damit das Netzwerk geteilt werden kann, wird folgendes benötigt: -Die Projekt-ID findet sich in der Ausgabe unter "id" wenn wir folgenden Befehl benutzen: +* Der [OpenStackClient](https://docs.openstack.org/python-openstackclient/latest/) +* Die Projekt-ID, in welches das Netzwerk geteilt werden soll +* Die Netzwerk-ID des zu teilenden Netzwerks + +Die Projekt-ID befindet sich in der Ausgabe unter "id", wenn der folgende Befehl benutzt wird: ```bash openstack project show -f value -c id ``` -Als nächstes benötigen wir noch die Netzwerk-ID des zu teilenden Netzwerks, diese finden wir in der Ausgabe unter "id" wenn folgender Befehl genutzt wird: +Als nächstes wird noch die Netzwerk-ID des zu teilenden Netzwerks benötigt. Diese befindet sich in der Ausgabe unter "id", wenn der folgende Befehl genutzt wird: ```bash openstack network show -f value -c id ``` -Mit den erhaltenen IDs kann nun das Netzwerk in das entsprechende Projekt geteilt werden, dafür benutzen wir die rollenbasierte Zugriffskontrolle (RBAC): +Mit den erhaltenen IDs kann nun das Netzwerk in das entsprechende Projekt geteilt werden, dafür wird die rollenbasierte Zugriffskontrolle (RBAC) benutzt: ```bash openstack network rbac create --type network --action access_as_shared --target-project @@ -40,30 +44,30 @@ openstack network rbac create --type network --action access_as_shared --target- In diesem Fall kann das Netzwerk nur vom Support, nach voriger Freigabe des anderen Projekt Inhabers, geteilt werden. -Um ein Netzwerk mit einem Projekt zu teilen, schreiben Sie uns bitte eine E-Mail an [support@gec.io](mailto:support@gec.io) mit folgenden Angaben: +Um ein Netzwerk mit einem Projekt zu teilen, schreiben Sie eine E-Mail an [support@gec.io](mailto:support@gec.io) mit folgenden Angaben: -- Name und ID des Netzwerks, welches geteilt werden soll -- Name und ID des Projekts, in welchem das Netzwerk sichtbar sein soll +* Name und ID des Netzwerks, welches geteilt werden soll +* Name und ID des Projekts, in welchem das Netzwerk sichtbar sein soll ## Wichtige Informationen zum geteilten Netzwerk Wenn man auf ein geteiltes Netzwerk zugreift, gibt es Einschränkungen, die beachtet werden müssen. Eine Einschränkung ist, dass keine Remote Security-Groups benutzt werden können. -Auch gibt es keinen Einblick in Ports und IP Adressen vom anderen Projekt gibt. -Daher kann man auch keine konkrete IP Adressen für neue Ports in einem Subnetz (im geteilten Netzwerk) angeben, da es so möglich wäre, IPs zu finden die bereits genutzt werden. +Auch gibt es keinen Einblick in Ports und IP Adressen vom anderen Projekt. +Daher können auch keine konkrete IP Adressen für neue Ports in einem Subnetz (im geteilten Netzwerk) angegeben werden, da es sonst möglich wäre, IPs zu finden, die bereits genutzt werden. -Damit man das geteilte Netzwerk sinnvoll nutzen kann, gibt es die Möglichkeit einen neuen Port zu erstellen. +Damit das geteilte Netzwerk sinnvoll genutzt werden kann, gibt es die Möglichkeit, einen neuen Port erstellen. Dieser erhält dann eine beliebige IP-Adresse und kann weiter genutzt werden, um zum Beispiel einen Router über diesen Port hinzuzufügen. -Im Dashboard (Horizon) ist dies nicht möglich und der OpenStackClient wird benötigt. +Im Horizon Dashboard ist dies nicht möglich und der OpenStackClient wird benötigt. -Bitte achten Sie darauf bei den Bezeichnungen keine Leer- und/oder Sonderzeichen zu nutzen, da die Nutzung selbiger zu Problem führen kann. +Bitte achten Sie darauf, bei den Bezeichnungen keine Leer- und/oder Sonderzeichen zu nutzen, da die Verwendung zu Problemen führen kann. Zuerst erstellen wir den Port und geben dort das geteilte Netzwerk an: ```bash openstack port create --network ``` -Jetzt kann zum Beispiel ein Router erstellt und dann dem neu erstellten Port zugeordnet werden: +Jetzt kann zum Beispiel ein Router erstellt und dem neu erstellten Port zugeordnet werden: ```bash ##Erstellung des Routers @@ -77,7 +81,7 @@ $ openstack router add port ![](attachments/SharedNetwork1.png) -Das Netzwerk "shared" aus dem Projekt 1 wird mit Projekt 2 geteilt. In diesem Netzwerk steht der Service "Example" zur Verfügung der dort auf einer Instanz läuft. +Das Netzwerk "shared" aus dem Projekt 1 wird mit Projekt 2 geteilt. In diesem Netzwerk steht der Service "Example" zur Verfügung, der dort auf einer Instanz läuft. ## Netzwerk Topology Projekt 2 @@ -86,6 +90,6 @@ Das Netzwerk "shared" aus dem Projekt 1 wird mit Projekt 2 geteilt. In diesem Ne Das Netzwerk "shared" ist auch in Projekt 2 sichtbar und wurde dort an den Router "router2" angehangen. Zusätzlich existiert dort das Netzwerk "network", aus dem auf die Services in dem Netzwerk "shared" zugegriffen wird. -Dabei muss berücksichtigt werden, das im Subnet des "shared" Networks in Projekt 1 die entsprechende Route unter dem Eintrag "Host Routes" gesetzt wird, um einen korrekten Rücktransport der Pakete zu ermöglichen. +Dabei muss berücksichtigt werden, dass im Subnet des "shared" Networks in Projekt 1 die entsprechende Route unter dem Eintrag "Host Routes" gesetzt wird, um einen korrekten Rücktransport der Pakete zu ermöglichen. Im unserem Beispiel ist die folgende Route notwendig: `10.0.1.0/24,10.0.0.1` diff --git a/docs/_optimist/networking/shared_networks/index.en.md b/docs/_optimist/networking/shared_networks/index.en.md index b3d6d4d01..71a38cd3b 100644 --- a/docs/_optimist/networking/shared_networks/index.en.md +++ b/docs/_optimist/networking/shared_networks/index.en.md @@ -10,28 +10,28 @@ parent: Networking ## Motivation -The question often arises of whether it is possible to share a network between two OpenStack projects. In this document, we will explain what is needed and how this can be implemented. +The question often arises as to whether it is possible to share a network between two OpenStack projects. Here we explain the requirements and how it can be implemented. ## Share Network ### If access to both projects is available: -In order to share the network, we needto use the [OpenStackClient](https://docs.openstack.org/python-openstackclient/latest/), the Project ID into which the network is to be shared, as well as the Network ID of the network to be shared. +To share the network, you need to use the [OpenStackClient](https://docs.openstack.org/python-openstackclient/latest/), the Project ID into which the network is to be shared, as well as the Network ID of the network to be shared. -The Project ID can be found in the output under "id" if we use the following command: +You can find the Project ID in the output under "id" using the following command: ```bash openstack project show -f value -c id ``` -Next, we need the Network ID of the network to be shared. We can find this in the output under "id" if the following command is used: +Next, you need the Network ID of the network to be shared. You can find this in the output under "id" using the following command: ```bash openstack network show -f value -c id ``` With the obtained IDs, the network can now be shared into the corresponding project. -To do this, we use Role-Based Access Control (RBAC): +To do this, use Role-Based Access Control (RBAC): ```bash openstack network rbac create --type network --action access_as_shared --target-project @@ -39,31 +39,31 @@ openstack network rbac create --type network --action access_as_shared --target- ### If access to both projects is not available: -In this case, the network can only be shared by support after the approval of the other project owner. +In this case, the network can only be shared by the Support team after the approval of the other project owner. -To share a network with a project, please send us an e-mail to [support@gec.io](mailto:support@gec.io) with the following information: +To share a network with a project, send an e-mail to [support@gec.io](mailto:support@gec.io) with the following information: - Name and ID of the network to be shared -- Name and ID of the project in which the network should be visible +- Name and ID of the project where the network should be visible ## Important information about shared networks -When accessing a shared network, there are limitations that must be considered. One limitation is that no remote security groups can be used. +When accessing a shared network, there are limitations to consider. One limitation is that you cannot use remote security groups. Additionally, there is no insight into ports and IP addresses from the other project. -Therefore, one can also specify any specific IP addresses for new ports in a subnet (in the shared network), as it would be possible to find IPs that are already in use. +Therefore, you can also specify any specific IP addresses for new ports in a subnet (in the shared network), as it would be possible to find IPs that are already in use. -In order to make use of the shared network, there is the option to create a new port. This then receives a random IP address to use, for example, to add a router through this port. +To use the shared network, there is the option to create a new port. This then receives a random IP address to use, for example, to add a router through this port. This is not possible in the Horizon dashboard; we need to use the [OpenStackClient](https://docs.openstack.org/python-openstackclient/latest/). -Please ensure that no spaces or special characters are used in names, as using these can lead to problems. +Make sure not to use spaces or special characters in names, since using these could lead to problems. -First, we create the port and specify the shared network there: +First, you create the port and specify the shared network there: ```bash openstack port create --network ``` -Now, for example, a router can be created and then mapped to the newly created port: +Now, for example, you can create a router and then map to the newly created port: ```bash ##Creation of the router diff --git a/docs/_optimist/specs/application_credentials/index.de.md b/docs/_optimist/specs/application_credentials/index.de.md index 8d47afe4f..c4e431be8 100644 --- a/docs/_optimist/specs/application_credentials/index.de.md +++ b/docs/_optimist/specs/application_credentials/index.de.md @@ -8,7 +8,7 @@ nav_order: 9300 # Einführung -Benutzer können Application Credentials erstellen, damit sich ihre Anwendungen bei der OpenStack-Komponente Keystone authentifizieren können, ohne ihre eigenen Anmeldeinformationen des Benutzers verwenden zu müssen. +Benutzer können Application Credentials erstellen, damit sich ihre Anwendungen bei der OpenStack-Komponente Keystone authentifizieren können, ohne die eigenen Anmeldeinformationen des Benutzers verwenden zu müssen. Mit Application Credentials können sich Anwendungen mit der Application Credential-ID und einer geheimen Zeichenfolge authentifizieren, die nicht das Kennwort des Benutzers ist. Auf diese Weise wird das Passwort des Benutzers nicht in die Konfiguration der Anwendung eingebettet. @@ -18,25 +18,25 @@ Benutzer können eine Teilmenge ihrer Rollenzuweisungen für ein Projekt an Appl ### Name / Secrets -Application Credentials für Ihr Projekt können über die Befehlszeile oder über das Dashboard generiert werden. Diese werden dem Projekt zugeordnet, in dem sie erstellt werden. +Die Benutzer können die Application Credentials für ihr Projekt über die Befehlszeile oder über das Dashboard generieren. Diese werden dem Projekt zugeordnet, in dem sie erstellt werden. -Der einzige erforderliche Parameter zum Erstellen der Anmeldeinformationen ist ein Name, jedoch kann mit dem Parameter `—-secret` ein bestimmtes Secret festgelegt werden. Ohne Parameter wird stattdessen automatisch ein Secret in der Ausgabe generiert. +Der einzige erforderliche Parameter zum Erstellen der Anmeldeinformationen ist ein Name, jedoch kann mit dem Parameter `—-secret` ein bestimmtes Secret festgelegt werden. Ohne Parameter wird automatisch ein Secret in der Ausgabe generiert. -Es ist in jedem Fall wichtig das Secret zu notieren, da dieses vor dem Speichern gehasht wird und nach dem Festlegen nicht wiederhergestellt werden kann. Wenn das Secret verloren geht, müssen neue Application Credential für die Anwendung erstellt werden. +Es ist in jedem Fall wichtig, das Secret zu notieren, da dieses vor dem Speichern gehasht wird und nach dem Festlegen nicht wiederhergestellt werden kann. Wenn das Secret verloren geht, müssen neue Application Credentials für die Anwendung erstellt werden. ### Roles -Wir empfehlen außerdem, die Roles festzulegen, die die Application Credentials der Anwendung im Projekt haben sollen, da standardmäßig ein neu erstellter Satz von Anmeldeinformationen alle verfügbaren Roles erbt. +Wir empfehlen außerdem, die Rollen (Roles) festzulegen, die die Application Credentials der Anwendung im Projekt haben sollen, da standardmäßig ein neu erstellter Satz von Anmeldeinformationen alle verfügbaren Rollen erbt. -Im Folgenden sind die verfügbaren Roles aufgeführt, die einem Satz von Application Credentials zugewiesen werden können. Wenn Sie diese Roles mithilfe des Parameters `--role` auf einen Satz von Application Credentials anwenden, beachten Sie bitte, dass bei allen Role-Namen die Groß-/Kleinschreibung beachtet wird: +Im Folgenden sind die verfügbaren Rollen aufgeführt, die einem Satz von Application Credentials zugewiesen werden können. Wenn diese Rollen mithilfe des Parameters `--role` auf einen Satz von Application Credentials angewendet werden, ist es wichtig, bei allen Rollen-Namen die Groß-/Kleinschreibung zu beachten. - `Member`: Die Rolle "Member" hat nur administrativen Zugriff auf das zugewiesene Projekt. -- `heat_stack_owner`: Als "heat_stack_owner" können Sie vorhandene HEAT-Templates verwenden und ausführen. -- `load-balancer_member`: Als „load-balancer_member“ können Sie die Octavia LoadBalancer-Ressourcen nutzen. +- `heat_stack_owner`: Die Rolle "heat_stack_owner" kann vorhandene HEAT-Templates verwenden und ausführen. +- `load-balancer_member`: Die Rolle "load-balancer_member" kann die Octavia LoadBalancer-Ressourcen nutzen. ### Expiration -Standardmäßig laufen erstellte Application Credentials nicht ab, jedoch können feste Ablaufdaten/-zeiten für Application Credentials bei der Erstellung festgelegt werden, indem der Parameter `--expires` im Befehl verwendet wird (zum Beispiel: `--expires '2021-07-15T21: 00:00'`). +Standardmäßig laufen erstellte Application Credentials nicht ab, jedoch können feste Ablaufdaten/-zeiten für Application Credentials bei der Erstellung festgelegt werden. Dazu wird der Parameter `--expires` im Befehl verwendet (zum Beispiel: `--expires '2021-07-15T21: 00:00'`). ## Erstellen von Application Credentials über die CLI @@ -67,7 +67,7 @@ $ openstack application credential create test-credentials --secret ZYQZm2k6pk - +--------------+----------------------------------------------+ ``` -Hinweis: Das Secret (ob vom Benutzer festgelegt oder automatisch generiert) wird nur beim Erstellen der Application Credentials angezeigt. Bitte notieren Sie sich das Secret zu diesem Zeitpunkt. +Hinweis: Das Secret (ob vom Benutzer festgelegt oder automatisch generiert) wird nur beim Erstellen der Application Credentials angezeigt. Es ist wichtig, das Secret zu diesem Zeitpunkt zu notieren. ## Anzeigen von Application Credentials über die CLI @@ -86,7 +86,7 @@ Einzelne Credentials können mit dem `$ openstack application credential show Application Credentials generiert werden: +Alternativ können Application Credentials auch über das Optimist Dashboard unter *Identität* → *Application Credentials* generiert werden: ![](attachments/createappcredentials.png) -Hinweis: Hier können mehrere Rollen ausgewählt werden, indem Sie die Umschalttaste gedrückt halten und durch die Optionen navigieren. +Hinweis: Hier können die Benutzer mehrere Rollen auswählen, indem sie die Umschalttaste gedrückt halten und durch die Optionen navigieren. -Nach der Erstellung wird ein Dialogfeld angezeigt, in dem Sie aufgefordert werden, die ID und das Secret zu notieren. Wenn Sie fertig sind, klicken Sie auf "Close". +Nach der Erstellung wird ein Dialogfeld angezeigt mit der Aufforderung, die ID und das Secret zu notieren. Danach klickt man auf "Close". ![](attachments/secretappcredentials.png) -Die Zugangsdaten hier können jederzeit gelöscht werden, indem Sie den zu löschenden Zugangsdatensatz zu markieren und dann auf "DELETE APPLICATION CREDENTIAL" klicken. +Die Zugangsdaten hier können jederzeit gelöscht werden, indem die Benutzer den zu löschenden Zugangsdatensatz markieren und auf "DELETE APPLICATION CREDENTIAL" klicken. ![](attachments/deleteappcredentials.png) ## Application Credentials testen -Sobald wir über die CLI oder das Dashboard einen Satz von Application Credentials erstellt haben, können wir sie mit dem folgenden curl-Befehl testen, um zu überprüfen, ob sie funktionieren. +Sobald über die CLI oder das Dashboard ein Satz von Application Credentials erstellt wurde, können Benutzer mit dem folgenden curl-Befehl überprüfen, ob sie funktionieren. -Wir müssen unsere `` und `` im curl-Befehl verwenden: +Dazu müssen die Benutzer ihr `` und `` im curl-Befehl verwenden: ```bash curl -i -H "Content-Type: application/json" -d ' { "auth": { "identity": { "methods": ["application_credential"], "application_credential": { "id": “", "secret": “"}}}}' https://identity.optimist.innovo.cloud/v3/auth/tokens diff --git a/docs/_optimist/specs/application_credentials/index.en.md b/docs/_optimist/specs/application_credentials/index.en.md index cfa1e4d67..8b41fb0e7 100644 --- a/docs/_optimist/specs/application_credentials/index.en.md +++ b/docs/_optimist/specs/application_credentials/index.en.md @@ -8,39 +8,39 @@ nav_order: 9300 # Introduction -Users can create Application Credentials to allow their applications to authenticate to the OpenStack Authentication component (Keystone) without needing to use the user's personal credentials. +You can create application credentials to allow your applications to authenticate to the OpenStack Authentication component (Keystone) without using your credentials. -With application credentials, applications can authenticate with the application credential ID and a secret string which is not the user’s password. This way, the user’s password is not embedded in the application’s configuration. +With application credentials, applications can authenticate with the application credential ID and a secret string which is not the user's password. This way, the user password is not embedded in the application’s configuration. -Users can delegate a subset of their role assignments on a project to application credentials, granting the application the same or restricted permissions within a project. +You can delegate a subset of your role assignments on a project to application credentials, granting the application the same or restricted permissions within a project. ## Requirements for Application Credentials ### Name / Secrets -Application credentials can be generated for your project via the command-line or via the dashboard. These will be associated with the project in which they are created. +You can generate application credentials for your project with the command line or with the dashboard. These will be associated with the project in which they are created. -The only required parameter to create the credentials is a name, however a specific secret can be set by using the `—-secret` parameter. If the secret parameter is left blank, a secret will instead be auto-generated in the output. +The only required parameter to create the credentials is a name, however, you can set a specific secret with the `—-secret` parameter. If the secret parameter is left blank, a secret will be auto-generated in the output instead. -It is important to make note of the secret in either case as the secret is hashed before it is stored and will not be retrievable after it has been set. If the secret is lost, a new application credential should be created. +It is important to make a note of the secret in either case as the secret is hashed before it is stored and will not be retrievable after it has been set. If the secret is lost, you must create a new application credential. ### Roles -We also recommend setting the roles that the Application Credentials should have in the project, since by default, a newly created set of credentials will inherit all available roles. +We also recommend setting the roles that the application credentials should have in the project, since by default, a newly created set of credentials will inherit all available roles. -Below are the available roles which can be assigned to a set of application credentials. When applying these roles to a set of credentials using the `--role` parameter, please be aware that all role names are case-sensitive: +Below are the available roles that you can assign to a set of application credentials. When you apply these roles to a set of credentials with the `--role` parameter, be aware that all role names are case-sensitive: -- `Member`: The "member" role only has administrative access to the assigned project. +- `Member`: The "Member" role only has administrative access to the assigned project. - `heat_stack_owner`: As "heat_stack_owner" you are able to use and execute existing HEAT templates. -- `load-balancer_member`: As a “load-balancer_member" you can use the Octavia LoadBalancer resources. +- `load-balancer_member`: As "load-balancer_member" you can use the Octavia LoadBalancer resources. ### Expiration -By default, created Application Credentials will not expire, however, fixed expiration dates/times can be set for credentials upon creation, using the `--expires` parameter in the command (for example: `--expires '2021-07-15T21:00:00'`). +By default, created application credentials do not expire, however, you can set fixed expiration dates/times for credentials upon creation, using the `--expires` parameter in the command (for example: `--expires '2021-07-15T21:00:00'`). -## Creating Application Credentials via the CLI +## Creating Application Credentials with the CLI -A set of Application Credentials can be created in the desired project via the CLI, the example below demonstrates how to create a set of credentials with the following parameters: +You can create a set of application credentials in the desired project with the CLI. The example below shows how to create a set of credentials with the following parameters: - Name: test-credentials - Secret: ZYQZm2k6pk @@ -67,11 +67,11 @@ $ openstack application credential create test-credentials --secret ZYQZm2k6pk - +--------------+----------------------------------------------+ ``` -Note: The secret (whether set by the user or auto-generated) will be displayed upon creation of the credentials. Please take note of the secret at this time. +Note: The secret (whether set by the user or auto-generated) will be displayed upon creation of the credentials. Please take a note of the secret at this time. -## Viewing Application Credentials via the CLI +## Viewing Application Credentials with the CLI -The list of application credentials belonging to a project can be listed with the following command. +You can display a list the application credentials belonging to a project with the following command: ```bash $ openstack application credential list @@ -82,40 +82,40 @@ $ openstack application credential list +----------------------------------+-------------------+----------------------------------+-------------+------------+ ``` -Individual credentials can be viewed using the `$ openstack application credential show ` command. +You can view individual credentials with the `$ openstack application credential show ` command. ## Deleting Application Credentials via the CLI -Application credentials can be deleted via the CLI with the following command with the name or ID of the specific set of credentials: +You can delete application credentials with the CLI by using the following command with the name or ID of the specific set of credentials: ```bash openstack application credential delete test-credentials ``` -## Creating and Deleting Application Credentials via the Optimist Dashboard +## Creating and Deleting Application Credentials with the Optimist Dashboard -Alternatively, Application credentials can also be generated via the Optimist Dashboard under Identity > Application credentials: +Alternatively, you can also generate application credentials with the Optimist Dashboard under *Identity → Application credentials*: ![](attachments/createappcredentials.png) -Note: Multiple roles can be selected here by holding shift and navigating through the options. +Note: You can select multiple roles here by holding the *Shift*-key and navigating through the options. -Once created, a dialog box will appear to instruct you to capture the ID and secret. Once done, click "Close". +Once created, a dialog box appears to instruct you to capture the ID and secret. Once done, click *Close*. ![](attachments/secretappcredentials.png) -The credentials here can also deleted at any point by using the checkbox to highlight the set of credentials to be deleted and then clicking "DELETE APPLICATION CREDENTIAL" +You can also delete the credentials at any point by using the checkbox to highlight the set of credentials to be deleted and then clicking *DELETE APPLICATION CREDENTIAL* ![](attachments/deleteappcredentials.png) ## Testing Application credentials -Once we have created a set of Application Credentials either via the CLI or dashboard, we can test them by using the following curl command to verify that they are working. +Once you have created a set of application credentials either with the CLI or the dashboard, you can test them by using the following curl command to verify that they are working. -We need to use our `` and `` in the curl command: +You need to use your `` and `` in the curl command: ```bash curl -i -H "Content-Type: application/json" -d ' { "auth": { "identity": { "methods": ["application_credential"], "application_credential": { "id": “", "secret": “"}}}}' https://identity.optimist.innovo.cloud/v3/auth/tokens ``` -A successful curl attempt will output an `x-subject-token`, unsuccessful attempts where the credentials are incorrect will result in a 401 error. +A successful curl attempt outputs an `x-subject-token`, unsuccessful attempts where the credentials are incorrect result in a 401 error. diff --git a/docs/_optimist/specs/default_quota/index.de.md b/docs/_optimist/specs/default_quota/index.de.md index 459ba34a5..9cbbb990f 100644 --- a/docs/_optimist/specs/default_quota/index.de.md +++ b/docs/_optimist/specs/default_quota/index.de.md @@ -7,13 +7,11 @@ nav_order: 9200 last_modified_date: 2021-04-19 --- -OpenStack Default Quotas -======================== +# Default Quotas Im Optimist haben wir Standardwerte für den OpenStack Compute-Dienst, den OpenStack Block Storage-Dienst und den OpenStack Networking-Dienst definiert. Wir haben auch separate Quotas für den Octavia Loadbalancer-Dienst und die zugehörigen Komponenten. Diese Standardwerte sind unten aufgeführt. -Compute Standardwerte ---------------------- +## Compute Standardwerte |**Ressource** |**Wert** | |:-------------------------|:--------------------| @@ -29,8 +27,7 @@ Compute Standardwerte | Server Groups | 10 | | Server Group Members | 10 | -Block Storage Standardwerte ---------------------------- +## Block Storage Standardwerte |**Ressource** |**Wert** | |:-------------------------|:--------------------| @@ -41,8 +38,7 @@ Block Storage Standardwerte | Snapshots | 100 | | Volumes | 100 | -Network Standardwerte ---------------------- +## Network Standardwerte |**Ressource** |**Wert** | |:-------------------------|:--------------------| @@ -56,8 +52,7 @@ Network Standardwerte | RBAC Policies | 100 | | Subnetpools | Unlimited | -Octavia Loadbalancers ----------------- +## Octavia Loadbalancers |**Ressource** |**Wert** | |:-------------------------|:--------------------| diff --git a/docs/_optimist/specs/default_quota/index.en.md b/docs/_optimist/specs/default_quota/index.en.md index 41b7874df..a4bafdd33 100644 --- a/docs/_optimist/specs/default_quota/index.en.md +++ b/docs/_optimist/specs/default_quota/index.en.md @@ -29,7 +29,7 @@ Compute Settings | Server Groups | 10 | | Server Group Members | 10 | -Block Storage settings +Block Storage Settings ---------------------- |**Field** |**Value** | @@ -41,7 +41,7 @@ Block Storage settings | Snapshots | 100 | | Volumes | 100 | -Network settings +Network Settings ---------------- |**Field** |**Value** | diff --git a/docs/_optimist/specs/flavor_specification/index.de.md b/docs/_optimist/specs/flavor_specification/index.de.md index 793be75f2..b29a1f871 100644 --- a/docs/_optimist/specs/flavor_specification/index.de.md +++ b/docs/_optimist/specs/flavor_specification/index.de.md @@ -19,7 +19,7 @@ Um die Flavors bestehender Instanzen zu ändern, kann die OpenStack-Option „Re ## Deprecated Flavor-Typen -Die folgenden Flavor-Typen gelten derzeit als veraltet und die Entfernung dieser Flavor-familien ist für die nahe Zukunft geplant. Wir werden regelmäßig überprüfen, ob diese Flavors noch verwendet werden, wenn nicht, werden wir sie auf privat setzen, um zu vermeiden, dass neue Instanzen damit erstellt werden: +Die folgenden Flavor-Typen gelten derzeit als veraltet und die Entfernung dieser Flavor-Familien ist für die nahe Zukunft geplant. Wir werden regelmäßig überprüfen, ob diese Flavors noch verwendet werden, wenn nicht, werden wir sie auf privat setzen, um zu vermeiden, dass neue Instanzen damit erstellt werden: - m1-Familie (deprecated) - e1-Familie (e = equal) (deprecated) diff --git a/docs/_optimist/specs/flavor_specification/index.en.md b/docs/_optimist/specs/flavor_specification/index.en.md index c2c0f9826..d4c409e96 100644 --- a/docs/_optimist/specs/flavor_specification/index.en.md +++ b/docs/_optimist/specs/flavor_specification/index.en.md @@ -14,11 +14,11 @@ various standard hardware profiles (flavors). These have different limits, which ## Migrating between Flavor Types -To change the flavors of existing instances, the OpenStack "Resize Instance" Option can be used either via the Dashboard or the CLI. This will result in a reboot of the Instance but the content of the instance will be preserved. +To change the flavors of existing instances, you can use the OpenStack "Resize Instance" option either with the Dashboard or the CLI. This will result in a reboot of the instance but the content of the instance will be preserved. ## Deprecated Flavor Types -The following Flavor Types are currently considered deprecated and the removal of these flavor families is planned for the near future. We will regularly check if these flavors are still in use, if not, we will set them to private in order to to avoid new instances being created with them. +The following flavor types are currently considered deprecated and the removal of these flavor families is planned for the near future. We will regularly check if these flavors are still in use, if not, we will set them to private in order to avoid new instances being created with them. - m1-Family (Deprecated) - e1-Family (e = equal) (Deprecated) diff --git a/docs/_optimist/specs/images/index.de.md b/docs/_optimist/specs/images/index.de.md index 137b38a14..638be8597 100644 --- a/docs/_optimist/specs/images/index.de.md +++ b/docs/_optimist/specs/images/index.de.md @@ -8,18 +8,18 @@ nav_order: 9500 # Images -Es gibt 4 Arten von Images in OpenStack: +Es gibt vier Arten von Images in OpenStack: - **Public Images:** Diese Images werden von uns gepflegt, sind für alle Benutzer verfügbar, werden regelmäßig aktualisiert und zur Verwendung empfohlen. -- **Community Images:** Ehemals öffentliche Images, die durch neuere Versionen ersetzt wurden. Wir behalten diese Images, bis sie nicht mehr verwendet werden, um Ihre Deployments nicht zu gefährden. -- **Private Images:** Von Ihnen hochgeladene Images, die nur für Ihr Projekt verfügbar sind. -- **Shared Images:** Private Images, die entweder durch Sie oder oder mit Ihnen in mehreren Projekten gemeinsam genutzt werden. +- **Community Images:** Ehemals öffentliche Images, die durch neuere Versionen ersetzt wurden. Wir behalten diese Images, bis sie nicht mehr verwendet werden, um die Deployments der Benutzer nicht zu gefährden. +- **Private Images:** Von den Benutzern hochgeladene Images, die nur für ihre Projekte verfügbar sind. +- **Shared Images:** Private Images, die entweder durch die Benutzer oder mit ihnen in mehreren Projekten gemeinsam genutzt werden. Nur die ersten beiden Typen werden von uns verwaltet. ## Public und community images -Um Ihren Aufwand so gering wie möglich zu halten, stellen wir Ihnen eine Reihe ausgewählter Images zur Verfügung. +Um den Aufwand für Sie so gering wie möglich zu halten, stellen wir Ihnen eine Reihe ausgewählter Images zur Verfügung. Aktuell enthält diese Liste: @@ -33,9 +33,9 @@ Aktuell enthält diese Liste: - Flatcar Linux - Windows Server 2019 (GUI/Core) -Diese Images werden täglich auf neue Versionen überprüft. Die neueste verfügbare Version ist immer ein "public image" und endet auf `Latest`. Alle vorherigen Versionen eines Images werden durch unseren Automatismus in "community images" umgewandelt, umbenannt (`latest` wird durch das Datum des ersten Uploads ersetzt), und bei ausbleibender Verwendung (keinerlei Nutzung) schlussendlich gelöscht. +Diese Images werden täglich auf neue Versionen überprüft. Die neueste verfügbare Version ist immer ein "public image" und endet auf `Latest`. Alle vorherigen Versionen eines Images werden durch unseren Automatismus in "community images" umgewandelt, umbenannt (`latest` wird durch das Datum des ersten Uploads ersetzt), und bei ausbleibender Verwendung (keinerlei Nutzung) schlussendlich gelöscht. -OpenStack und viele Deployment-Tools unterstützen die Verwendung dieser Images entweder über den Namen oder über ihre UUID. Durch die Verwendung eines Namens, z.B. `Ubuntu 22.04 Jammy Jellyfish - Latest`, Erhalten sie jeweils die aktuellste Version des jeweiligen Images, indem Sie Ihre Instanzen neu bereitstellen oder neu aufbauen, selbst wenn wir das Image zwischendurch ersetzen. Sie können dieses Verhalten vermeiden, indem Sie stattdessen die UUID verwenden. Dies kann für Cluster-Einsätze nützlich sein, bei denen Sie sicherstellen wollen, dass auf allen Instanzen die gleiche Version des Images läuft. +OpenStack und viele Deployment-Tools unterstützen die Verwendung dieser Images entweder über den Namen oder über ihre UUID. Durch die Verwendung eines Namens, z.B. `Ubuntu 22.04 Jammy Jellyfish - Latest`, erhalten Sie jeweils die aktuellste Version des jeweiligen Images, indem Sie ihre Instanzen neu bereitstellen oder neu aufbauen, selbst wenn wir das Image zwischendurch ersetzen. Sie können dieses Verhalten vermeiden, indem Sie stattdessen die UUID verwenden. Dies kann für Cluster-Einsätze nützlich sein, bei denen Sie sicherstellen wollen, dass auf allen Instanzen die gleiche Version des Images läuft. ## Linux Images @@ -43,15 +43,15 @@ Alle von uns zur Verfügung gestellten Linux-Images sind unmodifiziert und komme ## Windows Images -### Was ist drin? +### Was ist darin enthalten? -Leider gibt es keine vorgefertigten Images für Windows-Deployments, haben wir eigene gebaut. Unsere Anpassungen sind minimal, gerade genug, um eine einfache Nutzung innerhalb unserer Instanzen zu ermöglichen. +Leider gibt es keine vorgefertigten Images für Windows-Deployments, deshalb haben wir eigene gebaut. Unsere Anpassungen sind minimal, gerade genug, um eine einfache Nutzung innerhalb unserer Instanzen zu ermöglichen. -Unsere Images basieren auf einer regulären Installation von Windows Server 2019 Standard Edition, Version 1809 (LTSC). Unsere Image Builds enthalten die aktuellsten Treiber für unsere Virtualisierungsinfrastruktur, für die Netzwerkkarte und Festplatten hinzugefügt. +Unsere Images basieren auf einer regulären Installation von Windows Server 2019 Standard Edition, Version 1809 (LTSC). Unsere Image Builds enthalten die aktuellsten Treiber für unsere Virtualisierungsinfrastruktur, für die Netzwerkkarte und Festplatten. -Außerdem haben wir die neueste OpenSSH-Version für Windows und die neueste Version der PowerShell installiert. Beide sind für die folgenden Schritte erforderlich und ermöglichen Ihnen die erste Verbindung mit Ihrer Instanz. +Außerdem haben wir die neueste OpenSSH-Version für Windows und die neueste Version der PowerShell installiert. Beide sind für die folgenden Schritte erforderlich und ermöglichen den Benutzern die erste Verbindung mit ihrer Instanz. -Des weiteren ist der RDP-Dienst aktiviert, der für eine Remote-Desktop-Verbindung erforderlich ist. Vergessen Sie nicht, die dafür erforderlichen Sicherheitsgruppen hinzuzufügen, und achten Sie darauf, den Zugriff so weit wie möglich einzuschränken. Außerdem haben wir aus Sicherheitsgründen AutoLogon deaktiviert. +Des weiteren ist der RDP-Dienst aktiviert, der für eine Remote-Desktop-Verbindung erforderlich ist. Vergessen Sie nicht, die dafür erforderlichen Sicherheitsgruppen hinzuzufügen und achten Sie darauf, den Zugriff so weit wie möglich einzuschränken. Außerdem haben wir aus Sicherheitsgründen AutoLogon deaktiviert. Unsere Images sind außerdem mit aktivierten Spectre- und Meltdown-Mitigations ausgestattet. Außerdem mussten wir die Nutzung von zufälligen MAC-Adressen deaktivieren, da unsere virtuellen Netzwerke feste MAC-Adressen voraussetzen. @@ -59,7 +59,7 @@ Für einen schnellen Start und Ihre Sicherheit stellen wir diese Windows-Images Schließlich haben wir die verfügbaren DotNetAssemblies optimiert, Firewall-Regeln hinzugefügt, um ICMP-Echoantworten zuzulassen, und cloud-init installiert. Letzteres ist für das Hinzufügen Ihrer ssh-Schlüssel zu den neuen Instanzen verantwortlich. -### Und wie? +### Wie funktioniert das? Fast genauso einfach wie mit unseren Linux-Instanzen. Importieren Sie Ihren SSH-Schlüssel in OpenStack (CLI oder Dashboard) und starten Sie Ihre Instanzen. Danach können Sie sich mit folgendem Befehl anmelden: @@ -75,7 +75,7 @@ net user Administrator $password Wir raten dringend davon ab, veraltete Verfahren wie z.B. ein `admin_pass` über die Instanz-Metadaten zu setzen. Hierbei wird nichts verschlüsselt oder anderweitig gesichert, und wird außerdem nicht funktionieren, sollte Ihr Passwort nicht den nötigen Sicherheitsrichtlinien entsprechen. -**Achtung:** Unsere Windows-Images enthalten weder Produkt-Schlüssel, noch Lizenzen. Sie werden Ihre eigenen verwenden müssen. +**Achtung:** Unsere Windows-Images enthalten weder Produkt-Schlüssel, noch Lizenzen. Sie werden daher Ihre eigenen verwenden müssen. ## Upload von eigenen Images @@ -94,7 +94,7 @@ openstack image create \ my-image ``` -Dabei müssen mindestens folgende Parameter spezifiziert werden: +Dabei müssen mindestens Sie folgende Parameter spezifizieren: - `--disk-format`: Das Format Ihres Quell-Images, z.B. `qcow2` - `--file`: Das Quell-Image auf Ihrem System diff --git a/docs/_optimist/specs/images/index.en.md b/docs/_optimist/specs/images/index.en.md index 4bc163146..664c69bdc 100644 --- a/docs/_optimist/specs/images/index.en.md +++ b/docs/_optimist/specs/images/index.en.md @@ -10,8 +10,8 @@ nav_order: 9500 There are 4 types of images in OpenStack: -- **Public Images:** These images are maintained by us, available to all users, regularly updated and recommended for use. -- **Community Images:** Previously public images, which have been superseded by newer versions. We're keeping these images until they're no longer in use, so as not to compromise your deployments. +- **Public Images:** These images are maintained by us, available to all users, and regularly updated and recommended for use. +- **Community Images:** Previously public images, which have been superseded by newer versions. We will keep these images until they are no longer in use, so as not to compromise your deployments. - **Private Images:** Images uploaded by you that are only available to your project. - **Shared Images:** Private images, which are either shared by you, or with you, across multiple different projects. @@ -19,7 +19,7 @@ Only the first two types are maintained by us. ## Public and community images -For your convenience, we're providing you with a number of selected images. +For your convenience, we are providing you with a number of selected images. The current list of images is as follows: @@ -35,23 +35,23 @@ The current list of images is as follows: These images are checked for new releases daily. The latest available version is always a public image, and contains the `Latest`-suffix. All previous versions of an imags are automatically converted to "community images", renamed (`Latest` is replaced by the date of the first upload), and eventially deleted if they are no longer in use at all. -OpenStack and many deployment tools support using these images either by name or by their UUID. By using a name, for example `Ubuntu 22.04 Jammy Jellyfish - Latest`, you can easily stay up to date by redeploying or rebuilding your instances, even if we replace the image in the interim. You can avoid this behaviour by using the UUID instead. This may be useful for cluster deployments, where you want to ensure that all nodes are running the same version of the image. +OpenStack and many deployment tools support using these images either by name or by their UUID. By using a name, for example, `Ubuntu 22.04 Jammy Jellyfish - Latest`, you can easily stay up-to-date by redeploying or rebuilding your instances, even if we replace the image in the interim. You can avoid this behaviour by using the UUID instead. This may be useful for cluster deployments, where you want to ensure that all nodes are running the same version of the image. -## Linux Images +## Linux images -All of our provided linux images are unmodified and come directly from their official maintainers. We test them during the upload process to ensure they are deployable. +All of our provided Linux images are unmodified and come directly from their official maintainers. We test them during the upload process to ensure they are deployable. -## Windows Images +## Windows images -### What's inside? +### What is inside? -Sadly, there are no prebuilt images for windows deployments, so we built our own. Our changes are minimal, just enough to allow easy use within our instances. +Sadly, there are no prebuilt images for Windows deployments, so we built our own. Our changes are minimal, just enough to allow easy use within our instances. Our images are based on a regular installation of Windows Server 2019 standard edition, version 1809 (LTSC). We have added the latest drivers for our virtualization infrastructure, for the network card and storage. Next, we installed the most recent OpenSSH build for windows, and the most recent version of PowerShell. Both are required for the following provisioning steps, and to allow you to initially connect to your instance. -We also enabled the RDP service, which is required for remote desktop connections. Don't forget to add the required security groups for this, and be sure to limit access as much as possible. We have also disabled AutoLogon for security reasons. +We also enabled the RDP service, which is required for remote desktop connections. Do not forget to add the required security groups for this, and be sure to limit access as much as possible. We have also disabled AutoLogon for security reasons. Our images also come with Spectre and Meltdown mitigations enabled. Additionally we had to disable the random MAC address generator, since our virtual networks enforce fixed MAC addresses. @@ -75,7 +75,7 @@ net user Administrator $password We strongly discourage using the previous method, adding `admin_pass` to the instances metadata. This is not encrypted or protected in any way, and is not guaranteed to work due to password security requirements. -**Be aware:** Our Images come **without** product keys or licenses. You will have to provide your own. +**Be aware:** Our images come **without** product keys or licenses. You will have to provide your own. ## Uploading your own images diff --git a/docs/_optimist/specs/volume_specification/index.de.md b/docs/_optimist/specs/volume_specification/index.de.md index 2f602b762..3e5a88b8a 100644 --- a/docs/_optimist/specs/volume_specification/index.de.md +++ b/docs/_optimist/specs/volume_specification/index.de.md @@ -31,5 +31,6 @@ Nachfolgend eine Übersicht der drei Volume-Typen: ## Auswählen eines Volume-Typs -Sie können beim Erstellen eines Volumes mit dem folgenden Befehl einen der drei Volume-Typen auswählen (Wenn nicht anders angegeben, wird immer der Typ „Standard“ verwendet): +Sie können beim Erstellen eines Volumes mit dem folgenden Befehl einen der drei Volume-Typen auswählen. Wenn nicht anders angegeben, wird der Typ *Standard* verwendet. + `$ openstack volume create --size 10 --type high-iops` diff --git a/docs/_optimist/specs/volume_specification/index.en.md b/docs/_optimist/specs/volume_specification/index.en.md index 2e7e9f133..59853a455 100644 --- a/docs/_optimist/specs/volume_specification/index.en.md +++ b/docs/_optimist/specs/volume_specification/index.en.md @@ -9,7 +9,7 @@ last_modified_date: 2022-02-02 # Volume Specifications -In OpenStack, “volumes” are persistent storage that you can attach to your running OpenStack Compute instances to. In Optimist we have set up three classes of service for volumes. These have different limits, which are detailed below. +In OpenStack, "volumes" are persistent storage that you can attach to your running OpenStack Compute instances to. In Optimist we have set up three classes of service for volumes. These have different limits, which are detailed below. ## Volume Types @@ -21,7 +21,7 @@ We have three main volume types: ## Volume QoS List -An overview of the three volume types below: +You find an overview of the three volume types below: | Name | Associations | Read Bytes Sec | Read IOPS Sec | Write Bytes Sec | Write IOPS Sec | | :------------ | ------------: | -------------: | -------------: | --------------: | -------------: | @@ -31,5 +31,5 @@ An overview of the three volume types below: ## Choosing a Volume Type -You can select one of the three volume types upon creation of a volume with the following command (Unless otherwise specified, the type "default" is always used): +You can select one of the three volume types upon creation of a volume with the following command (unless otherwise specified, the type "default" is always used): `$ openstack volume create --size 10 --type high-iops` diff --git a/docs/_optimist/storage/s3_documentation/backupwithrestic/index.de.md b/docs/_optimist/storage/s3_documentation/backupwithrestic/index.de.md index 02aac3c62..b23f1463d 100644 --- a/docs/_optimist/storage/s3_documentation/backupwithrestic/index.de.md +++ b/docs/_optimist/storage/s3_documentation/backupwithrestic/index.de.md @@ -6,25 +6,26 @@ nav_order: 3170 parent: S3 Kompatiblen Objekt Storage grand_parent: Storage --- +# Sichere Datensicherung mit Restic und Rclone -Restic ist eine sehr einfache und leistungsstarke file-basierte Backup-Lösung, die schnell an Popularität gewinnt. Es kann in Kombination mit S3 verwendet werden, was es zu einem großartigen Werkzeug für Optimist macht. +Restic ist eine sehr einfache und leistungsstarke File-basierte Backup-Lösung, die schnell an Popularität gewinnt. Es kann in Kombination mit S3 verwendet werden, und ist somit ein großartiges Werkzeug für Optimist. ## Problemstellung -Beim Durchführen von Sicherungen auf Dateiebene eines Nodes in S3 benötigt die Sicherungssoftware Schreibberechtigungen für den S3-Bucket. +Beim Durchführen von Sicherungen (Backups) auf Dateiebene eines Nodes in S3 benötigt die Sicherungssoftware Schreibberechtigungen für den S3-Bucket. Verschafft sich ein Angreifer jedoch Zugriff auf die Maschine, kann er auch die Backups im Bucket zerstören, da die S3-Anmeldeinformationen auf dem kompromittierten System vorhanden sind. -Die Lösung kann so einfach sein, wie die Zugriffsebene der Backup-Software auf den Bucket einzuschränken. Leider ist das bei S3 nicht trivial. +Eine einfache Lösung könnte sein, die Zugriffsebene der Backup-Software auf den Bucket einzuschränken. Leider ist das bei S3 nicht trivial. ## Hintergrund -[S3-Zugriffskontrolllisten (ACLs)](/optimist/storage/s3_documentation/security) ermöglichen Ihnen die Verwaltung des Zugriffs auf Buckets und Objekte, sind jedoch sehr eingeschränkt. Sie unterscheiden im Wesentlichen READ- und WRITE-Berechtigungen: +[S3-Zugriffskontrolllisten (ACLs)](/optimist/storage/s3_documentation/security) ermöglichen die Verwaltung des Zugriffs auf Buckets und Objekte, sie sind jedoch sehr eingeschränkt und unterscheiden im Wesentlichen READ- und WRITE-Berechtigungen: * READ – Ermöglicht dem Benutzer, die Objekte im Bucket aufzulisten * WRITE - Ermöglicht dem Benutzer, jedes Objekt im Bucket zu erstellen, zu überschreiben und zu löschen -Die Einschränkungen von ACLs wurden durch die Zugriffsrichtlinienberechtigungen (ACP) behoben. Wir könnten dem Bucket eine No-Delete-Richtlinie anhängen, z.B. +Die Einschränkungen von ACLs wurden durch die Zugriffsrichtlinienberechtigungen (ACP) behoben. An den Bucket könnte auch eine No-Delete-Richtlinie angehängt werden, zum Beispiel: ```json { @@ -48,7 +49,7 @@ Die Einschränkungen von ACLs wurden durch die Zugriffsrichtlinienberechtigungen } ``` -Leider wurde das S3-Protokoll selbst nicht mit dem Konzept von WORM-Backups (Write Once Read Many) im Hinterkopf entwickelt. Zugriffsrichtlinienberechtigungen unterscheiden nicht zwischen dem Ändern eines vorhandenen Objekts (was ein effektives Löschen ermöglichen würde) und dem Erstellen eines neuen Objekts. +Leider wurde bei der Entwicklung des S3-Protokolls nicht das Konzept von WORM-Backups (Write Once Read Many) berücksichtigt. Zugriffsrichtlinienberechtigungen unterscheiden nicht zwischen dem Ändern eines vorhandenen Objekts (was ein effektives Löschen ermöglichen würde) und dem Erstellen eines neuen Objekts. Das Anhängen der obigen Richtlinie an einen Bucket verhindert nicht das Überschreiben der darin enthaltenen Objekte. @@ -68,27 +69,27 @@ upload: 'testfile' -> 's3://appendonly-bucket/testfile' [1 of 1] Da ein Angreifer auf einem kompromittierten System immer Zugriff auf die S3-Anmeldeinformationen und jeden auf dem System laufenden Dienst hat – einschließlich Restic selbst, Proxys usw. – benötigen wir eine zweite, abgesicherte VM, die Löschvorgänge einschränken kann. Restic lässt sich perfekt in rclone integrieren, daher verwenden wir es in diesem Beispiel. -### Our environment +### Unsere Umgebung (Environment) * `appsrv`: das zu sichernde System, mit Zugriff auf die Sicherungen * `rclonesrv`: das System, auf dem der rclone-Proxy ausgeführt wird (und nichts anderes, um die Angriffsfläche zu minimieren) -### Den rclone-Proxy einrichten +### Einrichtung des rclone-Proxy -1. rclone auf dem `rclonesrv` installieren: +1. Installieren von rclone auf `rclonesrv`: ```bash sudo apt install rclone ``` -1. User für rclone anlegen +1. Anlegen des Users für rclone: ```bash sudo useradd -m rcloneproxy sudo su - rcloneproxy ``` -1. Die Backend-Konfiguration für rclone backend erstellen +1. Erstellen der Backend-Konfiguration für rclone backend: ```bash mkdir -p .config/rclone @@ -107,7 +108,7 @@ Da ein Angreifer auf einem kompromittierten System immer Zugriff auf die S3-Anme EOF ``` -1. Den Zugriff auf das Repository testen: +1. Testen des Zugriffs auf das Repository: ```bash rclone lsd s3-resticrepo:databucket @@ -117,32 +118,32 @@ Da ein Angreifer auf einem kompromittierten System immer Zugriff auf die S3-Anme 0 2021-11-21 20:02:10 -1 snapshots ``` -### Den Appserver konfigurieren +### Konfiguration des Appservers -1. Ein SSH-Schlüsselpaar auf `appsrv` mit dem Benutzer generieren, mit dem Sie das Backup durchführen: +1. Generieren eines SSH-Schlüsselpaars auf `appsrv` mit dem Benutzer, mit dem das Backup durchgeführt wird: ```bash ssh-keygen -o -a 256 -t ed25519 -C "$(hostname)-$(date +'%d-%m-%Y')" ``` -1. Die Umgebungsvariablen für restic setzen: +1. Setzen der Umgebungsvariablen für restic: ```bash export RESTIC_PASSWORD="MyV3ryS3cUr3r3571cP4ssW0rd" export RESTIC_REPOSITORY=rclone:s3-resticrepo:databucket ``` -### Den SSH-Schlüssel auf restic-only Befehle beschränken +### Beschränkung des SSH-Schlüssels auf restic-only Befehle -Der letzte Schritt ist nun die SSH-Datei `authorized_keys` auf dem `rclonesrv` zu bearbeiten, um den neu generierten SSH-Schlüssel auf einen einzigen Befehl zu beschränken. Auf diese Weise kann ein Angreifer das SSH-Schlüsselpaar nicht verwenden, um beliebige Befehle auf dem rclone-Proxy auszuführen und die Backups zu kompromittieren. +Als letzter Schritt wird nun die SSH-Datei `authorized_keys` auf dem `rclonesrv` bearbeitet, um den neu generierten SSH-Schlüssel auf einen einzigen Befehl zu beschränken. Auf diese Weise kann ein Angreifer das SSH-Schlüsselpaar nicht verwenden, um beliebige Befehle auf dem rclone-Proxy auszuführen und die Backups zu kompromittieren. ```bash vi ~/.ssh/authorized_keys -# Fügen Sie inen Eintrag mit dem öffentlichen Schlüssel des restic-Benutzers hinzu, der in dem obigen Schritt generiert wurde: +# Fügen Sie einen Eintrag mit dem öffentlichen Schlüssel des restic-Benutzers hinzu, der in dem obigen Schritt generiert wurde: command="rclone serve restic --stdio --append-only s3-resticrepo:databucket" ssh-ed25519 AAAAC3fdsC1lZddsDNTE5ADsaDgfTwNtWmwiocdT9q4hxcss6tGDfgGTdiNN0z7zN appsrv-18-11-2021 ``` -## restic mit dem rclone Proxy verwenden +## Verwendung von restic mit dem rclone Proxy Wenn die Umgebungsvariablen gesetzt sind, sollte restic jetzt von dem `appsrv` aus funktionieren. @@ -152,13 +153,13 @@ Beispiel: Sicherung von `/srv/myapp`: restic -o rclone.program="ssh rcloneproxy@rclonesrv.mydomain.com" backup /srv/myapp ``` -Snapshots auflisten: +Auflisten der Snapshots: ```bash restic -o rclone.program="ssh rcloneproxy@rclonesrv.mydomain.com" snapshots ``` -Snapshots löschen: +Löschen der Snapshots: ```bash restic -o rclone.program="ssh rcloneproxy@rclonesrv.mydomain.com" forget 2738e969 @@ -166,24 +167,22 @@ repository b71c391e opened successfully, password is correct Remove() returned error, retrying after 446.577749ms: blob not removed, server response: 403 Forbidden (403) ``` -Ah, das geht nicht. Das war ja unser Ziel! +Das ergibt einen Fehler, was auch unser Ziel war. ## Zusammenfassung -Auf dieser Art und Weise, - -* der rclone-Proxy auf dem `rclonerv` läuft nicht einmal als Dienst. Es wird nur bei Bedarf für die Dauer der Restic-Operation gestartet. Die Kommunikation erfolgt über HTTP2 über stdin/stdout in einem verschlüsselten SSH-Tunnel. +* Der rclone-Proxy auf dem `rclonerv` läuft nicht einmal als Dienst. Er wird nur bei Bedarf für die Dauer der Restic-Operation gestartet. Die Kommunikation erfolgt über HTTP2 über `stdin/stdout` in einem verschlüsselten SSH-Tunnel. * Da rclone mit `--append-only` läuft, ist es nicht möglich, Snapshots im S3-Bucket zu löschen (oder zu überschreiben). * Alle Daten (außer Zugangsdaten) werden lokal verschlüsselt/entschlüsselt und dann über `rclonesrv` an/von S3 gesendet/empfangen. * Alle Zugangsdaten werden **nur** auf `rclonesrv` gespeichert, um mit S3 zu kommunizieren. -Da der Befehl in der SSH-Konfiguration für den SSH-Schlüssel des Benutzers fest eingetragen ist, gibt es keine Möglichkeit, den Schlüssel zu verwenden, um Zugriff auf den rclone-Proxy zu erhalten. +Da der Befehl in der SSH-Konfiguration für den SSH-Schlüssel des Benutzers fest eingetragen ist, kann der Schlüssel nicht verwendet werden, um Zugriff auf den rclone-Proxy zu erhalten. ## Noch ein paar Gedanken -Die Vorteile der Lösung sind wahrscheinlich schon klar. Im Weiteren, +Die Vorteile der Lösung liegen auf der Hand. Hier noch ein paar weitere Gedanken dazu: -* die Verwaltung von Snapshots (sowohl manuell als auch mit einer Aufbewahrungsrichtlinie) ist nur noch auf dem rclone-Proxy möglich. +* Die Verwaltung von Snapshots (sowohl manuell als auch mit einer Aufbewahrungsrichtlinie) ist nur noch auf dem rclone-Proxy möglich. * Eine einzelne rclone-Proxy-VM (oder sogar ein Docker-Container auf einer isolierten VM) kann mehrere Backup-Clients bedienen. -* Es ist sehr empfohlen, für jeden Server, der Daten sichert, einen eigenen Schlüssel zu verwenden. -* Wenn Sie mehr als ein Repository aus einem Node verwenden möchten, benötigen Sie dafür neue SSH-Schlüssel. Sie können dann mit `-i ~/.ssh/id_ed25519_another_repo` in den `rclone.program`-Argumenten genau wie bei SSH angeben, welcher Schlüssel verwendet werden soll. +* Es wird empfohlen, für jeden Server, der Daten sichert, einen eigenen Schlüssel zu verwenden. +* Wenn mehr als ein Repository aus einem Node verwendet werden soll, werden dafür neue SSH-Schlüssel benötigt. Mit `-i ~/.ssh/id_ed25519_another_repo` kann in den `rclone.program`-Argumenten genauso wie bei SSH angegeben werden, welcher Schlüssel verwendet werden soll. diff --git a/docs/_optimist/storage/s3_documentation/backupwithrestic/index.en.md b/docs/_optimist/storage/s3_documentation/backupwithrestic/index.en.md index 99bafc93a..b7add5d86 100644 --- a/docs/_optimist/storage/s3_documentation/backupwithrestic/index.en.md +++ b/docs/_optimist/storage/s3_documentation/backupwithrestic/index.en.md @@ -1,5 +1,5 @@ --- -title: Secure Backups with Restic and Rclone +title: Secure backups with restic and rclone lang: en permalink: /optimist/storage/s3_documentation/backupwithrestic/ nav_order: 3170 @@ -13,9 +13,9 @@ Restic is a very simple and powerful file-level backup solution, which is rapidl When performing file-level backups of a node into S3, the backup software needs write permissions for the S3 bucket. -But if an attacker gains access to the machine, he can also destroy the backups in the bucket, since the S3 credentials are present on the compromised system. +But if attackers gain access to the machine, they can also destroy the backups in the bucket, since the S3 credentials are present on the compromised system. -The solution can be as simple as limiting the level of access of the backup software to the bucket. Unfortunately, this isn't trivial with S3. +The solution can be as simple as limiting the level of access of the backup software to the bucket. Unfortunately, this is not trivial with S3. ## Background @@ -24,7 +24,7 @@ The solution can be as simple as limiting the level of access of the backup soft * READ - Allows grantee to list the objects in the bucket * WRITE - Allows grantee to create, overwrite, and delete any object in the bucket -The limitations of ACLs were addressed by the access policy permissions (ACP). We can attach a no-delete policy to the bucket, e.g. +The limitations of ACLs were addressed by the access policy permissions (ACP). We can attach a no-delete policy to the bucket, for example: ```json { @@ -48,7 +48,7 @@ The limitations of ACLs were addressed by the access policy permissions (ACP). W } ``` -Unfortunately, the S3 protocol itself wasn't designed with the concept of WORM (write once read many) backups in mind. Access policy permissions do not differentiate between changing an existing object (which would effectively allow deleting it) and creating a new object. +Unfortunately, the S3 protocol itself was not designed with the concept of WORM (write once read many) backups in mind. Access policy permissions do not differentiate between changing an existing object (which would effectively allow deleting it) and creating a new object. Attaching the above policy on a bucket does not prevent the objects in it from being overwritten. @@ -66,29 +66,29 @@ upload: 'testfile' -> 's3://appendonly-bucket/testfile' [1 of 1] ## Proposed solution -Since an attacker on a compromised system will always have access to the S3 credentials and every service running on the system - including restic itself, proxies, etc. - we need a second, locked-down VM which can restrict delete operations. Restic can be integrated perfectly with rclone, so we'll use it in this example. +Since an attacker on a compromised system will always have access to the S3 credentials and every service running on the system - including restic itself, proxies, etc. - we need a second, locked-down VM which can restrict delete operations. Restic can be integrated perfectly with rclone, so we will use it in this example. -### Our environment +### Our Environment * `appsrv`: the system which has access to the files we would like to backup * `rclonesrv`: the system running the rclone proxy (and nothing else, to minimise the attack surface) ### Set up the rclone proxy -1. Install rclone on the `rclonesrv` +1. Install rclone on the `rclonesrv`: ```bash sudo apt install rclone ``` -1. Create user for rclone +1. Create user for rclone: ```bash sudo useradd -m rcloneproxy sudo su - rcloneproxy ``` -1. Create rclone backend configuration +1. Create rclone backend configuration: ```bash mkdir -p .config/rclone @@ -119,7 +119,7 @@ Since an attacker on a compromised system will always have access to the S3 cred ### Configure the appserver -1. Generate an SSH-Keypair on `appsrv` with the user you're performing the backup with: +1. Generate an SSH-Keypair on `appsrv` with the user you are performing the backup with: ```bash ssh-keygen -o -a 256 -t ed25519 -C "$(hostname)-$(date +'%d-%m-%Y')" @@ -166,24 +166,24 @@ repository b71c391e opened successfully, password is correct Remove() returned error, retrying after 446.577749ms: blob not removed, server response: 403 Forbidden (403) ``` -Oh, right, that doesn't work. That was our goal! +Right, that does not work. That was our goal. ## Summary -This way, +This way: -* The rclone proxy doesn't even run on the `rclonesrv` as a service. It will just be spawned on demand, for the duration of the restic operation. Communication happens over HTTP2 over stdin/stdout, in an encrypted SSH tunnel. +* The rclone proxy does not even run on the `rclonesrv` as a service. It will just be spawned on demand, for the duration of the restic operation. Communication happens over HTTP2 over stdin/stdout, in an encrypted SSH tunnel. * Since rclone is running with `--append-only`, it is not possible to delete (or overwrite) snapshots in the S3 bucket. * All data (except credentials) is encrypted/decrypted locally, then sent/received via `rclonesrv` to/from S3. * All the credentials are **only** stored on `rclonesrv` to communicate with S3. -Since the command is hard-coded into the SSH configuration for the user's SSH key, there is no way to use the the keys to get access to the rclone proxy. +Since the command is hard-coded into the SSH configuration for the user's SSH key, there is no way to use the keys to get access to the rclone proxy. ## Some more thoughts -The advantages of this construct are probably clear already by now. Furthermore, +The advantages of this construct are probably clear already by now. Furthermore: * Managing snapshots (both manually and with a retention policy) is only possible on the rclone proxy. * A single rclone proxy VM (or even a docker container on an isolated VM) can serve multiple backup clients. * It is highly recommended to use one key for every server which backs up data. -* If you'd like to use more than one repository out of a node, you'll need new SSH keys for them. You can then specify which key to use with `-i ~/.ssh/id_ed25519_another_repo` in the `rclone.program` arguments just like you would with SSH. +* If you like to use more than one repository out of a node, you need new SSH keys for them. You can then specify which key to use with `-i ~/.ssh/id_ed25519_another_repo` in the `rclone.program` arguments just like you would with SSH. diff --git a/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.de.md b/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.de.md index bf76bb3ed..480319834 100644 --- a/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.de.md +++ b/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.de.md @@ -17,21 +17,21 @@ grand_parent: Storage - [Cyberduck](#cyberduck) - [Boto3](#boto3) -Zum Hochladen Ihrer Daten wie zum Beispiel (Dokumente, Fotos, Videos, usw.) ist es zunächst notwendig einen Bucket zu erstellen. Dieser dient als eine Art Ordner. +Zum Hochladen Ihrer Daten (z.B. Dokumente, Fotos, Videos, usw.) muss zunächst ein Bucket erstellt werden. Dieser dient als eine Art Ordner. -Aufgrund der Funktionsweise unseres Objects-Storages ist es notwendig einen global eindeutigen Namen für Ihren Bucket zu verwenden. +Aufgrund der Funktionsweise unseres Objects-Storages muss ein global eindeutiger Namen für den Bucket verwendet werden. Sollte bereits ein Bucket mit dem gewählten Namen existieren, kann der Name erst verwendet werden, wenn der bereits existierende Bucket gelöscht wurde. -Sollte der gewünschte Name bereits von einem weiteren Kunden in Benutzung sein müssen sie einen anderen Namen wählen. +Wird der gewünschte Name bereits von einem anderen Kunden benutzt, muss ein anderer Name vergeben werden. -Es empfiehlt sich, Namen der Form "inhaltsbeschreibung.bucket.meine-domain.tld" oder vergleichbares zu verwenden. +Es empfiehlt sich, Namen der Form `inhaltsbeschreibung.bucket.meine-domain.tld` oder Vergleichbares zu verwenden. ## S3cmd -### Bucket erstellen +### Erstellen des Buckets -Um einen Bucket zu erstellen, nutzt man folgenden Befehl: +Nutzen Sie den folgenden Befehl, um den Bucket zu erstellen: ```bash s3cmd mb s3://NameDesBuckets @@ -44,9 +44,9 @@ $ s3cmd mb s3://iNNOVO-Test Bucket 's3://iNNOVO-Test/' created ``` -### Bucket löschen +### Löschen des Buckets -Um einen Bucket zu löschen, nutzt man folgenden Befehl: +Nutzen Sie den folgenden Befehl, um den Bucket zu löschen: ```bash s3cmd rb s3://NameDesBuckets @@ -61,62 +61,62 @@ Bucket 's3://iNNOVO-Test/' removed ## S3Browser -### Bucket erstellen +### Erstellen des Buckets -Nach dem Öffnen von S3Browser, klicken wir oben links auf "New bucket"(1), in dem sich öffnenden Fenster vergeben wir unter "Bucket name"(2) den Namen des Buckets und klicken dann auf "Create new bucket"(3). +Nach dem Öffnen von S3 Browser, klicken Sie oben links auf *New bucket* (1). Vergeben Sie in dem sich öffnenden Fenster unter *Bucket name*(2) den Namen des Buckets und klicken auf *Create new bucket* (3). ![](attachments/CreateAndDeleteBucket1.png) -### Bucket löschen +### Löschen des Buckets -Zuerst wird der zu löschende Bucket markiert(1) und danch oben links auf "Delete bucket" geklickt. +Markieren Sie den zu löschenden Bucket (1) und klicken Sie danach oben links auf *Delete bucket*. ![](attachments/CreateAndDeleteBucket2.png) -Im sich nun öffnenden Fenster, bestätigen mit dem markieren der Checkbox(1), dass die Datei gelöscht werden soll und klicken dann auf "Delete Bucket"(2). +Markieren Sie im sich öffnenden Fenster die Checkbox (1) zum Bestätigen des Löschens. Klicken Sie anschließend auf *Delete Bucket* (2). ![](attachments/CreateAndDeleteBucket3.png) ## Cyberduck -### Bucket erstellen +### Erstellen des Buckets -Nach dem Öffnen von Cyberduck, klicken wir oben in der Mitte auf "Aktion"(1) und auf "Neuer Ordner"(2) +Nach dem Öffnen von Cyberduck, klicken Sie oben in der Mitte auf *Aktion* (1) und auf *Neuer Ordner* (2): ![](attachments/CreateAndDeleteBucket4.png) -Danach öffnet sich das folgende Fenster, hier können wir den Namen(1) festlegen und bestätigen dies im Anschluß mit "Anlegen"(2): + Legen Sie in dem sich öffnenden Fenster den Namen (1) fest und bestätigen Sie ihn mit *Anlegen* (2): ![](attachments/CreateAndDeleteBucket5.png) -### Bucket löschen +### Löschen des Buckets -Um einen Bucket zu löschen, wird dieser mit einem linken Mausklick makiert. Gelöscht wird der Bucket dann über "Aktion"(1) und "Löschen"(2). +Um einen Bucket zu löschen, markieren Sie diesen mit einem linken Mausklick. Löschen Sie dann den Bucket mit *Aktion* (1) und *Löschen* (2). ![](attachments/CreateAndDeleteBucket6.png) -Die Bestätigung erfolgt dann über das erneute klicken auf "Löschen"(1) +Bestätigen Sie die Löschung, indem Sie erneut auf *Löschen* (1) klicken. ![](attachments/CreateAndDeleteBucket7.png) ## Boto3 -Bei boto3 brauchen wir zunächst die S3 Kennung, damit ein Script nutzbar ist. Für Details: [S3 Kennung erstellen und einlesen #boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3) +Bei boto3 brauchen Sie zunächst die S3 Kennung, damit ein Script nutzbar ist. Details finden Sie unter: [S3 Kennung erstellen und einlesen #boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3). -### Bucket erstellen +### Erstellen des Buckets -Um nun einen Bucket zu erstellen, müssen wir einen Clienten nutzen und den Bucket dann erstellen. +Um einen Bucket zu erstellen, müssen Sie einen Client nutzen und dann den Bucket erstellen. Eine Option sieht so aus: ```bash -## Erstellung eines S3 Clienten +## Erstellung eines S3 Client s3 = boto3.client('s3') ## Erstellung des Buckets s3.create_bucket(Bucket='iNNOVO-Test') ``` -Ein komplettes Script für boto 3 inkl. Authentifizierung kann so aussehen: +Ein komplettes Script für boto 3 einschließlich Authentifizierung kann so aussehen: ```python #!/usr/bin/env/python @@ -132,21 +132,20 @@ s3 = boto3.resource('s3', aws_secret_access_key='bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', ) -## Erstellung eines S3 Clienten +## Erstellen eines S3 Clienten s3 = boto3.client('s3') -## Erstellung des Buckets +## Erstellen des Buckets s3.create_bucket(Bucket='iNNOVO-Test') ``` -### Bucket löschen +### Löschen des Buckets -Wie bei der Erstellung des Buckets, wird zunächst ein Client benötigt um dann den Bucket zu löschen. -Um nun einen Bucket zu erstellen, müssen wir einen Clienten nutzen und den Bucket dann erstellen. +Um einen Bucket zu löschen, wird wie bei der Erstellung zuerst ein Client benötigt und dann der Bucket gelöscht. Eine Option sieht so aus: ```bash -## Erstellung eines S3 Clienten +## Erstellen eines S3 Clienten s3 = boto3.client('s3') ## Löschen eines Buckets @@ -169,9 +168,9 @@ s3 = boto3.resource('s3', aws_secret_access_key='6229490344a445f2aa59cdc0e53add88', ) -## Erstellung eines S3 Clienten +## Erstellen eines S3 Clienten s3 = boto3.client('s3') -## Erstellung des Buckets +## Erstellen des Buckets s3.delete_bucket(Bucket='iNNOVO-Test') ``` diff --git a/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.en.md b/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.en.md index ce09b5594..20fa0014c 100644 --- a/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.en.md +++ b/docs/_optimist/storage/s3_documentation/createanddeletebucket/index.en.md @@ -16,7 +16,7 @@ grand_parent: Storage - [Cyberduck](#cyberduck) - [Boto3](#boto3) -To upload your data (documents, photos, videos, etc.) it is necessary to create a bucket, which is similar to a folder. First create an S3 bucket and then you can upload as many objects as required into the bucket. +To upload your data (documents, photos, videos, and so on) you need to create a bucket, which is similar to a folder. First create an S3 bucket and then you can upload as many objects as required into the bucket. Due to the way our object storage works, it is necessary to use a globally unique name for your bucket. @@ -62,17 +62,17 @@ Bucket 's3://iNNOVO-Test/' removed ### Create a bucket -After opening S3Browser, we click on "New bucket"(1) in the upper left corner, in the newly opened window, we assign the name of the bucket via "Bucket name"(2) and then click on "Create new bucket"(3). +After opening S3 Browser, click on *New bucket* (1) in the upper left corner. In the newly opened window, assign the name of the bucket with *Bucket name* (2) and then click on *Create new bucket* (3). ![](attachments/CreateAndDeleteBucket1.png) ### Delete a bucket -First select the bucket you want to delete(1) and then click on "Delete bucket"(2) in the upper left corner. +First select the bucket you want to delete (1) and then click on *Delete bucket* (2) in the upper left corner. ![](attachments/CreateAndDeleteBucket2.png) -In the window that opens, confirm that you want to delete the file by checking the checkbox(1) and then click on "Delete Bucket"(2). +In the window that opens, confirm that you want to delete the file by checking the checkbox (1) and then click on *Delete Bucket* (2). ![](attachments/CreateAndDeleteBucket3.png) @@ -80,31 +80,31 @@ In the window that opens, confirm that you want to delete the file by checking t ### Create a bucket -After opening Cyberduck, we click on "Action"(1) and on "New folder"(2) in the middle of the top. +After opening Cyberduck, click on *Action* (1) and on *New folder* (2) in the middle of the top. ![](attachments/CreateAndDeleteBucket4.png) -A new window opens, here we can define the name(1) and confirm this with "Create"(2): +A new window opens. Here you can define the name (1) and confirm this with *Create* (2): ![](attachments/CreateAndDeleteBucket5.png) ### Delete a bucket -To delete a bucket, select it with a left mouse click. The bucket is then deleted via "Action"(1) and "Delete"(2). +To delete a bucket, select it with a left mouse click. Then delete the bucket with *Action* (1) and *Delete* (2). ![](attachments/CreateAndDeleteBucket6.png) -Confirm the action by clicking on "Delete"(1) once again. +Confirm the action by clicking on *Delete* (1) once again. ![](attachments/CreateAndDeleteBucket7.png) ## Boto3 -In Boto3 we first need the S3 identifier so that a script can be used. For details see: [Create and use S3 credentials #Boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3) +In Boto3 you first need the S3 identifier so that a script can be used. For details see: [Create and use S3 credentials #Boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3) ### Create a bucket -To create a bucket, we first need a client for it and we will then create the bucket afterwards. +To create a bucket, you first need a client for it and you will then create the bucket afterwards. One option looks like this: ```bash @@ -140,7 +140,7 @@ s3.create_bucket(Bucket='iNNOVO-Test') ### Delete a bucket -As before, we first need a client to delete the bucket. +As before, you first need a client to delete the bucket. One option looks like this: ```python diff --git a/docs/_optimist/storage/s3_documentation/createanduses3credentials/index.de.md b/docs/_optimist/storage/s3_documentation/createanduses3credentials/index.de.md index aa6b91b69..b9938c5ad 100644 --- a/docs/_optimist/storage/s3_documentation/createanduses3credentials/index.de.md +++ b/docs/_optimist/storage/s3_documentation/createanduses3credentials/index.de.md @@ -11,19 +11,19 @@ grand_parent: Storage ## Inhalt: -- [Credentials erstellen](#credentials-erstellen) +- [Erstellen der Credentials](#credentials-erstellen) - [S3cmd](#s3cmd) - - [S3Browser](#s3browser) + - [S3 Browser](#s3browser) - [Cyberduck](#cyberduck) - [Boto3](#boto3) -- [Credentials anzeigen](#credentials-anzeigen) -- [Credentials löschen](#credentials-löschen) +- [Anzeigen der Credentials](#credentials-anzeigen) +- [Löschen der Credentials](#credentials-löschen) -## Credentials erstellen +## Erstellen der Credentials -Damit wir auf den Object Storage zugreifen können, benötigen wir zunächst Login Daten(Credentials). -Um diese Daten per OpenStackAPI erzeugen zu können, benötigen wir den OpenStackClient und führen dort folgenden Befehl aus: +Damit Sie auf den Object Storage zugreifen können, benötigen Sie zunächst die Login Daten (Credentials). +Um diese Daten mit OpenStackAPI erzeugen zu können, benötigen Sie den OpenStackClient. Führen Sie dort den folgenden Befehl aus: `$ openstack ec2 credentials create` @@ -45,24 +45,29 @@ $ openstack ec2 credentials create +------------+-----------------------------------------------------------------+ ``` -Nachdem die Zugangsdaten (Credentials) vorliegen, brauchen wir eine Möglichkeit auf den S3 kompatiblen ObjectStorage zuzugreifen. -Hierfür gibt es die unterschiedliche Möglichkeiten, in der Dokumentation stellen wir hierfür vier Möglichkeiten vor, genauer: [S3cmd](https://s3tools.org/s3cmd) für Linux/Mac, [S3Browser](https://s3browser.com/) für Windows, [Cyberduck](https://cyberduck.io/) und [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html). +Nachdem die Zugangsdaten (Credentials) vorliegen, brauchen Sie eine Möglichkeit, auf den S3 kompatiblen ObjectStorage zugreifen zu können. +Hierfür gibt es verschiedene Optionen. Hier sind vier aufgelistet: + +- [S3cmd](https://s3tools.org/s3cmd) für Linux/Mac +- [S3Browser](https://s3browser.com/) für Windows +- [Cyberduck](https://cyberduck.io/) +- [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) ## Benutzerdaten in die Konfigurationsdatei eintragen ### S3cmd -Um s3cmd zu installieren, brauchen wir einen Paketmanager wie zum Beispiel "pip". Die Installation und Nutzung erklären wir im [Schritt 4: "Der Weg vom Horizon auf die Kommandozeile"](/optimist/guided_tour/step04/) unserer Guided Tour. -Der Befehl für die Installation lautet dann: +Um s3cmd zu installieren, brauchen Sie einen Paketmanager, zum Beispiel *pip*. Die Installation und Nutzung wird in [Schritt 4](/optimist/guided_tour/step04/) der Guided Tour erklärt. +Der Befehl für die Installation lautet: ```bash pip install s3cmd ``` -Nach der erfolgreichen Installation von s3cmd, müssen die vorher erstellten Zugangsdaten (Credentials) in die Konfigurationsdatei von s3cmd eingetragen werden. -Die dafür zuständige Datei ist die ".s3cfg", welche sich standardgemäß im Homeverzeichnis befindet. Sollte diese noch nicht existieren, muss diese vorher erstellt werden. +Nach der erfolgreichen Installation von s3cmd, müssen Sie die vorher erstellten Zugangsdaten (Credentials) in die Konfigurationsdatei von s3cmd eintragen. +Die dafür zuständige Datei `.s3cfg` befindet sich standardmäßig im Homeverzeichnis. Sollte diese noch nicht existieren, müssen Sie diese vorher erstellen. -Folgende Daten tragen wir dann in der .s3cfg ein und speichern diese: +Tragen Sie die folgenden Daten in `.s3cfg` ein und speichern diese: ```bash access_key = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -74,52 +79,54 @@ secret_key = dddddddddddddddddddddddddddddddd use_https = True ``` -### S3Browser +### S3 Browser -Für den S3Browser genügt es, diese [heruterzuladen](https://s3browser.com/) und zu installieren. -Nach der erfolgreichen Installation, gilt es nun die entsprechenden Daten zu hinterlegen. -Hierfür öffnen wir den S3Browser und es öffnet sich beim ersten Starten automatisch folgendes Fenster: +Für den S3 Browser genügt es, diesen [herunterzuladen](https://s3browser.com/) und zu installieren. +Nach der erfolgreichen Installation müssen Sie die entsprechenden Daten hinterlegen. +Öffnen Sie hierfür den S3 Browser. Beim ersten Starten öffnet sich automatisch das folgende Fenster: ![](attachments/CreateAndUseS3Credentials_S3Browser.png) -Dort tragen wir nun folgende Werte ein und klicken auf "Add new account" +Tragen Sie die folgenden Werte ein: ```text * Account Name: Frei wählbarer Name für den Account * Account Type: S3 Compatible Storage * REST Endpoint: s3.es1.fra.optimist.innovo.cloud * Signature Version: Signature V2 -* Access Key ID: Den entsprechenden Access Key (Im Beispiel: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) -* Secret Access Key: Das entsprechende Secret (Im Beispiel: dddddddddddddddddddddddddddddddd) +* Access Key ID: Den entsprechenden Access Key (im Beispiel: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) +* Secret Access Key: Das entsprechende Secret (im Beispiel: dddddddddddddddddddddddddddddddd) ``` +Klicken Sie auf *Add new account*. + ### Cyberduck -Um Cyberduck zu nutzen, ist es notwendig diese [herunterzuladen](https://cyberduck.io/). -Nach der Installation und dem ersten öffnen, ist es notwendig auf "Neue Verbindung" zu klicken. (1) -Danach öffnet sich ein neues Fenster in dem im Dropdown Menü(2) "Amazon S3" ausgewählt wird und danach werden folgende Daten benötigt: +Um Cyberduck nutzen zu können, müssen Sie diesen installieren. Sie können ihn [hier](https://cyberduck.io/) herunterladen. +Nach der Installation und dem ersten Öffnen, klicken Sie auf *Neue Verbindung* (1). +Danach öffnet sich ein neues Fenster. Wählen Sie im Dropdown Menü *Amazon S3* (2) aus und geben Sie die folgenden Daten ein: - Server(3): s3.es1.fra.optimist.innovo.cloud -- Access Key ID(4): Den entsprechenden Access Key (Im Beispiel: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) -- Secret Access Key(5): Das entsprechende Secret (Im Beispiel: dddddddddddddddddddddddddddddddd) +- Access Key ID(4): Den entsprechenden Access Key (im Beispiel: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) +- Secret Access Key(5): Das entsprechende Secret (im Beispiel: dddddddddddddddddddddddddddddddd) ![](attachments/CreateAndUseS3Crendentials_Cyberduck.png) -Um nun eine Verbindung herzustellen, wird als letzter Schritt auf "Verbinden" geklickt. +Um eine Verbindung herzustellen, klicken Sie im letzten Schritt auf *Verbinden*. ### Boto3 -Um Boto3 nutzen zu können, wird ein Paketmanager wie zum Beispiel "pip" benötigt. Die Installation und Nutzung wird im [Schritt 4: "Der Weg vom Horizon auf die Kommandozeile"](/optimist/guided_tour/step04/) unserer Guided Tour erklärt. -Der Befehl für die Installation lautet dann: +Um Boto3 nutzen zu können, benötigen Sie einen Paketmanager, zum Beispiel *pip*. Die Installation und Nutzung wird in [Schritt 4](/optimist/guided_tour/step04/) der Guided Tour erklärt. +Der Befehl für die Installation lautet: ```bash pip install boto3 ``` -Nach der erfolgreichen Installation von boto3 ist es nun nutzbar. +Nach der erfolgreichen Installation von boto3 können Sie das Tool nun nutzen. Wichtig ist, dass bei boto3 ein Script erstellt wird, welches am Ende ausgeführt wird. -Daher ist der Konfigurationsteil der im Anschluss gezeigt wird, später immer Teil der weiterführenden Scripte. -Hierfür erstellen wir eine Python-Datei wie z.B. "Beispiel.py" und fügen dort folgenden Inhalt ein: +Daher ist der Konfigurationsteil, der im Anschluss gezeigt wird, später immer Teil der weiterführenden Scripte. +Hierfür erstellen Sie eine Python-Datei, z.B. "Beispiel.py" und fügen dort den folgenden Inhalt ein: - endpoint_url: s3.es1.fra.optimist.innovo.cloud - aws_access_key_id: Den entsprechenden Access Key (Im Beispiel: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) @@ -140,13 +147,13 @@ s3 = boto3.resource('s3', Dies dient als Startpunkt und wird in den folgenden Skripten referenziert und verwendet. -## Credentials anzeigen +## Anzeigen der Credentials -Um erstellte Object Storage EC2-Credentials anzuzeigen benötigen wir den OpenstackClient und führen dort folgenden Befehl aus: +Um erstellte Object Storage EC2-Credentials anzuzeigen, benötigen Sie den OpenstackClient. Führen Sie dort den folgenden Befehl aus: `$ openstack ec2 credentials list` -Der Befehl erstellt uns eine Liste mit allen EC2 Credentials, die für den aktuellen Nutzer sichtbar sind. +Der Befehl erstellt eine Liste mit allen EC2 Credentials, die für den aktuellen Nutzer sichtbar sind. ```bash $ openstack ec2 credentials list @@ -159,8 +166,8 @@ $ openstack ec2 credentials list +----------------------------------+----------------------------------+----------------------------------+----------------------------------+ ``` -## Credentials löschen +## Löschen der Credentials -Um vorhandene Object Storage EC2-Credentials zu löschen benötigen wir den OpenstackClient und führen dort folgenden Befehl aus: +Um vorhandene Object Storage EC2-Credentials zu löschen, benötigen Sie den OpenstackClient. Führen Sie dort den folgenden Befehl aus: `$ openstack ec2 credentials delete ` diff --git a/docs/_optimist/storage/s3_documentation/index.de.md b/docs/_optimist/storage/s3_documentation/index.de.md index d04afece3..9e77fdcd5 100644 --- a/docs/_optimist/storage/s3_documentation/index.de.md +++ b/docs/_optimist/storage/s3_documentation/index.de.md @@ -1,5 +1,5 @@ --- -title: S3 Kompatiblen Objekt Storage +title: S3 Kompatibler Object Storage lang: de permalink: /optimist/storage/s3_documentation/ nav_order: 3100 @@ -7,24 +7,21 @@ parent: Storage has_children: true --- -Einführung in den S3 Kompatiblen Objekt Storage -================================================= +# S3 Kompatibler Objekt Storage -Was genau ist Object Storage? ------ +## Was ist ein Object Storage? -Object Storage ist eine alternative zum klassischen Block Storage. Dabei werden die einzelnen Daten nicht einzelnen Blöcken auf einem Gerät zugeordnet, sondern als binäre Objekte innerhalb eines Storage Clusters gespeichert. Die notwendigen Metadaten werden in einer separaten DB gespeichert. Der Storage Cluster besteht dabei aus mehreren einzelnen Servern (Nodes), die wiederum mehrere Storage Devices verbaut haben. Bei den Storage Devices haben wir einen mix aus klassischen HDDs, SSDs und modernen NVMe Lösungen. Auf welchem Gerät letztendlich ein Object landet, wird durch den CRUSH Algorithmus entschieden, der beim Object Storage serverseitig implementiert ist. +Der Object Storage ist eine Alternative zum klassischen Block Storage. Dabei werden die einzelnen Daten nicht einzelnen Blöcken auf einem Gerät zugeordnet, sondern als binäre Objekte innerhalb eines Storage Clusters gespeichert. Die notwendigen Metadaten werden in einer separaten DB gespeichert. Der Storage Cluster besteht aus mehreren einzelnen Servern (Nodes), die wiederum mehrere Storage Devices verbaut haben. Bei den Storage Devices haben wir einen Mix aus klassischen HDDs, SSDs und modernen NVMe Lösungen. Auf welchem Gerät letztendlich ein Object gespeichert wird, wird durch den CRUSH Algorithmus entschieden, der beim Object Storage serverseitig implementiert ist. -Wie kann ich darauf zugreifen? ------ +## Wie kann ich darauf zugreifen? -Der Zugriff auf diese Art von Storage erfolgt ausschließlich über HTTPS Zugriffe. Dafür stellen wir einen hochverfügbaren Endpunkt zur Verfügung, über den die einzelnen Operationen ausgeführt werden können. +Der Zugriff auf diese Art von Storage erfolgt ausschließlich über HTTPS. Dafür stellen wir einen hochverfügbaren Endpunkt zur Verfügung, über den die einzelnen Operationen ausgeführt werden können. Dabei unterstützen wir zwei unabhängige Protokolle: - S3 - Swift -S3 ist ein von Amazon ins leben gerufene Protokoll, um mit dieser Art von Daten arbeiten zu können. Swift ist das Protokoll, welches vom gleichnamigen OpenStack Service bereitgestellt wird. Unabhängig davon, welches Protokoll man nutzt, hat man immer Zugriff auf seine gesamten Daten. Man kann also beide Protokolle in Kombination nutzen. Es gibt für alle gängigen Plattformen Tools, um mit den Daten im Object Storage arbeiten zu können: +S3 ist ein Protokoll von Amazon, das entwickelt wurde, um mit dieser Art von Daten arbeiten zu können. Swift ist das Protokoll, das vom gleichnamigen OpenStack Service bereitgestellt wird. Unabhängig davon, welches Protokoll genutzt wird: Die Benutzer haben immer Zugriff auf ihre gesamten Daten und können beide Protokolle in Kombination nutzen. Es gibt für alle gängigen Plattformen Tools, um mit den Daten im Object Storage arbeiten zu können: - Windows: s3Browser, Cyberduck - MacOS: s3cmd, Cyberduck @@ -32,22 +29,20 @@ S3 ist ein von Amazon ins leben gerufene Protokoll, um mit dieser Art von Daten Darüberhinaus gibt es Integrationen in allen gängigen Programmiersprachen. -Wie sicher sind meine Daten? ------ +## Wie sicher sind meine Daten? Basis für den Object Storage ist unsere zugrunde liegende Openstack Cloud Plattform mit dem verteilten Ceph Storage Cluster. Die Objekte werden serverseitig über mehrere Storage Devices hinweg verteilt und repliziert. -Dabei sorgt Ceph für die Sicherstellung von Replikation und Integrität der Datensätze. Fällt ein Server oder eine Festplatte aus, werden die betroffenen Datensätze auf verfügbare Server repliziert und das gewünschte Replikationslevel automatisch wiederhergestellt. +Dabei sorgt Ceph für die Sicherstellung von Replikation und Integrität der Datensätze. Fällt ein Server oder eine Festplatte aus, werden die betroffenen Datensätze auf verfügbare Server repliziert und das gewünschte Replikationslevel wird automatisch wiederhergestellt. -Darüberhinaus werden die Daten in ein weiteres RZ auf einen weiteren dedizierten Storage Cluster gespiegelt und können von dort im K-Fall weitergenutzt werden. +Darüberhinaus werden die Daten in ein weiteres Rechenzentrum auf einen weiteren dedizierten Storage Cluster gespiegelt und können von dort im K-Fall weitergenutzt werden. -Vorteile im Überblick ------ +## Vorteile -- Bereitstellung per API: Die HTTPS-Schnittstelle ist sowohl kompatibel zur Amazon S3 API, also auch zur OpenStack Swift API. -- unterstützt alle gängigen Betriebssysteme und Programmiersprachen. -- Volle Skalierbarkeit - Der Storage kann dynamisch genutzt werden. -- Höchste Ausfallsicherheit dank integrierter Replikation und Spiegelung über 2 unabhängige Rechenzentren. -- Zugriff ist nahezu von jedem internetfähigen Gerät aus möglich - Somit eine super alternative zu NFS und Co. -- PAYG Abrechnung nach genutztem Monatsdurchschnitt. -- Transparente Abrechnung und somit gute Planbarkeit - Keine extra Traffic Kosten oder Kosten für Zugriffe auf die Daten. -- Automatisierte Verwaltung der Objekte in Buckets mit s3 Lifecycle Policies möglich. +- Bereitstellung per API - die HTTPS-Schnittstelle ist sowohl kompatibel zur Amazon S3 API als auch zur OpenStack Swift API +- Unterstützt alle gängigen Betriebssysteme und Programmiersprachen +- Volle Skalierbarkeit - der Storage kann dynamisch genutzt werden +- Höchste Ausfallsicherheit dank integrierter Replikation und Spiegelung über 2 unabhängige Rechenzentren +- Zugriff ist nahezu von jedem internetfähigen Gerät aus möglich und ist somit eine sehr gute Alternative zu NFS und Co +- PAYG Abrechnung nach genutztem Monatsdurchschnitt +- Transparente Abrechnung und somit gute Planbarkeit - keine extra Traffic Kosten oder Kosten für Datenzugriffe +- Automatisierte Verwaltung der Objekte in Buckets mit S3 Lifecycle Policies möglich diff --git a/docs/_optimist/storage/s3_documentation/index.en.md b/docs/_optimist/storage/s3_documentation/index.en.md index 96566191c..44b5b9cd2 100644 --- a/docs/_optimist/storage/s3_documentation/index.en.md +++ b/docs/_optimist/storage/s3_documentation/index.en.md @@ -7,20 +7,17 @@ parent: Storage has_children: true --- -S3 Compatible Object Storage Introduction -================================================= +# S3 Compatible Object Storage -What exactly is Object Storage? ------ +## What exactly is Object Storage? -Object storage is an alternative to classic block storage. The individual data is not assigned to individual blocks on a device, but is stored as binary objects within a storage cluster. The necessary metadata is stored in a separate database. +Object storage is an alternative to classic block storage. The individual data is not assigned to individual blocks on a device, but is stored as binary objects within a storage cluster. The required metadata is stored in a separate database. The storage cluster consists of several individual servers (nodes), which in turn have several storage devices installed. With the storage devices, we have a mix of classic HDDs, SSDs, and modern NVMe solutions. The CRUSH algorithm, which is implemented on the server-side of the Object Storage, decides which device an object ultimately lands on. -How can I access it? ------ +## How can You access it? -Access to this type of storage is accomplished exclusively via HTTPS. For this, we provide a highly available endpoint, where the individual operations can be executed. +Access to this type of storage is accomplished exclusively with HTTPS. For this, we provide a highly available endpoint, where you can execute the individual operations. We support two independent protocols: - S3 @@ -36,22 +33,20 @@ There are tools for all common platforms to work with the data in the object sto In addition, there are integrations in all popular programming languages. -How secure is my data? ------ +## How secure is my data? The Object Storage is based on our Openstack Cloud Platform with the distributed Ceph Storage Cluster. The objects are distributed and replicated on the server-side across several storage devices. Ceph ensures the replication and integrity of the data sets. If a server or hard disk fails, the affected data records are replicated to available servers and the desired replication level is automatically restored. In addition, the data is mirrored to another data centre on another dedicated storage cluster and can be used from there in the event of a disaster. -Advantages at a glance ------ +## Advantages at a glance - Deployment via API: The HTTPS interface is compatible with both the Amazon S3 API and the OpenStack Swift API. - Supports all common operating systems and programming languages. -- Full scalability - Storage can be used dynamically. +- Full scalability: Storage can be used dynamically. - Maximum reliability thanks to integrated replication and mirroring via 2 independent data centres. - Access is possible from almost any internet-enabled device - thus a good alternative to NFS and Co. - PAYG billing according to used monthly average. - Transparent billing and therefore good predictability - no extra traffic costs or costs for access to the data. -- Ability to define s3 lifecycle policies to manage the objects inside the buckets. +- Ability to define S3 lifecycle policies to manage the objects inside the buckets. diff --git a/docs/_optimist/storage/s3_documentation/security/index.de.md b/docs/_optimist/storage/s3_documentation/security/index.de.md index 4932eee7a..e10594528 100644 --- a/docs/_optimist/storage/s3_documentation/security/index.de.md +++ b/docs/_optimist/storage/s3_documentation/security/index.de.md @@ -11,23 +11,23 @@ grand_parent: Storage ## Einführung -Diese Seite bietet einen Überblick über die folgenden Themen im Zusammenhang mit S3-Buckets / Swift: +Diese Seite behandelt die folgenden Themen im Zusammenhang mit S3-Buckets/Swift: * Container Access Control Lists (ACLs) * Bucket-Policies -Operationen auf Container-ACLs müssen auf OpenStack-Ebene mit Swift-Befehlen ausgeführt werden, während Bucket-Policies für jeden Bucket innerhalb eines Projekts mit Hilfe der s3cmd-Befehlszeile festgelegt werden müssen. In diesem Dokument werden einige Beispiele für jede Art von Operation beschrieben. +Operationen auf Container-ACLs müssen auf OpenStack-Ebene mit Swift-Befehlen ausgeführt werden, während Bucket-Policies für jeden Bucket innerhalb eines Projekts mit Hilfe der s3cmd-Befehlszeile festgelegt werden müssen. Nachfolgend sind einige Beispiele für sämtliche Operationen aufgeführt. ## Container Access Control Lists (ACLs) -Standardmäßig haben nur Projektbesitzer die Berechtigung, Container und Objekte zu erstellen, zu lesen und zu ändern. Ein Eigentümer kann jedoch anderen Benutzern mit Hilfe einer Access Control List (ACL) Zugriff gewähren. Die ACL kann für jeden Container festgelegt werden und gilt nur für diesen Container und die Objekte in diesem Container. +Standardmäßig haben nur Projektbesitzer die Berechtigung, Container und Objekte zu erstellen, zu lesen und zu ändern. Ein Eigentümer (Owner) kann jedoch anderen Benutzern mit Hilfe einer Access Control List (ACL) Zugriff gewähren. Die ACL kann für jeden Container festgelegt werden und gilt nur für diesen Container und die Objekte in diesem Container. Einige der Hauptelemente, mit denen eine ACL für einen Container festgelegt werden kann, sind nachfolgend aufgeführt: | **Element** | **Beschreibung** | | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `.r: *.` | Jeder Benutzer hat Zugriff auf Objekte. In der Anforderung ist kein Token erforderlich. | -| `.r: ` | Der Referrer erhält Zugriff auf Objekte. Der Referrer wird durch den Referer-Anforderungsheader in der Anforderung identifiziert. Es ist kein Token erforderlich. | +| `.r: ` | Der Referrer erhält Zugriff auf Objekte. Der Referrer wird durch den Referrer-Anforderungsheader in der Anforderung identifiziert. Es ist kein Token erforderlich. | | `.r: - ` | Diese Syntax (mit "-" vor dem Referrer) wird unterstützt. Der Zugriff wird jedoch nicht verweigert, wenn ein anderes Element (z. B. `.r:*`) den Zugriff gewährt. | | `.rlistings` | Jeder Benutzer kann HEAD- oder GET-Operationen für den Container ausführen, wenn der Benutzer auch Lesezugriff auf Objekte hat (z. B. auch `.r: *` oder `.r: `. Es ist kein Token erforderlich. | @@ -37,49 +37,51 @@ Als Beispiel setzen wir die Policy `.r:*.` für einen Container mit dem Namen `" swift post example-container --read-acl ".r:*" ``` -Umgekehrt können wir Benutzern auch erlauben, die Liste der Objekte in einem Container aufzulisten, aber nicht darauf zuzugreifen, indem wir die Policy ".rlistings" für unseren "example-container" festlegen: +Umgekehrt können wir Benutzern auch erlauben, die Liste der Objekte in einem Container aufzulisten, aber nicht darauf zuzugreifen. Das erreichen wir, indem wir die Policy ".rlistings" für unseren "example-container" festlegen: ```bash swift post example-container --read-acl ".rlistings" ``` -Der folgende Befehl kann verwendet werden, um die Lese-Policy zu entfernen und den Container auf den Standardstatus "privat" zu setzen: +Mit dem folgenden Befehl können die Lese-Policy entfernt und der Container auf den Standardstatus *privat* gesetzt werden: ```bash swift post -r "" example-container ``` -Verwenden Sie den folgenden Befehl, um zu überprüfen, welche ACL für einen Container festgelegt ist. +Mit dem folgenden Befehl kann überprüft werden, welche ACL für einen Container festgelegt ist. ```bash swift stat example-container ``` -Dies gibt einen Überblick über die Statistiken für den Container und zeigt die aktuelle ACL-Regel für einen Container an. +Hier werden die Statistiken und die aktuelle ACL-Regel für einen Container angezeigt. -### Verhindern Sie das Auflisten auf Containern, wenn Sie die Policy `.r: * .` verwenden: +### Verhindern des Auflisten auf Container, wenn die Policy `.r: * .` verwendet wird: -In der aktuellen Version von OpenStack empfehlen wir, ein leeres index.html-Objekt im Container zu erstellen, um zu verhindern, dass der Inhalt aufgelistet wird, während die Policy `.r: * .` für einen Container verwendet wird. Auf diese Weise können Benutzer Objekte herunterladen, ohne den Inhalt der Buckets aufzulisten zu koennen. Dies kann mit den folgenden Schritten erreicht werden: +In der aktuellen Version von OpenStack empfehlen wir, ein leeres index.html-Objekt im Container zu erstellen. Damit wird verhindert, dass der Inhalt aufgelistet wird, während die Policy `.r: * .` für einen Container verwendet wird. Auf diese Weise können Benutzer Objekte herunterladen, ohne dass der Inhalt der Buckets aufgelistet wird. Dazu sind folgende Schritte nötig: -Fügen Sie zunächst die leere Datei `index.html` zu unserem `example-container` hinzu: +Zunächst wird die leere Datei `index.html` zu dem `example-container` hinzugefügt: ```bash swift post -m 'Webindex: index.html' example-container ``` -Erstellen Sie dann die Datei index.html als Objekt im Container: +Anschließend wird die Datei index.html als Objekt im Container erstellt: ```bash touch index.html && openstack object create example-container index.html ``` -Dadurch können externe Benutzer auf bestimmte Dateien zugreifen, ohne den Inhalt des Containers aufzulisten. +Dadurch können externe Benutzer auf bestimmte Dateien zugreifen, ohne dass der Inhalt des Containers aufgelistet wird. ## Bucket-Policy -Bucket-Policies werden verwendet, um den Zugriff auf jeden Bucket in einem Projekt zu steuern. Es wird empfohlen, bei der Erstellung eine Policy für alle Buckets festzulegen. +Bucket-Policies werden verwendet, um den Zugriff auf jeden Bucket in einem Projekt zu steuern. Wir empfehlen, bei der Erstellung eine Policy für alle Buckets festzulegen. -Der erste Schritt besteht darin, eine Policy wie folgt zu erstellen. Für die folgende Vorlage muss nur der Bucket-Name für nachfolgende Policy geändert werden. Im folgenden Beispiel wird eine Policy für den Bucket `example-bucket` erstellt: +Der erste Schritt besteht darin, eine Policy folgendermaßen zu erstellen. Für die folgende Vorlage muss nur der Bucket-Name für die nachfolgenden Policies geändert werden. + +Im diesem Beispiel wird eine Policy für den Bucket `example-bucket` erstellt: ```bash cat > examplepolicy @@ -97,32 +99,32 @@ cat > examplepolicy } ``` -Aufschlüsselung jedes Elements innerhalb des obigen Policy-Beispiels: +Erkärung der Elemente des obigen Policy-Beispiels: -* `Version`: Gibt die Sprachsyntaxregeln an, die zum Verarbeiten der Policy verwendet werden sollen. Es wird empfohlen, immer Folgendes zu verwenden: "2012-10-17", da dies die aktuelle Version der Policy-Sprache ist. -* `Statement`: Das Hauptelement der Policy, die anderen Elemente befinden sich in dieser Anweisung. -* `SID`: Die Statement-ID. Dies ist eine optionale Kennung, mit der die Richtlinienanweisung beschrieben werden kann. Empfohlen, damit der Zweck jeder Policy klar ist. -* `Effect`: Stellen Sie entweder "Allow" oder "Deny" ein. +* `Version`: Gibt die Sprachsyntaxregeln an, die zum Verarbeiten der Policy verwendet werden sollen. Wir empfehlen, folgende Syntax zu verwenden: "2012-10-17", da dies die aktuelle Version der Policy-Sprache ist. +* `Statement`: Das Hauptelement der Policy. Die anderen Elemente befinden sich in dieser Anweisung. +* `SID`: Die Statement-ID. Dies ist eine optionale Kennung, mit der die Richtlinienanweisung beschrieben werden kann. Sie wird empfohlen, damit der Zweck jeder Policy klar ist. +* `Effect`: Hier muss entweder *Allow* oder *Deny* eingestellt werden. * `Principal`: Gibt den Principal an, dem der Zugriff auf eine Ressource gestattet oder verweigert wird. Hier wird der Platzhalter "*" verwendet, um die Regel auf alle anzuwenden. * `Action`: Beschreibt die spezifischen Aktionen, die zugelassen oder abgelehnt werden. -(Weitere Informationen zu den verfügbaren Policy-Optionen und zur Anpassung an Ihre spezifischen Anforderungen finden Sie in der [offiziellen AWS-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)). +Weitere Informationen zu den verfügbaren Policy-Optionen und zur Anpassung an Ihre spezifischen Anforderungen finden Sie in der [offiziellen AWS-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html). -Wenden Sie als Nächstes die neu erstellte Policy auf `example-bucket` an: +Als Nächstes wird die neu erstellte Policy auf `example-bucket` angewandt: ```bash s3cmd setpolicy examplepolicy s3://example-bucket ``` -Anschließend können Sie den folgenden Befehl ausführen, um sicherzustellen, dass die Policy vorhanden ist: +Anschließend wird der folgende Befehl ausgeführt, um sicherzustellen, dass die Policy vorhanden ist: ```bash s3cmd info s3://example-bucket ``` -Sobald die Policy angewendet wurde, können Sie im Dashboard erneut festlegen: `Public Access: Disabled`. +Sobald die Policy angewendet wurde, kann im Dashboard erneut folgendes festgelegt werden: `Public Access: Disabled`. -Sobald die oben genannten Schritte ausgeführt wurden, erhalten wir die folgenden Ergebnisse: +Sobald die oben genannten Schritte ausgeführt wurden, erhält man die folgenden Ergebnisse: * Der Container ist privat und Dateien werden nicht über XML aufgelistet oder angezeigt. * Die Policy ermöglicht jetzt den Zugriff auf bestimmte Dateien mit einem direkten Link. diff --git a/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.de.md b/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.de.md index 0dcceeb9b..dc1146c59 100644 --- a/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.de.md +++ b/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.de.md @@ -7,17 +7,17 @@ parent: S3 Kompatiblen Objekt Storage grand_parent: Storage --- -# Swift - Serving Static Websites +# Swift - Serving a Static Website ## Einführung -Mit Hilfe der Swift-CLI ist es möglich, die Daten in Containern als statische Website auszuliefern. Die folgende Anleitung beschreibt die wichtigsten Schritte, um damit zu beginnen, und enthält auch ein Beispiel. +Mit Hilfe der Swift-CLI können die Daten in Containern als statische Website ausgeliefert werden. Die folgende Anleitung enthält die wichtigsten Schritte und ein Beispiel. ## Erste Schritte ### Erstellen eines Containers -Zunächst erstellen wir einen Container mit dem Namen `example-webpage`, den wir als Basis für diese Anleitung verwenden werden: +Zunächst wird ein Container mit dem Namen `example-webpage` erstellt, der als Basis für diese Anleitung verwendet wird: ```bash swift post example-webpage @@ -25,39 +25,39 @@ swift post example-webpage ### Den Container öffentlich lesbar machen -Als nächstes müssen wir sicherstellen, dass der Container öffentlich lesbar ist. Weitere Informationen zum Sichern von Containern und zum Festlegen von Bucket-Richtlinien finden Sie [hier](/optimist/storage/s3_documentation/security/): +Als nächstes wird sichergestellt, dass der Container öffentlich lesbar ist. Weitere Informationen zum Sichern von Containern und zum Festlegen von Bucket-Richtlinien finden Sie [hier](/optimist/storage/s3_documentation/security/): ```bash swift post -r '.r:*' example-webpage ``` -### Indexdatei der Seite setzen +### Setzen der Indexdatei der Seite -Setzen Sie die Indexdatei. In diesem Fall wird index.html die Standarddatei sein, die angezeigt wird, wenn die Seite erscheint: +Nun wird die Indexdatei gesetzt. In diesem Fall ist `index.html` die Standarddatei und wird angezeigt, wenn die Seite erscheint: ```bash swift post -m 'web-index:index.html' example-webpage ``` -### Dateiliste aktivieren +### Aktivieren der Dateiliste -Optional können wir auch die Dateiliste aktivieren. Wenn Sie mehrere Downloads bereitstellen müssen, ist es sinnvoll, die Verzeichnisliste zu aktivieren: +Optional kann auch die Dateiliste aktiviert werden. Wenn mehrere Downloads bereitgestellt werden müssen, ist es sinnvoll, die Verzeichnisliste zu aktivieren: ```bash swift post -m 'web-listings: true' example-webpage ``` -### CSS für Dateilisten aktivieren +### Aktivieren von CSS für Dateilisten -Aktivieren Sie ein benutzerdefiniertes Listing-Stylesheet: +Mit dem folgenden Befehl wird ein benutzerdefiniertes Listing-Stylesheet aktiviert: ```bash swift post -m 'web-listings-css:style.css' example-webpage ``` -### Fehlerseiten einrichten +### Einrichten von Fehlerseiten -Schließlich sollten wir eine benutzerdefinierte Fehlerseite einbinden: +Mit dem folgenden Befehl wird eine benutzerdefinierte Fehlerseite eingebunden: ```bash swift post -m 'web-error:404error.html' example-webpage @@ -65,7 +65,7 @@ swift post -m 'web-error:404error.html' example-webpage ## Beispiel-Webseite -Lassen Sie uns die Schritte rekapitulieren, die wir bis jetzt unternommen haben, um statische Webseiten zu aktivieren: +Hier ist nochmal eine Zusammenfassung der Schritte, wie statische Webseiten aktiviert werden können: ```bash swift post example-webpage @@ -76,11 +76,11 @@ swift post -m 'web-listings-css:style.css' example-webpage swift post -m 'web-error:404error.html' example-webpage ``` -Wenn die obigen Schritte abgeschlossen sind, können wir damit beginnen, unsere statische Webseite anzupassen. Das Folgende demonstriert eine schnelle Einrichtung unter Verwendung unseres Containers `example-webpage` +Nachdem die obigen Schritte abgeschlossen sind, kann die statische Webseite angepasst werden. Nachfolgend wird gezeigt, wie man schnell eine Seite mit dem Container `example-webpage` einrichten kann. ### Anpassen der Seiten index.html, page.html und 404error.html -Dies wird als Startseite dienen, die einen Link zu einer sekundären Seite erstellt. +Diese Seite dient als Startseite und erstellt einen Link zu einer sekundären Seite. ```html @@ -100,7 +100,7 @@ Die nächste Seite (page.html) zeigt ein Bild namens `sample.png` an: ``` -Wir können auch benutzerdefinierte Fehlerseiten hinzufügen. Beachten Sie, dass derzeit nur die Fehler 401 (Nicht autorisiert) und 404 (Nicht gefunden) unterstützt werden. Das folgende Beispiel demonstriert die Erstellung einer 404-Fehlerseite: +Es können auch benutzerdefinierte Fehlerseiten hinzugefügt werden. Derzeit werden nur die Fehler 401 (Nicht autorisiert) und 404 (Nicht gefunden) unterstützt. Das folgende Beispiel zeigt, wie eine 404-Fehlerseite erstellt wird: ```html @@ -113,7 +113,7 @@ Wir können auch benutzerdefinierte Fehlerseiten hinzufügen. Beachten Sie, dass ### Hochladen der Dateien index.html und page.html -Nachdem die Inhalte der Dateien erstellt wurden, laden Sie die Dateien mit den folgenden Befehlen hoch: +Nachdem die Inhalte der Dateien erstellt wurden, können die Dateien mit den folgenden Befehlen hochgeladen werden: ```bash swift upload beispiel-webseite index.html @@ -124,16 +124,16 @@ swift upload beispiel-webseite 404error.html ### Betrachten der Website -Wenn alle oben genannten Schritte abgeschlossen sind, können wir nun unsere neu erstellte Website betrachten. Den Link zur Website finden Sie im Optimist Dashboard > Object Store > Containers über den abgebildeten Link. +Wenn alle oben genannten Schritte abgeschlossen sind, kann man die neu erstellte Website anschauen. Der Link zur Website befindet sich im *Optimist Dashboard* → *Object Store* → *Containers* über den abgebildeten Link. -Wenn Sie auf den Link klicken, wird unsere neu erstellte Website angezeigt: +Durch Klicken auf den Link wird die neu erstellte Website angezeigt: ![](attachments/Webpage01.png) -Klicken Sie auf "here", um zu der Seite zu navigieren, auf der wir unser Beispielbild hochgeladen haben: +Durch Klicken auf *here*, navigiert man zu der Seite, auf der das Beispielbild hochgeladen wurde: ![](attachments/Webpage02.png) -Für den Fall, dass wir versuchen, zu einer Seite zu navigieren, die nicht existiert, wird unsere benutzerdefinierte 404-Seite angezeigt: +Für den Fall, dass man zu einer Seite navigiert, die nicht existiert, wird die benutzerdefinierte 404-Seite angezeigt: ![](attachments/Webpage03.png) diff --git a/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.en.md b/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.en.md index 7c897e381..78405344a 100644 --- a/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.en.md +++ b/docs/_optimist/storage/s3_documentation/swiftservestaticwebsite/index.en.md @@ -1,5 +1,5 @@ --- -title: Swift - Serving a Static Website +title: Swift - Serving Static Websites lang: en permalink: /optimist/storage/s3_documentation/swiftservestaticwebsite/ nav_order: 3160 @@ -11,13 +11,13 @@ grand_parent: Storage ## Introduction -Using the Swift command line, it is possible to serve the data in containers as a static website. The following guide will outline the main steps to get started, as well as including an example of a website. +Using the Swift command line, it is possible to serve the data in containers as a static website. The following guide outlines the main steps to get started, as well as including an example of a website. -## First Steps +## First steps ### Create a container -We will first create a container named `example-webpage` which we will use as the basis of this guide: +You will first create a container named `example-webpage` which you will use as the basis of this guide: ```bash swift post example-webpage @@ -25,7 +25,7 @@ swift post example-webpage ### Make the container publically readable -Next, we must ensure that the container is publically readable. You can learn more about securing containers and setting bucket policies [here](/optimist/storage/s3_documentation/security/): +Next, you must ensure that the container is publically readable. You can learn more about securing containers and setting bucket policies [here](/optimist/storage/s3_documentation/security/): ```bash swift post -r '.r:*' example-webpage @@ -41,7 +41,7 @@ swift post -m 'web-index:index.html' example-webpage ### Enable file listing -Optionally, we can also enable file listing. If you need to provide multiple downloads, enabling the directory listing makes sense: +Optionally, you can also enable file listing. If you need to provide multiple downloads, enabling the directory listing makes sense: ```bash swift post -m 'web-listings: true' example-webpage @@ -57,15 +57,15 @@ swift post -m 'web-listings-css:style.css' example-webpage ### Set error pages -Finally, we should include a custom error page: +Finally, you should include a custom error page: ```bash swift post -m 'web-error:404error.html' example-webpage ``` -## Example Webpage +## Example web page -Let's recap the steps we have taken so far to enable static webpages: +Let us recap the steps you have taken so far to enable static web pages: ```bash swift post example-webpage @@ -76,11 +76,11 @@ swift post -m 'web-listings-css:style.css' example-webpage swift post -m 'web-error:404error.html' example-webpage ``` -Once the steps above have been completed, we can now begin to customise our static webpage. The following demonstrates a quick setup using our container `example-webpage` +Once the steps above have been completed, you can now begin to customise your static web page. The following demonstrates a quick setup using your container `example-webpage` ### Customising index.html, page.html, and 404error.html pages -This will serve as the homepage, which will create a link to a secondary page. +This serves as the homepage, which creates a link to a secondary page. ```html @@ -91,7 +91,7 @@ See the web page here. ``` -The next page (page.html) will display an image called `sample.png`: +The next page (page.html) displays an image called `sample.png`: ```html @@ -100,7 +100,7 @@ The next page (page.html) will display an image called `sample.png`: ``` -We can also add custom error pages. Note that currently only 401 (Unauthorized) and 404 (Not Found) errors are supported. The following example demonstrates the creation of a 404 Error page: +You can also add custom error pages. Note that currently only 401 (Unauthorized) and 404 (Not Found) errors are supported. The following example demonstrates the creation of a 404 Error page: ```html @@ -124,16 +124,16 @@ swift upload example-webpage 404error.html ### Viewing the website -Once all of the above steps have been completed, we can now view our newly created website. The link to the website can be found on the Optimist Dashboard > Object Store > Containers using the link shown. +Once all of the above steps have been completed, you can now view your newly created website. The link to the website is available on the *Optimist Dashboard → Object Store → Containers* using the link shown. -Clicking on the link displays our newly created website: +Clicking on the link displays your newly created website: ![](attachments/Webpage01.png) -Click on "here" to navigate to the page where we uploaded our sample image: +Click on "here" to navigate to the page where you uploaded your sample image: ![](attachments/Webpage02.png) -In the event that we try to navigate to a page which does not exist, our custom 404 page will be displayed: +In the event that you try to navigate to a page which does not exist, your custom 404 page will be displayed: ![](attachments/Webpage03.png) diff --git a/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.de.md b/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.de.md index 1e6662b86..9bb2a5238 100644 --- a/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.de.md +++ b/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.de.md @@ -12,18 +12,18 @@ grand_parent: Storage ## Inhalt: - [S3cmd](#s3cmd) -- [S3Browser](#s3browser) +- [S3 Browser](#s3browser) - [Cyberduck](#cyberduck) - [Boto3](#boto3) -Zum Hochladen Ihrer Daten wie zum Beispiel (Dokumente, Fotos, Videos, usw.) ist es zunächst notwendig einen [Bucket zu erstellen](/optimist/storage/s3_documentation/createanddeletebucket/). -Eine Datei kann dabei nur in einem Bucket gespeichert werden. +Zum Hochladen Ihrer Daten (z.B. Dokumente, Fotos, Videos, usw.) muss zunächst ein [Bucket](/optimist/storage/s3_documentation/createanddeletebucket/) erstellt werden. +Eine Datei kann nur in einem Bucket gespeichert werden. ## S3cmd -### Objekt hochladen +### Hochladen eines Objekts -Um eine Datei hochzuladen, nutzt man folgenden Befehl: +Nutzen Sie den folgenden Befehl, um eine Datei hochzuladen: ```bash s3cmd put NameDerDatei s3://NameDesBuckets/NameDerDatei @@ -37,9 +37,9 @@ upload: 'innovo.txt' -> 's3://innovo-test/innovo.txt' [1 of 1] 95 of 95 100% in 0s 176.63 B/s done ``` -### Objekt löschen +### Löschen eines Objekts -Um eine Datei zu löschen, nutzt man folgenden Befehl: +Nutzen Sie den folgenden Befehl, um eine Datei zu löschen: ```bash s3cmd del s3://NameDesBuckets/NameDerDatei @@ -52,51 +52,52 @@ $ s3cmd del s3://innovo-test/innovo.txt delete: 's3://innovo-test/innovo.txt' ``` -## S3Browser +## S3 Browser -### Objekt hochladen +### Hochladen eines Objekts -Nach dem öffnen von S3Browser, klicken wir auf den gewünschten "Bucket"(1), wähle dann "Upload"(2) und zu letzt "Upload file(s)"(3) +Nach dem Öffnen von S3 Browser, klicken Sie auf den gewünschten *Bucket* (1), wählen Sie *Upload* (2) und anschließend *Upload file(s)* (3). ![](attachments/UploadAndDeleteObject1.png) -Hier wählen wir nun die entsprechende Datei(1) aus und klicken auf Öffnen(2). +Wählen Sie die entsprechende Datei (1) aus und klicken Sie auf *Öffnen* (2). ![](attachments/UploadAndDeleteObject2.png) -### Objekt löschen +### Löschen eines Objekts -Um eine Datei zu löschen, wird dieser mit einem linken Mausklick markiert(1). Danach wird auf "Delete"(2) geklickt. +Um eine Datei zu löschen, markieren Sie diese mit einem linken Mausklick (1) und klicken Sie anschließend auf *Delete* (2). ![](attachments/UploadAndDeleteObject3.png) -Die darauf folgende Abfrage wird mit "Ja" bestätigt. +Bestätigen Sie die darauf folgende Abfrage mit *Ja*. ## Cyberduck -### Objekt hochladen +### Hochladen eines Objekts -Nach dem Öffnen von Cyberduck, klicken wir auf den gewünschten Bucket(1), klicken dann auf Aktion(2) und dort auf Upload(3). +Nach dem Öffnen von Cyberduck, klicken Sie auf den gewünschten Bucket (1), anschließend auf *Aktion* (2) und auf *Upload* (3). ![](attachments/UploadAndDeleteObject4.png) -Hier wählen wir nun unsere Wunsch-Datei und klicken auf Upload. +Wählen Sie Ihre Wunsch-Datei aus und klicken Sie auf *Upload*. -### Objekt löschen +### Löschen eines Objekts -Um eine Datei zu löschen, wird dieser mit einem linken Mausklick markiert(1). Gelöscht wird sie dann über "Aktion"(2) und "Löschen"(3). +Um eine Datei zu löschen, markieren Sie diese mit einem linken Mausklick (1). Löschen Sie dann über *Aktion* (2) und *Löschen* (3) die Datei. ![](attachments/UploadAndDeleteObject5.png) -Die Bestätigung erfolgt dann über das erneute klicken auf "Löschen". +Bestätigen Sie die Löschung durch erneutes Klicken auf *Löschen*. ## Boto3 -Bei boto3 brauchen wir zunächst die S3 Kennung, damit ein Script nutzbar ist. Für Details: [S3 Kennung erstellen und einlesen #boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3) +Bei boto3 brauchen Sie zunächst die S3 Kennung, damit ein Script nutzbar ist. Details finden Sie unter: [S3 Kennung erstellen und einlesen #boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3). -### Objekt hochladen +### Hochladen eines Objekts + +Um eine Datei hochzuladen, müssen Sie einen Client nutzen und den Bucket angeben, in dem die Datei hochgeladen werden soll. -Um nun eine Datei hochzuladen, müssen wir einen Clienten nutzen und den Bucket angeben in welchen die Datei hochgeladen werden soll. Eine Option sieht so aus: ```bash @@ -107,7 +108,7 @@ s3 = boto3.client('s3') s3.upload_file(Bucket='iNNOVO-Test', Key='innovo.txt') ``` -Ein komplettes Script für boto 3 inkl. Authentifizierung kann so aussehen: +Ein komplettes Script für boto 3 einschließlich Authentifizierung kann so aussehen: ```python #!/usr/bin/env/python @@ -130,10 +131,11 @@ s3 = boto3.client('s3') s3.upload_file(Bucket='iNNOVO-Test', Key='innovo.txt') ``` -### Objekt löschen +### Löschen eines Objekts + +Wie beim Hochladen einer Datei, wird zunächst ein Client benötigt und dann die Datei gelöscht. +Dafür geben wir neben der Datei auch den Bucket an, in dem die Datei gespeichert ist. -Wie beim hochladen einer Datei, wird zunächst ein Client benötigt um dann die Datei zu löschen. -Dafür geben wir neben der Datei selber, auch noch den Bucket an, in dem die Datei gespeichert ist. Eine Option sieht so aus: ```bash @@ -144,7 +146,7 @@ s3 = boto3.client('s3') s3.delete_object(Bucket='iNNOVO-Test', Key='innovo.txt') ``` -Ein komplettes Script für boto 3 inkl. Authentifizierung kann so aussehen: +Ein komplettes Script für boto 3 einschließlich Authentifizierung kann so aussehen: ```python #!/usr/bin/env/python diff --git a/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.en.md b/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.en.md index 495630a79..516d4cbbe 100644 --- a/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.en.md +++ b/docs/_optimist/storage/s3_documentation/uploadanddeleteobject/index.en.md @@ -16,8 +16,8 @@ grand_parent: Storage - [Cyberduck](#cyberduck) - [Boto3](#boto3) -To upload your data (documents, photos, videos, etc.) it is first necessary to [create a bucket](/optimist/storage/s3_documentation/createanddeletebucket/). -A file can only be saved in a bucket. +To upload your data (documents, photos, videos, and so on), you first need to [create a bucket](/optimist/storage/s3_documentation/createanddeletebucket/). +You can only save a file in a bucket. ## S3cmd @@ -29,7 +29,7 @@ To upload a file, use the following command: s3cmd put NameOfTheFile s3://NameOfTheBucket/NameOfTheFile ``` -The output in the command will be similar to this: +The output in the command is similar to this: ```bash $ s3cmd put innovo.txt s3://innovo-test/innovo.txt @@ -45,50 +45,50 @@ To delete a file, use the following command: s3cmd del s3://NameOfTheBucket/NameOfTheFile ``` -The output in the command will be similar to this: +The output in the command is similar to this: ```bash $ s3cmd del s3://innovo-test/innovo.txt delete: 's3://innovo-test/innovo.txt' ``` -## S3Browser +## S3 Browser ### Upload an object -After opening S3Browser, we click on the desired "Bucket"(1), then select "Upload"(2) and finally "Upload file(s)"(3) +After opening S3 Browser, click on the desired Bucket (1), then select *Upload* (2), and finally *Upload file(s)* (3) ![](attachments/UploadAndDeleteObject1.png) -Here we select the file(1) and click on Open(2). +Select the file (1) and click on *Open* (2). ![](attachments/UploadAndDeleteObject2.png) ### Delete an object -To delete a file, select it with a left mouse click(1). Then click on "Delete"(2). +To delete a file, left-click on it (1). Then click on "Delete"(2). ![](attachments/UploadAndDeleteObject3.png) -Finally, confirm the action with "Yes". +Confirm the action with *Yes*. ## Cyberduck ### Upload an object -After opening Cyberduck, click on the Bucket(1), then click on Action(2) and then on Upload(3). +After opening Cyberduck, click on the Bucket (1), then on *Action* (2), and finally on *Upload* (3). ![](attachments/UploadAndDeleteObject4.png) -Here we choose our file and click on Upload. +Select your file and click on *Upload*. ### Delete an object -To delete a file, select it with a left mouse click(1). It is then deleted via "Action"(2) and "Delete"(3). +To delete a file, left-click on it (1). Then delete it clicking on *Action* (2) and *Delete* (3). ![](attachments/UploadAndDeleteObject5.png) -This action is then confirmed by clicking on "Delete" again. +Confirm the action by clicking on *Delete* again. ## Boto3 @@ -96,7 +96,7 @@ At boto3 we first need the S3 identifier so that a script can be used. For detai ### Upload an object -To upload a file, we have to use a client and specify the bucket which the file should be uploaded to. +To upload a file, you have to use a client and specify the bucket where the file should be uploaded to. One option could look like this: ```bash @@ -133,7 +133,7 @@ s3.upload_file(Bucket='iNNOVO-Test', Key='innovo.txt') ### Delete an object As well as being used to upload a file, the client is also required to delete the file. -For this, we specify the bucket in which the file is stored, in addition to the file itself. +For this, specify the bucket where the file is stored, in addition to the file itself. One option could look like this: ```bash diff --git a/docs/_optimist/storage/s3_documentation/versioning/index.de.md b/docs/_optimist/storage/s3_documentation/versioning/index.de.md index fed87f28a..484b247eb 100644 --- a/docs/_optimist/storage/s3_documentation/versioning/index.de.md +++ b/docs/_optimist/storage/s3_documentation/versioning/index.de.md @@ -1,5 +1,5 @@ --- -title: Versionierung aktivieren/deaktivieren und wie eine versioniertes Objekt gelöscht wird +title: Versionierung aktivieren/deaktivieren und ein versioniertes Objekt löschen lang: de permalink: /optimist/storage/s3_documentation/versioning/ nav_order: 3140 @@ -7,92 +7,90 @@ parent: S3 Kompatiblen Objekt Storage grand_parent: Storage --- -# Versionierung aktivieren/deaktivieren und wie eine versioniertes Objekt gelöscht wird +# Versionierung aktivieren/deaktivieren und ein versioniertes Objekt löschen ## Inhalt: - [S3cmd](#s3cmd) -- [S3Browser](#s3browser) +- [S3 Browser](#s3browser) - [Cyberduck](#cyberduck) - [Boto3](#boto3) -Versionierung ermöglicht es, mehrere Versionen eines Objekts in einem Bucket aufzubewahren. -So können Beispielsweise innovo.txt (Version 1) und innovo.txt (Version 2) in einem einzigen Bucket speichern. +Durch Versionierung können mehrere Versionen eines Objekts in einem Bucket aufbewahrt werden. +So können Sie beispielsweise `innovo.txt` (Version 1) und `innovo.txt` (Version 2) in einem einzigen Bucket speichern. Die Versionierung kann Sie vor den Folgen von unbeabsichtigtem Überschreiben oder Löschen bewahren. ## S3cmd -Mit S3cmd ist es nicht möglich die Versionierung einzuschalten und/oder versionierte Dateien zu löschen. +Mit S3cmd ist es nicht möglich, die Versionierung zu aktivieren oder versionierte Dateien zu löschen. -## S3Browser +## S3 Browser -### Versionierung einschalten +### Versionierung aktivieren -Um die Versionierung zu aktivieren, markieren wir den gewünschten Bucket(1). -Machen auf den Bucket einen rechten Mausklick und klicken dann auf "Edit Versioning Settings"(2). +Um die Versionierung zu aktivieren, markieren Sie den gewünschten Bucket (1) mit einem rechten Mausklick. Klicken Sie dann auf *Edit Versioning Settings* (2). ![](attachments/Versioning1.png) -Im sich öffnenden Fenster klicken wir in die Checkbox von "Enable versioning for bucket"(1) und bestätigen dies mit "OK"(2). +Markieren Sie in dem sich öffnenden Fenster die Checkbox von *Enable versioning for bucket* (1). Bestätigen Sie mit *OK* (2). ![](attachments/Versioning2.png) ### Versionierung deaktivieren -Um die Versionierung zu deaktivieren, markieren wir den gewünschten Bucket(1). -Klicken dann mit einem rechten Mausklick auf den Bucket und dann auf "Edit Versioning Settings"(2). +Um die Versionierung zu deaktivieren, markieren Sie den gewünschten Bucket (1) mit einem rechten Mausklick. Klicken Sie dann auf *Edit Versioning Settings* (2). ![](attachments/Versioning3.png) -Im sich öffnenden Fenster entfernen wir die Checkbox bei "Enable versioning for bucket"(1) und bestätigen dies mit "OK"(2). +Entfernen Sie im sich öffnenden Fenster die Checkbox bei *Enable versioning for bucket* (1). Bestätigen Sie mit *OK* (2). ![](attachments/Versioning4.png) ### Versionierte Datei löschen -Dies ist in der Free-Version von S3Browser nicht möglich. +Dies ist in der Free-Version von S3 Browser nicht möglich. ## Cyberduck Um die verschiedenen Version einer Datei zu sehen, müssen versteckte Dateien angezeigt werden. -Diese Option findet man unter Darstellung(1) → Versteckte Dateien anzeigen(2) +Diese Option finden Sie unter *Darstellung* (1) → *Versteckte Dateien anzeigen* (2). ![](attachments/Versioning5.png) -### Versionierung einschalten +### Versionierung aktivieren -Nach dem Öffnen von Cyberduck, klicken wir auf eine Datei, wo wir die Versionierung(1) für aktivieren wollen. -Danach auf Aktion(2) und auf Info(3). +Nach dem Öffnen von Cyberduck, klicken Sie auf die Datei, für die Sie die Versionierung (1) aktivieren wollen. +Klicken Sie anschließend auf *Aktion* (2) und auf *Info* (3). ![](attachments/Versioning6.png) -Danach öffnet sich das folgende Fenster, hier setzen wir den Haken bei "Bucket Versionierung"(1): +Danach öffnet sich das folgende Fenster. Setzen Sie hier den Haken bei *Bucket Versionierung* (1): ![](attachments/Versioning7.png) ### Versionierung deaktivieren -Um die Versionierung zu deaktivieren, markieren wir wieder eine Datei(1), gehen auf Aktion(2) und auf Info(3). +Um die Versionierung zu deaktivieren, markieren Sie wieder eine Datei (1). Gehen Sie dann auf *Aktion* (2) und *Info* (3). ![](attachments/Versioning8.png) -In dem sich öffnenden Fenster wird der Haken bei "Bucket Versionierung" entfernt. +Entfernen Sie in dem sich öffnenden Fenster den Haken bei *Bucket Versionierung*. ![](attachments/Versioning9.png) ### Versionierte Datei löschen -Hier wird einfach die zu löschende Datei markiert(1) und über Aktion(2) → Löschen(3) entfernt. +Markieren Sie die zu löschende Datei (1) und entfernen Sie diese über *Aktion* (2) → *Löschen* (3). ![](attachments/Versioning10.png) ## Boto3 -Bei boto3 brauchen wir zunächst die S3 Kennung, damit ein Script nutzbar ist. Für Details: [S3 Kennung erstellen und einlesen #boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3). +Bei boto3 brauchen Sie zunächst die S3 Kennung, damit ein Script nutzbar ist. Details finden Sie unter: [S3 Kennung erstellen und einlesen #boto3](/optimist/storage/s3_documentation/createanduses3credentials/#boto3). -### Versionierung einschalten +### Versionierung aktivieren -Um nun einen Bucket zu erstellen, müssen wir einen Clienten nutzen und den Bucket dann erstellen. +Um einen Bucket zu erstellen, müssen Sie einen Client nutzen und anschließend den Bucket erstellen. Eine Option sieht so aus: ```bash @@ -103,7 +101,7 @@ bucket = s3.Bucket('iNNOVO-Test') bucket.configure_versioning(True) ``` -Ein komplettes Script für boto 3 inkl. Authentifizierung kann so aussehen: +Ein komplettes Script für boto 3 einschließlich Authentifizierung kann so aussehen: ```python #!/usr/bin/env/python @@ -128,7 +126,7 @@ bucket.configure_versioning(True) ### Versionierung deaktivieren -Wie bei der Aktivierung der Versionierung wird zunächst der Bucket benötigt um dann die Versionierung zu deaktivieren. +Wie bei der Aktivierung der Versionierung benötigen Sie zunächst den Bucket, um die Versionierung zu deaktivieren. Eine Option sieht so aus: ```bash @@ -139,7 +137,7 @@ bucket = s3.Bucket('iNNOVO-Test') bucket.configure_versioning(False) ``` -Ein komplettes Script für boto 3 inkl. Authentifizierung kann so aussehen: +Ein komplettes Script für boto 3 einschließlich Authentifizierung kann so aussehen: ```python #!/usr/bin/env/python @@ -164,7 +162,7 @@ bucket.configure_versioning(False) ### Versioniertes Objekt löschen -Um ein versioniertes Objekt komplett zu löschen, ist folgender Befehl hilfreich: +Um ein versioniertes Objekt komplett zu löschen, ist der folgende Befehl hilfreich: ```bash ## Angabe des Buckets in dem das versionierte Objekt gelöscht werden soll