icurfer edc4170bf0
All checks were successful
Build And Test / build-and-push (push) Successful in 2m59s
v0.0.11
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 02:10:52 +09:00
2025-11-21 15:47:00 +09:00
2025-10-13 14:34:52 +09:00
2025-10-13 14:34:52 +09:00
2025-09-29 00:00:52 +09:00
2026-01-24 02:10:52 +09:00
2025-11-21 05:12:24 +00:00
2026-01-17 00:04:15 +09:00
2025-05-21 08:23:35 +09:00
2026-01-24 02:10:52 +09:00

msa-django-ansible

Ansible Playbook 관리 및 실행을 위한 Django REST API 서비스입니다.

기술 스택

분류 기술
Framework Django 4.2.14
API Django REST Framework 3.15.2
Auth SimpleJWT 5.5.0 (RS256)
Automation Ansible 10.7.0, ansible-core 2.17.7
Database MySQL (mysqlclient 2.2.7)
Docs drf-yasg 1.21.10
Server Gunicorn 20.1.0

주요 기능

  • Playbook 관리: YAML 형식 Playbook/Inventory 저장
  • 작업 실행: SSH 키 기반 Ansible 실행
  • 상태 추적: pending, running, success, failed, error
  • 결과 로깅: 실행 결과 및 로그 저장
  • JWT 인증: msa-django-auth와 연동

API 엔드포인트

Method Endpoint 설명
GET /api/ansible/tasks/ 작업 목록 조회
POST /api/ansible/tasks/ 새 작업 생성
GET /api/ansible/tasks/<id>/ 작업 상세 조회
PUT/PATCH /api/ansible/tasks/<id>/ 작업 수정
DELETE /api/ansible/tasks/<id>/ 작업 삭제
POST /api/ansible/tasks/<id>/run/ 작업 실행

API 문서

  • Swagger UI: /swagger/
  • ReDoc: /redoc/

데이터 모델

AnsibleTask

필드 타입 설명
name CharField 작업 이름
author_email CharField 작성자 이메일
playbook_content TextField Playbook YAML
inventory_content TextField Inventory 내용
status CharField 작업 상태
output TextField 실행 결과
created_at DateTimeField 생성 시간

환경 변수

# Django
DEBUG=1
SECRET_KEY=your-secret-key

# Database
SQL_ENGINE=django.db.backends.mysql
SQL_HOST=localhost
SQL_USER=user
SQL_PASSWORD=password
SQL_DATABASE=msa-demo
SQL_PORT=3306

# Auth 서버
AUTH_APP_URL=http://192.168.0.202:8000

# JWT
ISTIO_JWT=1

실행 방법

개발 서버

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8888

Docker

docker build -t msa-django-ansible .
docker run -p 8000:8000 --env-file .env.dev msa-django-ansible

작업 실행 흐름

1. 클라이언트가 POST /api/ansible/tasks/<id>/run/ 요청
2. Auth 서버에서 SSH 키 조회
3. 임시 파일로 playbook, inventory, SSH 키 생성
4. ansible-playbook 명령 실행
5. 결과를 output 필드에 저장
6. 상태를 success/failed/error로 업데이트

연동 서비스

  • msa-django-auth: JWT 인증, SSH 키 관리
Description
No description provided
Readme 177 KiB
Languages
Python 95.7%
Dockerfile 4.3%