update knowledge

This commit is contained in:
Janik von Rotz committed 2020-08-31 19:21:46 +02:00
1 parent 82a0ecab0c
commit 39f4734c06
34 files changed
+649 -21

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
Ansible ist die Technologie mit der die gesamte Mint System Infrastruktur betrieben wird. Mit Ansible beschreibt man wie eine Anzahl an Server konfiguriert wird.
# Architektur
![[Ansible Architektur.png]]
View File
Whitespace-only changes.
+13
View File
@@ -0,0 +1,13 @@
# Öffentlich
Quellcode, der frei zugänglich sein soll, wird auf GitHub gehostet.
Dazu wurde eine Organisation angelegt: https://github.com/Mint-System
# Privat
Quellcode, der private sein soll, wird auf GitLab gehostet.
Dazu wurde eine Organisation angelegt: https://gitlab.com/mint-system/
Zugriffsrechte werden vom Administrator vergeben.
+51
View File
@@ -0,0 +1,51 @@
# IaaS
Plattformen zur Bereitstellung von Applikationen und Container gibt es unzählige. Grundsätzlich gilt umso grösser der Anbieter umso günstiger das Angebot. Aus Erfahrung gibt es aber grosse Qualitätsunterschiede.
Hier eine Auswahl von Anbietern:
https://www.hostpoint.ch/
https://www.hoststar.ch/de
https://www.hetzner.de/
https://www.infomaniak.com/de
https://azure.microsoft.com/de-de/
https://cloud.google.com/
https://aws.amazon.com/de/
https://www.heroku.com/
https://zeit.co
https://www.rackspace.com/
https://www.digitalocean.com/
https://www.swisscom.ch/de/business/kmu/it-cloud.html
https://www.hosttech.ch
https://www.exoscale.com
https://www.cloudscale.ch/
## Entscheidungskriterien
Eine Auswahl an Kritierien zur Entscheidungsfindung:
**Managed vs. Unmanaged**
Die Angebote sind schwer zu differenzieren. Beispielsweise bietet HostPoint einen Server für [140 CHF / Monat](https://www.hostpoint.ch/managed-flex-server/managed-flex-server.html) an. Leistungsmässig erhält man das [Gleiche von Hetzner für 34.51 € / Monat](https://www.hetzner.de/managed-server).
Im ersten Angebot sind viele zusätzliche Dienstleistungen zur Verwaltung des Server enthalten und im Zweiten ist man selber für den Server verantwortlich. Schlussendlich ist es also eine Frage, ob die Kompetenzen zur Selbstverwaltung vorhanden sind.
**Hosted vs. Self-Hosted**
Jeden Dienst kann man grundsätzlich selber hosten und für jeden Dienst gibt es ein Anbieter, der ein Hosting-Angebot hat.
**Schweiz vs. Nicht-Schweiz**
Die Wahl des Standorts hat vor allem Auswirkung auf den Preis. Ob es auch regulatorisch Sinn macht, ist schwierig zu beantworten.
**Entwicklertools**
Commandlinetools und APIs für Entwickler bieten grundsätzlich nur wenige an.
## Empfehlungen
Falls der Standort frei Wählbar ist und sehr günstig fahren möchte ist **Hetzner** eine gute Wahl.
Muss der Standort Schweiz sein, ist **Exoscale** zu empfehlen.
Die beiden Anbieter überzeugen im Preis, Angebot und der Entwicklerfreundlichkeit.
+1
View File
@@ -0,0 +1 @@
[[Evaluation IaaS]]
+5
View File
@@ -0,0 +1,5 @@
[[Ansible]]
[[Security]]
[[Backup]]
[[Telefonie]]
[[Server]]
+6 -1
View File
@@ -11,4 +11,9 @@ Mehr Details zur Konfiguration sind hier verfügbar: https://janikvonrotz.ch/202
Aktuell exisiteren die foglenden Realms:
* [[mint-system.ch realm]]
## [[mint-system.ch Realm]]
Zur Erfassung des OAuth-Providers stehen diese Informationen zur Verfügung:
* Authorisierungs URL: https://login.mint-system.ch/auth/realms/mint-system.ch/protocol/openid-connect/auth
* Validierungs URL: https://login.mint-system.ch/auth/realms/mint-system.ch/protocol/openid-connect/userinfo
+9
View File
@@ -0,0 +1,9 @@
Die Mint System hat folgende Abrechnungsmodalitäten:
**Software: Programmierung/Entwicklung**
Umsatzanteil: 40%
Bewilligter SSS: 6,5%
**Unternehmensberatung**
Umsatzanteil: 60%
Bewilligter SSS: 5,9%
@@ -1,6 +1,6 @@
Das Unternehmen [TechSpell srl](http://www.techspell.eu/) entwickelt die Odoo App [Engineering & Lifecycle Management](https://apps.odoo.com/apps/modules/13.0/pdm/) sowie die Client- und Server Software [[LibrePLM]] zur Synchronisation der CAD-Daten mit Odoo.
Gemäss Herstellen können so automatisch Produkte und Dokumente mit dem Odoo Fertigungs-Modul abgeglichen werden. Produkrevisionen sowie die Erstellung des BOMs sind weitere Mermkale dieser Lösung
Gemäss Herstellen können so automatisch Produkte und Dokumente mit dem Odoo Fertigungs-Modul abgeglichen werden. Produkrevisionen sowie die Erstellung des BOMs sind weitere Mermkale dieser Lösung.
Hier die wichtigsten Links:
+2 -2
View File
@@ -6,8 +6,8 @@ Sequenz: Prefix "Nr. " und nächste Nummer 300
Rückerstattungs-Sequenz: Prefix "Nr. " und nächste Nummer 300
Typ: Verkäufe
Währung: CHF
Standard-Sollkonto: 3200 Handelserlöse
Standard-Habenkonto: 3200 Handelserlöse
Standard-Sollkonto: 3400 Dienstleistungserlöse
Standard-Habenkonto: 3400 Dienstleistungserlöse
Name: **Eingangsrechnungen**
Kurzzeichen: KFA
+9
View File
@@ -40,3 +40,12 @@ QWeb Reports können nicht auf einfache Art und Weise erstellt werden.
## Forward chatter messages
Cannot forward chatter messages.
## Soll-/Haben-Konten vertauscht
Konfiguriert man eine Regel im Modul Personalabrechnung wird im Tab Finanzen zuerst das Soll und dann das Haben angzeigt.
-> Changed order with Odoo Studio
In der Ansicht der Buchungszeilen erscheint ebenfalls zuerst das Soll und dann das Haben.
+4
View File
@@ -0,0 +1,4 @@
Das Unternehmen [OmniaSolutions](https://www.omniasolutions.website/) entwickelt die Odoo App [Product Lifecycle Managment](https://apps.odoo.com/apps/modules/13.0/pdm/). Das Modul ist [kostenpflichtig](https://www.omniasolutions.website/shop/category/odooplm-3).
Der Server Code ist auf GitHub: https://github.com/OmniaGit/odooplm/
Der PLM Cient ist auf Sourceforge verfügbar: https://sourceforge.net/projects/openerpplm/
+3 -1
View File
@@ -1 +1,3 @@
Für die Synchronisierung der Produktdaten von CAD-Programmen ins Odoo gibt es [[Engineering & Lifecycle Management]].
Für die Synchronisierung der Produktdaten von CAD-Programmen ins Odoo gibt es:
* [[Odoo Engineering & Lifecycle Management]]
* [[Odoo Product Lifecycle Management]]
+24
View File
@@ -0,0 +1,24 @@
# Verkaufsgruppen und Baugruppen
Wie werden die Verkaufsgruppen von Baugruppen unterschieden?
Odoo bildet die Produkte zur Fertigung in folgenden Schema ab.
![[Verkaufsgruppen und Baugruppen.png]]
![[assets/Verkaufsgruppen und Baugruppen.xml]]
**Beispiel Produkt Stuhl**
Stuhl A kann als Option auch mit Rollen ausgestattet werden.
Das Produkt Stuhl würde man mit dem Attribut Rollen (Ja/Nein) ausstatten.
Es entstehen bei der Produktkonfiguration zwei Varianten.
Entweder reicht ein einfacher Preisaufschlag auf das Attribut oder man bildet eine Stückliste für die Variante mit Rollen.
Im zweiten Fall erfasst man die Rollen als Produkt mit einem fixen Preis und fügt es der Produktvariante "Stuhl mit Rollen" hinzu.
Erfordert der Stuhl eine Fertigung, fügt man einen Arbeitsplan der Stückliste hinzu.
In der Kostenentwicklung des Stuhls werden Aufwands- und Materialkosten eingerechnet.
Der Käufer sieht schlussendlich nur den Stuhl A mit oder ohne Rollen zur Auswahl.
Die Unterscheidung der Gruppe lässt sich festlegen:
![[Stücklisten Typ.png]]
+1
View File
@@ -12,6 +12,7 @@ Odoo Features:
* [[Odoo Projekt]]
* [[Odoo Planung]]
* [[Odoo Widgets]]
* [[Odoo Verkäufe]]
Odoo Apps:
+1
View File
@@ -0,0 +1 @@
[[Code Sharing]]
+48 -3
View File
@@ -1,3 +1,9 @@
## Vorbereitung
Erstellen Kontorrent Bank.
## Buchungen
Wichtige Buchungssätze kurz und knapp beschrieben.
**Gutschriften Lieferant**
@@ -6,7 +12,7 @@ Konto: 6500 Verwaltungsaufwand
**Gebührenbelastung Zahlungsverkehr**
Konto:
**Lastschriftverfahren VISECA**
@@ -25,8 +31,7 @@ Angenommen es wurde eine Rechnung ohne MWST erstellt und verbucht.
Gutschrift für Rechnung erfassen:
Grund: Keine MWST gebucht
Konto: 3200
Konto: Bestehendes Konto
Journal: Ausgangsrechnungen (CHF)
Neue Rechnung erfassen:
@@ -38,9 +43,49 @@ MWST: MwSt. 7,7% ink. NRZ
**Einzahlung Darlehen**
Als GmbH können Gesellschafter von Privatvermögen einzahlen und verzinsen lassen. Die ESTV legt den Zinsatz fest.
Für jeder Mitarbeiter muss ein Darlehenskonto erfasst werden.
Vorher:
2160 Gesellschaftsverbindlichkeiten
Nachher:
2160 Darlehen Kurt GIsler
2161 Darlehen Janik von Rotz
2162 Darlehen Marco Roeleven
Buchung:
Habenkonto: 1022 Kontokorrent
Sollkonto: 2160 Darlehen
Betrag: 1500 CHF
**Auszahlung Darlehen**
Habenkonto: 2160 Darlehen
Sollkonto: 1022 Kontokorrent
**Einbehaltene Lohnauszahlungen**
Habenkonto: 1091 Lohndurchlaufkonto
Sollkonto: 2330 Kurzfristige Rückstellungen
**Rechnung in anderer Währung**
**Lohnabrechung**
Die Lohnbuchhaltung ist [[Prozesse Finanzen - Personalabrechnung#Buchhaltung]]|hier]] beschrieben.
## Mehrwersteuer
Allgemeine Informationen zur gibt es [[Mehrwertsteuer|hier]].
**Richtiger Satz auswählen**
6XXX -> MWST sonstiger Betriebsaufwand
4XXX -> MWST Normal
+19
View File
@@ -0,0 +1,19 @@
## Vorbereitung
Zur korrekten Abrechnung müssen die folgenden Konten vorhanden sein:
2270 AHV/ALV (Ausgleichskasse) Kurzfristige Verbindlichkeiten CHF
2271 UVG (Mobiliar) Kurzfristige Verbindlichkeiten CHF
2272 KTG (Mobiliar) Kurzfristige Verbindlichkeiten CHF
2273 BVG) Kurzfristige Verbindlichkeiten CHF
5701 AHV/ALV (Ausgleichskasse) Kurzfristige Verbindlichkeiten CHF
5702 UVG (Mobiliar) Kurzfristige Verbindlichkeiten CHF
5703 KTG (Mobiliar) Kurzfristige Verbindlichkeiten CHF
5074 BVG Kurzfristige Verbindlichkeiten CHF
Die Aufwandskonten sind ohne Steuern.
## Buchhaltung
Übersicht zur Lohnabrechnung auf [buchen.ch](https://www.buchen.ch/Handout-Modul-C2-Loehne-Lohnabrechnung-Personalaufwand.html).
+2 -1
View File
@@ -1 +1,2 @@
[[Prozesse Finanzen - Buchhaltung]]
[[Prozesse Finanzen - Buchhaltung]]
[[Prozesse Finanzen - Personalabrechnung]]
@@ -0,0 +1,5 @@
## Initialisierung
* Eröffnen Projekt für Personal
* Projektaufgaben bei Abwesenheitstypen hinterlegen
* Mitarbeiter-Hierarchie für Abwesenheitsansprüche festlegen
+10 -4
View File
@@ -1,11 +1,17 @@
Initialsierung:
## Initialsierung
* HR-Stammdaten vorbereiten.
* Erfassen Standardarbeitsvertrag
* Mitarbeiter mit Vertrag erfassen
* [[Lohnarten]] importieren
Erweiterungen installieren
## Erweiterungen installieren
* Payroll Accounting (hr_payroll_account)
Einstellungen festlegen:
* Payroll SEPA
## Einstellungen festlegen:
* Payroll SEPA
## Daten Importieren
* Erstellen Structure Type "Monaltiche Lohnabrechnung"
* Erstellen Lohnstruktur "Lohnabrechnung VORNAME NACHNAME" und speichern der ID
* Dokument `hr.salary.rule.xlsx` öffnen und *Vergütungsstruktur* die ID der Lohnstruktur einfügen.
* Unter Regeln die Datei `hr.salary.rule.xlsx` importieren.
+16 -3
View File
@@ -1,4 +1,4 @@
Einrichten Odoo Demoumgebung:
## Initialisierung
* Registration Domain und Installation Odoo
* Laden Datenbankvorlage
* Mail-Domäne gemäss Domain festlegen
@@ -7,5 +7,18 @@ Einrichten Odoo Demoumgebung:
* Benutzer registrieren
* Corporate Design umsetzen
Enterprise Apps:
* Odoo Cloud Notification Client (OCN) (ocn_client)
## Installation Apps
* Odoo Cloud Notification Client (OCN) (ocn_client)
* Web-Enterprise (web_enterprise)
## Login Mint System
* Bei [[Login Mint System#mint-system ch Realm]] die Applikation registrieren
* Benutzer mit Rolle `access` austatten
## Entfernen Demoumgebung
* Einträge aus Ansible Inventar löschen
* DNS-Einträge löschen
* OAuth Client URL von Liste *Valid Redirect URIs* entfernen
* Projektaufgaben bereinigen
+2 -1
View File
@@ -7,4 +7,5 @@ Dokumentation der Odoo Prozesse.
* [[Prozesse Odoo - App Verkläufe]]
* [[Prozesse Odoo - App Personalabrechnung]]
* [[Prozesse Odoo - App Finanzen]]
* [[Prozesse Odoo - App Zeiterfassung]]
* [[Prozesse Odoo - App Zeiterfassung]]
* [[Prozesse Odoo - App Abwesenheitszeiten]]
+1
View File
@@ -0,0 +1 @@
[[Web Application Firewall]]
+19
View File
@@ -0,0 +1,19 @@
## Namenskonvention
Server werden nach griechischen Götter nach folgendem Schema benannt: NAME.mint-system.com. Liste der griechischen Götter: https://en.vikidia.org/wiki/List_of_Greek_gods_and_goddesses.
## Liste
Liste aller Server im Einsatz der Mint System GmbH.
| Name | Funktion | DNS | Kommentar |
|-|-|-|-|
| Zeus | Dienste Mint System GmbH | zeus.mint-system.com | |
| Hades | Odoo Demo Umgebung | hades.mint-system.com | |
| Apollo | Dienste Apland GmbH | apollo.apland.ch | Abrechnung separat |
| Kronos | Backupserver | kronos.mint-system.com | |
| Hera | BigBlueButton | hera.mint-system.com | |
| Atlas | Monitoring | atlas.mint-system.com | |
| Eris | BigBlueButton | eris.mint-system.com | Deaktiviert |
| Hermes | Server Light Wing AG | hermes.mint-system.com | |
| Artmies | BigBlueButton | artemis.mint-system.com | ExoScale |
+12
View File
@@ -0,0 +1,12 @@
Nummer Bezeichnung Umgeleitet nach
+41 41 541 78 63 Hauptnummer ---
+41 41 541 78 64 Direkte Nummer Kurt 0+41 41 541 78 63 (Hauptnummber)
+41 41 541 78 67 Direkte Nummer Marco ---
+41 41 541 78 92 Direkte Nummer Janik ---
+41 41 541 78 93 Service-Nummer +41 41 541 78 63 (Hauptnummer)
Die App IPCall installieren:
Android: https://play.google.com/store/apps/details?id=ch.nexphone.ipcall.android&hl=de
iOS: https://apps.apple.com/ch/app/nexphone-ag-ipcall/id979545853
+14
View File
@@ -0,0 +1,14 @@
Webapplikationen der Mint System werden mit einer Web Application Firewall (WAF) geschützt. Dazu gehören interne Dienste sowie Odoo Installation von Kunden.
![[Web Application Firewall.png]]
Die WAF wird als Teil der Mint System Infrastruktur bereitgestellt. Der Infrastruktur-Code ist auf GitHub verfügbar.
Zum Einsatz kommt Der Webserver Nginx mit der ModSecurity. Der Webserver agiert als Reverse-Proxy und filtert externe Anfrage mit dem OWASP Core Rule Set.
-> [Einführung von Janik von Rotz
Laufende Integration](https://janikvonrotz.ch/2020/02/26/nginx-waf-with-modsecurity-and-owasp-crs/)
Der Einsatz WAF erfordert kontinuierliches Training. Die sogennanten False Positives, also von der WAF als erkannte Angriffs-Muster, die aber legitime Handlungen sind, müssen identifiziert werden.
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

+263
View File
@@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="www.draw.io" modified="2020-08-28T21:46:20.878Z" agent="5.0 (Macintosh)" etag="gro-KXdA8yDFPfcVjM5j" version="13.6.5">
<diagram id="mTbdij14t4nqV6YHanxz" name="Page-1">
<mxGraphModel dx="932" dy="637" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="63" value="" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;align=left;labelBackgroundColor=none;fillColor=none;dashed=1;arcSize=4;" parent="1" vertex="1">
<mxGeometry x="110" y="150" width="550" height="330" as="geometry" />
</mxCell>
<mxCell id="2" value="Roles" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="30" y="700" width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="3" value="" style="endArrow=none;dashed=1;html=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="20" y="680" as="sourcePoint" />
<mxPoint x="760" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4" value="" style="endArrow=none;dashed=1;html=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="20" y="740" as="sourcePoint" />
<mxPoint x="760" y="740" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5" value="docker" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="180" y="690" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="6" value="docker-network" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="280" y="690" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="7" value="Resources" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="30" y="760" width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="8" value="" style="endArrow=none;dashed=1;html=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="20" y="800" as="sourcePoint" />
<mxPoint x="760" y="800" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="9" value="handlers" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="180" y="750" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="10" value="tasks" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="320" y="750" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="12" value="templates" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="445" y="750" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="13" value="files" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="570" y="750" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="14" value="Playbook" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="30" y="640" width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="18" value="odoo.yml" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#DAE8FC;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="375" y="630" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="19" value="postgres" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="380" y="690" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="20" value="odoo" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;fillColor=#97D077;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="480" y="690" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="21" value="proxy" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;fillColor=#97D077;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="580" y="690" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="22" value="Invetories" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="30" y="530" width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="24" value="odoo" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="370" y="520" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="28" value="proxy" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="502.5" y="520" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="30" value="all" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;fillColor=#97D077;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="380" y="435" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="31" value="odoo external" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;fillColor=#97D077;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="290" y="365" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="33" value="&lt;div&gt;odoo internal&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="440" y="365" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="34" value="hades-odoo01" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;fillColor=#97D077;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="220" y="305" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="35" value="Global Vars" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="125" y="435" width="80" height="20" as="geometry" />
</mxCell>
<mxCell id="36" value="Group Vars" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="125" y="370" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=none;endFill=0;fontSize=14;align=left;" parent="1" source="36" target="36" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="38" value="Host Vars" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="125" y="310" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="39" value="hades-odoo02" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="367.5" y="305" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="40" value="zeus" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="502.5" y="305" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="41" value="hades-odoo01" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;fillColor=#97D077;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="220" y="245" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="42" value="Alias" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="130" y="250" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="43" value="hades-odoo02" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="367.5" y="245" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="44" value="zeus" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="502.5" y="245" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="45" value="hades.example.com" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;fillColor=#97D077;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="280" y="185" width="145" height="30" as="geometry" />
</mxCell>
<mxCell id="46" value="Hosts" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="130" y="190" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="48" value="zeus.example.com" style="rounded=1;whiteSpace=wrap;html=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="490" y="185" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="49" value="&lt;font color=&quot;#FFFFFF&quot;&gt;&lt;span style=&quot;background-color: rgb(0 , 0 , 0)&quot;&gt;&lt;font style=&quot;font-size: 12px&quot;&gt;&lt;b&gt;&lt;font style=&quot;font-size: 12px&quot; face=&quot;Courier New&quot;&gt;&amp;nbsp;ansible-playbook &lt;font color=&quot;#DAE8FC&quot;&gt;odoo.yml&lt;/font&gt; -i inventory/odoo -i inventory/proxy&lt;font color=&quot;#97D077&quot;&gt; -l hades-odoo01 -t odoo,&lt;/font&gt;&lt;font color=&quot;#F8CECC&quot;&gt;&lt;font color=&quot;#97D077&quot;&gt;proxy&lt;/font&gt; &lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=13;shadow=0;comic=0;" parent="1" vertex="1">
<mxGeometry x="90" y="582.5" width="700" height="25" as="geometry" />
</mxCell>
<mxCell id="50" value="Command" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="30" y="585" width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="51" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="45" target="41" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="230" y="185" as="sourcePoint" />
<mxPoint x="280" y="135" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="52" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="41" target="34" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="326.25" y="225" as="sourcePoint" />
<mxPoint x="287.5" y="255" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="53" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="45" target="43" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="287.5" y="285" as="sourcePoint" />
<mxPoint x="287.5" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="54" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="43" target="39" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="398.75" y="225" as="sourcePoint" />
<mxPoint x="435" y="255" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="55" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" source="34" target="31" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="435" y="285" as="sourcePoint" />
<mxPoint x="435" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="56" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="1" source="39" target="31" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="287.5" y="345" as="sourcePoint" />
<mxPoint x="327.5" y="375" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="57" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" source="31" target="30" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="435" y="345" as="sourcePoint" />
<mxPoint x="382.5" y="375" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="58" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="1" source="33" target="30" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="355" y="405" as="sourcePoint" />
<mxPoint x="420" y="435" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="59" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="40" target="33" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="497.5" y="405" as="sourcePoint" />
<mxPoint x="442.5" y="445" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="60" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="44" target="40" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="570" y="345" as="sourcePoint" />
<mxPoint x="475" y="375" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="61" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="48" target="44" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="570" y="285" as="sourcePoint" />
<mxPoint x="570" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="65" value="" style="endArrow=classic;html=1;fontSize=14;align=left;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="30" target="24" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="421" y="510" as="sourcePoint" />
<mxPoint x="341" y="530" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="66" value="" style="endArrow=none;dashed=1;html=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="15" y="500" as="sourcePoint" />
<mxPoint x="755" y="500" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="67" value="" style="endArrow=none;html=1;fontSize=13;align=left;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;endFill=0;" parent="1" source="5" target="18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="240" y="690" as="sourcePoint" />
<mxPoint x="290" y="640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="68" value="" style="endArrow=none;html=1;fontSize=13;align=left;entryX=0.25;entryY=1;entryDx=0;entryDy=0;endFill=0;" parent="1" target="18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="330" y="690" as="sourcePoint" />
<mxPoint x="425" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="69" value="" style="endArrow=none;html=1;fontSize=13;align=left;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;endFill=0;" parent="1" source="19" target="18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="700" as="sourcePoint" />
<mxPoint x="425" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="70" value="" style="endArrow=none;html=1;fontSize=13;align=left;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;endFill=0;" parent="1" source="20" target="18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="430" y="700" as="sourcePoint" />
<mxPoint x="425" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="71" value="" style="endArrow=none;html=1;fontSize=13;align=left;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;endFill=0;" parent="1" source="21" target="18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="700" as="sourcePoint" />
<mxPoint x="447.5" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="73" value="" style="endArrow=none;html=1;fontSize=13;align=left;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endFill=0;" parent="1" target="24" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="380" y="590" as="sourcePoint" />
<mxPoint x="385" y="670" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="74" value="" style="endArrow=none;html=1;fontSize=13;align=left;entryX=0.614;entryY=0.3;entryDx=0;entryDy=0;endFill=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="28" target="49" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="600" as="sourcePoint" />
<mxPoint x="425" y="570" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="75" value="" style="endArrow=none;html=1;fontSize=13;align=left;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endFill=0;exitX=0.271;exitY=0.7;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="49" target="18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="600" as="sourcePoint" />
<mxPoint x="425" y="570" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+103
View File
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="www.draw.io" modified="2020-08-25T07:51:10.877Z" agent="5.0 (Macintosh)" etag="tPdMJ7wKm5yoaBqVuCdC" version="13.6.5">
<diagram id="PLkVtxZgQKPDNItmtKoR" name="Page-1">
<mxGraphModel dx="1412" dy="817" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4" target="7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="3" value="Konfiguration" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="2" vertex="1" connectable="0">
<mxGeometry x="-0.125" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="4" value="Produkt" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="294" y="110" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="8" target="7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="470" y="320" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="6" value="Zuweisen" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="5" vertex="1" connectable="0">
<mxGeometry x="0.08" y="-4" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7" value="Produktvariante" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="294" y="250" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="8" value="Stückliste" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="294" y="360" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="9" value="Attribute" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="520" y="110" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="12" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" parent="1" source="21" target="7" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="100" y="370" as="sourcePoint" />
<mxPoint x="150" y="320" as="targetPoint" />
<Array as="points">
<mxPoint x="250" y="490" />
<mxPoint x="250" y="280" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="13" value="Enthalten" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="12" vertex="1" connectable="0">
<mxGeometry x="0.0592" y="-4" relative="1" as="geometry">
<mxPoint x="-4" y="28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="14" value="" style="endArrow=classic;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="520" y="139.9" as="sourcePoint" />
<mxPoint x="414" y="139.9" as="targetPoint" />
<Array as="points">
<mxPoint x="510" y="139.9" />
<mxPoint x="510" y="139.9" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="15" value="Zuweisen" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="14" vertex="1" connectable="0">
<mxGeometry x="-0.2347" y="3" relative="1" as="geometry">
<mxPoint y="-13" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="16" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;dashed=1;" parent="1" source="18" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="622" y="310" as="sourcePoint" />
<mxPoint x="417" y="390" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="17" value="Zuweisen" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="16" vertex="1" connectable="0">
<mxGeometry x="0.08" y="-4" relative="1" as="geometry">
<mxPoint y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="18" value="Arbeitsplan" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="510" y="360" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="19" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="21" target="8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="20" value="Zuweisen" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="19" vertex="1" connectable="0">
<mxGeometry x="0.36" y="2" relative="1" as="geometry">
<mxPoint x="2" y="7" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="21" value="Komponentenliste" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="294" y="460" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="22" value="Fertigung" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="550" y="560" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="23" value="Verkauf" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="550" y="520" width="80" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

-4
View File
@@ -1,4 +0,0 @@
Zur Erfassung des OAuth-Providers stehen diese Informationen zur Verfügung:
* Authorisierungs URL: https://login.mint-system.ch/auth/realms/mint-system.ch/protocol/openid-connect/auth
* Validierungs URL: https://login.mint-system.ch/auth/realms/mint-system.ch/protocol/openid-connect/userinfo