Zum Inhalt springen
Odinex Cloud
Konzepte

Composer (Stacks)

Beschreiben Sie mehrere Ressourcen in einem Dokument, prüfen Sie Plan und Kosten und erstellen oder ändern Sie dann alles in einem Schritt.

Ein Stack ist ein Dokument, das die Ressourcen eines Setups an einem Standort beschreibt: Netzwerke, ein NAT-Gateway, Server, Volumes, Firewalls, Load Balancer und IP-Adressen. Odinex vergleicht das Dokument mit dem, was der Stack bereits betreibt, zeigt Ihnen einen Plan mit allem, was erstellt, geändert oder gelöscht wird, samt den monatlichen Kosten, und wendet ihn in der richtigen Reihenfolge an. Die Ressourcen sind ganz normale Ressourcen: Sie erscheinen wie alle anderen in der Console, der API und der CLI.

Das Dokument

Jede Ressource hat einen key, der im Dokument eindeutig ist, und einen type. Ressourcen verweisen über ihren Key aufeinander:

{
  "resources": [
    { "key": "net", "type": "network", "ip_range": "10.0.0.0/16" },
    { "key": "egress", "type": "nat_gateway", "network": "net" },
    { "key": "web-fw", "type": "firewall",
      "rules": [{ "direction": "in", "protocol": "tcp", "port": "80", "source_ips": ["0.0.0.0/0", "::/0"] }] },
    { "key": "web", "type": "server", "server_type": "s2", "image": "ubuntu-24.04", "count": 3,
      "public_ipv4": false, "public_ipv6": false, "networks": ["net"], "firewalls": ["web-fw"] },
    { "key": "lb", "type": "load_balancer", "load_balancer_type": "lb11", "network": "net", "targets": ["web"],
      "services": [{ "protocol": "http", "listen_port": 80, "destination_port": 80,
                     "health_check": { "protocol": "http", "port": 80 } }] }
  ]
}
TypWichtigste Felder
networkip_range
nat_gatewaynetwork
serverserver_type, image, count (bis zu 20), public_ipv4 / public_ipv6 (Standard true), networks, firewalls, placement_group, backups, ssh_keys, user_data
volumesize (GB), server
firewallrules
load_balancerload_balancer_type, algorithm, services, targets (Server-Keys), network
elastic_ipserver (ein Server ohne öffentliche Adressen, siehe Elastic IPs)
floating_ipserver
placement_grouppolicy: spread (Anti-Affinität, der Standard) oder affinity

Jede Ressource kann außerdem einen name (standardmäßig der Key) und labels haben. Ein Server mit count größer als 1 wird zu entsprechend vielen Servern. Ein Stack umfasst höchstens 100 Ressourcen. Unbekannte Felder werden abgelehnt, damit ein Tippfehler nicht stillschweigend eine Einstellung verschluckt.

Erst planen, dann anwenden

odx stack create --name shop --location fra1 --file stack.json   # YAML works too; - reads stdin
odx stack plan shop          # what would change and what it costs; exits 1 if there are errors
odx stack apply shop --wait  # do it

Über die API: POST /v1/stacks (name, location, spec), dann POST /v1/stacks/{id}/plan und POST /v1/stacks/{id}/apply.

Der Plan listet jede Ressource mit ihrer Aktion (create, update, delete oder keep), den Änderungen und ihrem Monatspreis auf, dazu die monatlichen Kosten des Stacks vorher und nachher. Fehler verhindern das Anwenden: unbekannte Verweise, Typen oder Images, Namenskonflikte oder Änderungen, die sich nicht direkt vornehmen lassen.

Beim Anwenden werden die Ressourcen in der Reihenfolge ihrer Abhängigkeiten (Netzwerke vor Servern, Server vor Load Balancern) über die normale API erstellt; die üblichen Prüfungen gelten also weiterhin: Ihr Guthaben, Ihre Limits und die Verfügbarkeit am Standort. Der Status des Stacks zeigt applying, dann applied oder failed mit den Gründen.

Einen Stack ändern

Speichern Sie ein neues Dokument (odx stack update shop --file stack.json oder PUT /v1/stacks/{id}), erstellen Sie den Plan und wenden Sie ihn an. Diese Änderungen werden direkt vorgenommen:

  • Firewall-Regeln und -Ziele;
  • Services, Ziele und Netzwerk eines Load Balancers;
  • Vergrößern eines Volumes;
  • Verschieben einer Elastic IP oder Floating IP auf einen anderen Server;
  • Ändern von count eines Servers (Server werden hinzugefügt oder entfernt).

Andere Änderungen, etwa Typ oder Image eines Servers, lassen sich nicht direkt vornehmen; der Plan meldet sie als Fehler. Ändern Sie diese am Server selbst, oder entfernen Sie die Ressource aus dem Dokument und fügen Sie eine neue hinzu.

Einen Stack löschen

odx stack delete shop (DELETE /v1/stacks/{id}) löscht den Stack und alle seine Ressourcen. Mit --keep-resources (?keep_resources=true) wird nur der Stack gelöscht, und die Ressourcen bleiben als normale Ressourcen erhalten.

Ihr aktuelles Setup als Graph

odx stack topology --location fra1 (GET /v1/stacks/topology?location=fra1) liefert die Ressourcen, die Sie an einem Standort bereits haben, zusammen mit den Verbindungen zwischen ihnen (Netzwerke, Anbindungen, Ziele von Load Balancern). Darauf baut ein visueller Stack-Editor in der Console auf.

Auf dieser Seite