Workspaces¶
Was auch immer Sie mit Polycrate bauen passiert in einem Workspace. Der Workspace enthält Konfiguration, Credentials und Lifecycle-Artefakte, die beim Ausführen von Blöcken entstehen. Ein Workspace ist im Grunde genommen nur ein Ordner auf Ihrer Festplatte der mit Hilfe von git oder anderen Mechanismen versioniert und synchronisiert werden kann. Die sog. Workspace Directory kann beim Ausführen von Polycrate mit dem Flag --workspace ~/.polycrate/workspaces/demo, bzw. -w ~/.polycrate/workspaces/demo festgelegt werden.
Info
Standardmäßig nimmt Polycrate an, dass der aktuelle Pfad ($PWD), von dem Polycrate ausgeführt wurde, ein Workspace ist.
Der Workspace kann mit Hilfe der Workspace-Konfiguration zusammengestellt werden.
Workspace Directory Layout¶
Ein Workspace folgt einer definierten Verzeichnisstruktur, die automatisch beim Initialisieren angelegt wird:
graph TB
WS[my-workspace/] --> Config[workspace.poly]
WS --> DF[Dockerfile.poly optional]
WS --> PrivKey[id_rsa]
WS --> PubKey[id_rsa.pub]
WS --> Blocks[blocks/]
WS --> Logs[.logs/ optional]
WS --> Arts[artifacts/]
WS --> Inv[inventory.yml optional]
WS --> Kube[kubeconfig.yml optional]
Blocks --> B1[block-1/]
Blocks --> B2[block-2/]
B1 --> BP1[block.poly]
B1 --> CL1[CHANGELOG.poly]
B1 --> RM1[README.md]
B1 --> T1[templates/]
Logs --> Date[2025-01-30/]
Date --> TXLog[uuid.yml]
Arts --> BlockArts[blocks/]
BlockArts --> BA1[block-1/]
BA1 --> AInv[inventory.yml]
BA1 --> AKube[kubeconfig.yml]
BA1 --> Cache[hosts_cache.json] Wichtige Verzeichnisse und Dateien¶
Workspace-Root: - workspace.poly - Workspace-Konfiguration (Pflicht) - secrets.poly - Optional: Sensitive Block-Konfiguration (verschlüsselt als secrets.poly.age) - .workspace-encrypted - Encryption Marker (zeigt an dass Workspace verschlüsselt wird) - Dockerfile.poly - Optional: Custom Docker-Image für den Workspace - id_rsa / id_rsa.pub - SSH-Schlüsselpaar (automatisch generiert mit polycrate workspace init --with-ssh-keys, sollten nach artifacts/secrets/ migriert werden) - inventory.yml - Optional: Globales Ansible-Inventory - kubeconfig.yml - Optional: Globale Kubernetes-Konfiguration (sollte nach artifacts/secrets/ migriert werden)
blocks/ - Alle Blocks des Workspaces - Jeder Block hat sein eigenes Verzeichnis - block.poly definiert Block-Konfiguration und Actions - CHANGELOG.poly dokumentiert Versionshistorie - README.md beschreibt den Block - templates/ enthält Jinja2-Templates für Ansible
.logs/ - Optional: Event Handler Logs - Wird primär von Event-Handlers verwendet - Transaction-Logging ist standardmäßig deaktiviert - Falls aktiviert: Logs nach Datum organisiert in .logs/YYYY-MM-DD/uuid.yml
artifacts/ - Von Blocks generierte Artifacts - secrets/ - Verschlüsselte sensible Artifacts (NEU) - Workspace-weite Secrets: kubeconfig.yml, id_rsa, id_rsa.pub - Block-spezifische Secrets: secrets/BLOCKNAME/* - Verschlüsselte Dateien enden auf .age - blocks/BLOCKNAME/ - Block-spezifische Artifacts - inventory.yml - Generiertes oder geerbtes Ansible-Inventory - kubeconfig.yml - Generierte oder geerbte Kubernetes-Config - hosts_cache.json - SSH-Host-Cache für schnellere Verbindungen
Git-Integration
Ein Workspace kann (und sollte) ein Git-Repository sein. Polycrate kann automatisch Commits erstellen und mit Remote-Repositories synchronisieren. Konfigurieren Sie dies in der workspace.poly unter sync_options.
Secrets verschlüsseln
Polycrate bietet eingebaute Verschlüsselung für sensible Daten. Siehe Workspace-Verschlüsselung für Details zum Verschlüsseln von secrets.poly und Artifacts in artifacts/secrets/.