- 파이썬을 사용하여 인프라를 자동화하는 도구
- 단일 서버에서 수천 대의 서버까지 빠르게 확장 가능
- 임시 명령 실행, 서비스 배포, 구성 관리 등에 적합
pyinfra를 사용해야 하는 이유
- 수천 개의 대상에 대해 예측 가능한 성능으로 초고속 실행 가능
- 실시간 stdin/stdout/stderr 출력(
-vvv)으로 즉각적인 디버깅 가능 - 변경 사항 적용 전에 diff와 dry run을 지원하여 멱등성 제공( Idempotent operations)
- 전체 Python 패키지 생태계로 확장성 제공
- SSH가 가능한 모든 기기에서 에이전트 없이 실행 가능
- Docker, Terraform, Vagrant 등과 같은 커넥터와 통합됨
빠른 시작
pip install pyinfra명령으로 pyinfra 설치- SSH를 통해 명령 실행 가능
pyinfra my-server.net exec -- echo "hello world"
- Docker, 로컬 머신 및 기타 커넥터 대상 지정 가능
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- 명령 실행 외에도 작업을 사용하여 상태 정의 가능
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- 이를
deploy.py와 같은 Python 파일로 저장하고 실행 가능 - 인벤토리, 작업 및 Python 코드를 결합하여 모든 것을 배포할 수 있음
자세한 내용은 시작 가이드, 작업 사용법 가이드, 인벤토리 및 데이터 사용법, 전역 인수 및 CLI 사용법을 참조하거나 문서화된 예제를 확인할 것.
GN⁺의 의견
- 배포 도구로서 안전성과 통제력이 중요한데, 인프라 관리 도구로서의 기능에 초점이 맞추어져 있어 배포 프로세스에서 문제가 생길 가능성이 있음
- pyinfra 자체는 배포 베스트 프랙티스를 강제하지 않기 때문에 팀 내에서 별도로 규칙을 정하고 관리해야 함
- 언어로 Python을 사용하므로 Python 생태계를 활용할 수 있고 개발자에게 친숙한 것은 장점이지만, 다른 일반적인 배포 도구에 비해 진입 장벽이 있음
- 단순하고 유연한 배포 시나리오에 적합한 도구로 보이며, 복잡한 엔터프라이즈급 배포에는 Ansible, Puppet 등의 성숙한 도구가 더 적합할 수 있음
- Terraform이나 Pulumi 같은 IaC 도구와 통합되는 점은 좋으나, 이들만으로도 불가능한 작업이 많지 않은지 의문임