🔗 Integrationen¶
Polycrate integriert sich nahtlos mit einer Vielzahl von Tools und Plattformen für Infrastructure-as-Code, Configuration Management, Container-Orchestrierung und Cloud-Provisioning. Diese Integrationen ermöglichen es Ihnen, komplexe Infrastrukturen und Anwendungen mit einem einheitlichen Workflow zu verwalten.
Übersicht¶
graph TB
Polycrate[Polycrate] --> Ansible[Ansible]
Polycrate --> Kubernetes[Kubernetes]
Polycrate --> Terraform[Terraform]
Polycrate --> Docker[Docker & Docker Compose]
Polycrate --> SSH[SSH]
Polycrate --> Git[Git]
Ansible -->|provisioniert| Hosts[Linux-Hosts]
Ansible -->|deployt| DockerApps[Docker-Apps]
Ansible -->|deployt| K8sApps[Kubernetes-Apps]
Kubernetes -->|verwaltet| Clusters[K8s-Cluster]
Kubernetes -->|deployt mit| Helm[Helm-Charts]
Terraform -->|provisioniert| Cloud[Cloud-Infrastruktur]
Terraform -->|verwaltet| Resources[Ressourcen]
Docker -->|deployt| Containers[Container]
Docker -->|orchestriert| Stacks[Docker-Compose-Stacks]
SSH -->|verbindet mit| Hosts
Git -->|synchronisiert| Workspace[Workspace]
style Polycrate fill:#e1f5ff
style Ansible fill:#f0e1ff
style Kubernetes fill:#ffe1e1
style Terraform fill:#fff4e1 Verfügbare Integrationen¶
Configuration Management & Deployment¶
Ansible¶
Die primäre Integration für Configuration Management und Deployment. Polycrate bietet erstklassigen Support für Ansible-Playbooks als Actions.
Features: - Ansible-Playbooks als Actions ausführen - Automatische Inventory-Integration - Snapshot-Variablen als Ansible-Extra-Vars - SSH-Key-Management - Framework-Rollen für häufige Aufgaben - Kubernetes-Deployment mit Ansible - Docker-Compose-Management mit Ansible
Anwendungsfälle: - Linux-Server provisionieren und konfigurieren - Applikationen deployen (Docker, K8s, bare-metal) - Configuration-Drift beheben - Multi-Host-Orchestrierung
Container & Orchestration¶
Kubernetes¶
Native Integration mit Kubernetes-Clustern für Application-Deployment und Cluster-Management.
Features: - Kubeconfig-Management pro Block - Helm-Chart-Integration - Namespace-Verwaltung - Ingress-Konfiguration - Persistence-Management - Monitoring-Integration - Multi-Cluster-Support
Anwendungsfälle: - Kubernetes-Applikationen deployen - Helm-Charts installieren und upgraden - Cluster-Konfiguration verwalten - Kubernetes-Manifeste anwenden
→ Zur Kubernetes-Dokumentation
Docker & Docker Compose¶
Integration mit Docker für Container-Management und Docker-Compose-Stacks.
Features: - Docker-Container starten/stoppen - Docker-Compose-Stacks deployen - Image-Building - Registry-Integration - Container-Netzwerke verwalten
Anwendungsfälle: - Docker-Compose-Stacks auf Servern deployen - Container-basierte Applikationen verwalten - Multi-Container-Setups orchestrieren
→ Zu Docker-Compose-Beispielen
Infrastructure Provisioning¶
Terraform¶
Integration mit Terraform für Infrastructure-as-Code und Cloud-Provisioning.
Features: - Terraform-Actions in Blocks - State-Management in Artifacts - Multi-Cloud-Support (AWS, Azure, GCP, etc.) - Terraform-Output als Inventory - Plan/Apply/Destroy-Workflows
Anwendungsfälle: - Cloud-Infrastruktur provisionieren - Kubernetes-Cluster erstellen - Netzwerke und VPCs verwalten - DNS-Records verwalten
Remote Access & Connectivity¶
SSH¶
Integration mit SSH für direkten Zugriff auf Hosts und Ansible-Verbindungen.
Features: - Automatisches SSH-Key-Management - SSH-Shortcut: polycrate ssh HOSTNAME - SSH-Agent-Integration - Passphrase-Support ⚠️ Experimental - SSH-Control-Master für persistente Verbindungen - Host-Cache für Performance
Anwendungsfälle: - Schneller Zugriff auf Ansible-Inventory-Hosts - Debugging auf Remote-Servern - Manuelle Operationen auf Hosts
Version Control¶
Git¶
Native Git-Integration für Workspace-Synchronisierung und Versionierung.
Features: - Automatische Commits nach Actions - Sync mit Remote-Repositories - Branch-Management - Commit-Messages mit Transaction-IDs - Multi-Branch-Workflows
Anwendungsfälle: - Workspace-Änderungen versionieren - Team-Collaboration - Audit-Trail für Infrastruktur-Änderungen - GitOps-Workflows
Integration-Matrix¶
| Tool | Primary Use Case | Action Type | Config Format | State Management |
|---|---|---|---|---|
| Ansible | Config Management | Playbook | YAML | Idempotent |
| Kubernetes | Container Orchestration | Kubectl/Helm | YAML | Declarative |
| Terraform | Infrastructure Provisioning | Scripts | HCL | State Files |
| Docker Compose | Multi-Container Apps | Ansible/Script | YAML | Imperative |
| SSH | Remote Access | Direct | - | Stateless |
| Git | Version Control | Automatic | - | Commits |
Typische Integration-Patterns¶
Pattern 1: Terraform → Ansible¶
graph LR
TF[Terraform-Block] -->|provisioniert| Cloud[Cloud-VMs]
TF -->|generiert| Inv[Inventory-Artifact]
Inv -->|genutzt von| Ansible[Ansible-Block]
Ansible -->|konfiguriert| Cloud - Terraform-Block provisioniert Infrastruktur (VMs, Netzwerke)
- Terraform-Output generiert Ansible-Inventory
- Ansible-Block nutzt generiertes Inventory für Configuration
Beispiel:
# Block: infrastructure
name: infrastructure
kind: generic
actions:
- name: provision
script:
- terraform apply -auto-approve
- terraform output -json | python3 scripts/to-inventory.py > $ARTIFACTS/inventory.yml
# Block: configure-servers
name: configure-servers
kind: linuxapp
inventory:
from: infrastructure # Nutzt generiertes Inventory
actions:
- name: install
playbook: playbooks/setup-servers.yml
Pattern 2: Kubernetes-Cluster → Apps¶
graph LR
Cluster[Cluster-Block] -->|erstellt| K8s[K8s-Cluster]
Cluster -->|generiert| KC[Kubeconfig-Artifact]
KC -->|genutzt von| App1[App-Block 1]
KC -->|genutzt von| App2[App-Block 2]
App1 -->|deployt zu| K8s
App2 -->|deployt zu| K8s - Cluster-Block erstellt Kubernetes-Cluster
- Kubeconfig wird als Artifact gespeichert
- App-Blocks erben Kubeconfig und deployen zu Cluster
Beispiel:
# Block: prod-cluster
name: prod-cluster
kind: k8scluster
actions:
- name: create
script:
- eksctl create cluster -f cluster.yml
- eksctl utils write-kubeconfig --cluster=prod > $ARTIFACTS/kubeconfig.yml
# Block: my-app
name: my-app
kind: k8sapp
kubeconfig:
from: prod-cluster # Nutzt Kubeconfig vom Cluster-Block
actions:
- name: install
playbook: playbooks/deploy-helm.yml
Pattern 3: Multi-Stage-Deployment¶
graph TB
Start[Start] --> TF[Terraform: Provision]
TF --> Inv[Generate Inventory]
Inv --> Ansible[Ansible: Configure]
Ansible --> Docker[Deploy Docker Compose]
Docker --> Verify[Verify Deployment] Komplettes Deployment mit mehreren Integrationen in einem Workflow:
# In workspace.poly
name: my-workspace
blocks:
- name: infrastructure
# ...
- name: configure-servers
# ...
- name: my-app
# ...
workflows:
- name: deploy-complete-stack
steps:
- name: provision-infrastructure
block: infrastructure
action: provision # Terraform
- name: generate-inventory
block: infrastructure
action: generate-inventory
- name: configure-servers
block: configure-servers
action: install # Ansible
- name: deploy-application
block: my-app
action: deploy # Docker Compose via Ansible
Best Practices¶
1. Separation of Concerns¶
Trennen Sie Infrastructure, Configuration und Application in separate Blocks:
infrastructure-block (Terraform)
└── generates inventory
↓
configure-block (Ansible)
└── prepares servers
↓
app-block (Docker Compose / K8s)
└── deploys application
2. Artifact-basierte Kommunikation¶
Nutzen Sie Artifacts für die Kommunikation zwischen Integrationen:
- Terraform → Inventory-Artifact → Ansible
- Kubernetes-Setup → Kubeconfig-Artifact → App-Deployment
- Config-Generator → Config-Files → Application
3. Idempotenz¶
Alle Integrationen sollten idempotent sein: - Ansible-Playbooks: Nutzen Sie state: present, nicht imperative Commands - Kubernetes: Nutzen Sie kubectl apply, nicht create - Terraform: Immer mit State-Management
4. Error-Handling¶
Implementieren Sie Rollback-Strategien in Workflows:
workflows:
- name: deploy-with-rollback
steps:
- name: backup
block: database
action: backup
- name: deploy
block: app
action: install
allow_failure: false # Stop bei Fehler
- name: verify
block: app
action: health-check
# Bei Fehler: Rollback
- name: rollback
block: app
action: rollback
Nächste Schritte¶
Erkunden Sie die einzelnen Integrationen im Detail:
- Für Configuration Management: Ansible-Dokumentation
- Für Container-Orchestration: Kubernetes-Dokumentation
- Für Infrastructure Provisioning: Terraform-Dokumentation
- Für Remote-Access: SSH-Dokumentation
Oder lernen Sie, wie Sie Workflows erstellen, die mehrere Integrationen orchestrieren.