Spring Boot Projekt zur Verwaltung und Ausführung von Ansible-Playbooks in lokalen Repositories.
Die Anwendung startet via
mvn spring-boot:runund bietet:
- Repo-Verwaltung (Konfiguration: application.yaml
- Git-Operationen:
com.example.deployer.frontend.GitController - Auflisten von Repositories:
com.example.deployer.frontend.RepoController - Deployment-Workflow und Streaming-Ausgabe:
com.example.deployer.frontend.DeploymentController - Playbook-Ausführung:
com.example.deployer.actions.PlaybookService
Konfiguration der Repos erfolgt in application.yaml unter dem Prefix git und wird durch com.example.deployer.configuration.GitConfig geladen.
- Java 21
- Maven (Wrapper im Projekt vorhanden) — siehe pom.xml
- Ansible auf dem Host, wenn Playbooks ausgeführt werden sollen
Projekt bauen und starten:
mvn clean package
java -jar target/deployer-0.0.1-SNAPSHOT.jar- Repos anzeigen → /repos
- Playbooks anzeigen → /api/{repoId}/playbooks
- Deployment anlegen → /api/{repoId}/deployment
- Playbook hinzufügen → /api/{repoId}/deployment/{id}
- Deployment starten → /api/{repoId}/rundeployment/{id}
Zuerst alle konfigurierten Repos abrufen:
curl -X GET "http://localhost:8080/repos"Beispielantwort:
[
{
"id": "repo1",
"path": "../repo1",
"playbooksDir": "playbooks",
"inventoriesDir": "inventory"
},
{
"id": "repo2",
"path": "../repo2",
"playbooksDir": "ansible/playbooks",
"inventoriesDir": "ansible/inventories"
}
]Nun die Playbooks von repo1 auflisten:
curl -X GET "http://localhost:8080/api/repo1/playbooks"Beispielantwort:
["apt_update", "mariadbcluster", "k3s"]Ein Deployment für repo1 erstellen:
curl -X POST "http://localhost:8080/api/repo1/deployment" \
-d "name=MeinDeployment"Beispielantwort:
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "MeinDeployment",
"repoId": "repo1"
}Ein Playbook (site) mit einem Inventory (dev) hinzufügen:
curl -X PUT "http://localhost:8080/api/repo1/deployment/123e4567-e89b-12d3-a456-426614174000" \
-d "playbook=apt_update" \
-d "inventory=dev" \
-d "tags=setup" \
-d "skipTags=tests"Beispielantwort:
{
"status": "added",
"deploymentId": "123e4567-e89b-12d3-a456-426614174000",
"repoId": "repo1"
}Das Deployment starten und die Ausgabe streamen:
curl -X GET "http://localhost:8080/api/repo1/rundeployment/123e4567-e89b-12d3-a456-426614174000"Ausgabe: Stream der Ansible‑Playbook‑Ausführung (z. B. TASK [setup] ... ok).