CI/CD 워크플로에서 SSH로 원격 서버에 명령을 실행하는 GitHub Action
pyinfra-dev/pyinfra
Python으로 정의한 작업과 셸 명령을 SSH 서버, 로컬 머신, Docker 컨테이너에서 실행하는 인프라 자동화 도구입니다.
대체할 수 있는 제품:Ansible
- 스타
- 6,044
- 포크
- 558
- 열린 이슈
- 166
- 마지막 커밋
- 7일 전
어떤 프로젝트인가요?
pyinfra는 YAML 대신 Python으로 서버 구성과 배포 로직을 작성할 수 있는 인프라 자동화 도구입니다. 여러 호스트에서 일회성 셸 명령을 실행하거나 패키지 설치, 파일 관리 같은 선언형 작업을 정의할 수 있습니다. pyinfra는 이를 셸 명령으로 변환해 대상에서 실행합니다.
대상은 SSH로 연결하는 원격 서버, 로컬 머신 또는 Docker 컨테이너일 수 있습니다. 작업은 멱등성을 보장하므로 적용하기 전에 diff와 dry run으로 변경 사항을 확인할 수 있습니다. verbosity 플래그를 늘리면 디버깅에 유용한 stdin, stdout, stderr 출력을 실시간으로 확인할 수 있습니다.
일반적인 Python 코드이므로 배포 스크립트에서 더 넓은 Python 패키지 생태계를 활용할 수 있습니다. 대상에 셸 접근만 있으면 되는 에이전트리스 도구이며, Docker, Terraform, Vagrant용 커넥터도 포함합니다.
핵심 기능
- 01YAML 대신 Python 코드로 배포 로직을 작성합니다.
- 02SSH 호스트, 로컬 머신, Docker 컨테이너에서 일회성 명령이나 선언형 작업을 실행합니다.
- 03멱등성 작업을 지원하며 변경 사항 적용 전에 diff와 dry run으로 확인할 수 있습니다.
- 04실시간 명령 출력으로 실패한 단계를 디버깅할 수 있습니다.
- 05에이전트리스 방식으로, 대상에 셸 접근만 있으면 됩니다.
- 06Docker, Terraform, Vagrant 인벤토리용 커넥터를 제공합니다.
활용 사례
- 하나의 Python 코드베이스로 여러 서버를 구성하고 배포합니다.
- 여러 호스트에서 같은 셸 명령을 한 번에 실행합니다.
- 프로덕션 환경에 적용하기 전에 로컬 Docker 컨테이너에서 서버 설정을 테스트합니다.
- YAML 대신 Python을 사용해 Ansible 스타일의 자동화를 원하는 팀에 적합합니다.
빠른 시작
- 1
uv로 pyinfra 설치하기
uv tool install pyinfra - 2
SSH 서버에서 명령 실행하기
pyinfra my-server.net exec -- echo "hello world" - 3
Docker 컨테이너에서 명령 실행하기
pyinfra @docker/ubuntu exec -- echo "Hello world"
토픽
자주 묻는 질문
- pyinfra은(는) 무엇인가요?
- Python으로 정의한 작업과 셸 명령을 SSH 서버, 로컬 머신, Docker 컨테이너에서 실행하는 인프라 자동화 도구입니다. pyinfra는 YAML 대신 Python으로 서버 구성과 배포 로직을 작성할 수 있는 인프라 자동화 도구입니다. 여러 호스트에서 일회성 셸 명령을 실행하거나 패키지 설치, 파일 관리 같은 선언형 작업을 정의할 수 있습니다. pyinfra는 이를 셸 명령으로 변환해 대상에서 실행합니다.
- pyinfra은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- pyinfra은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- pyinfra은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. pyinfra의 마지막 커밋은 2026년 10월 15일입니다.
- pyinfra은(는) 어디에 사용할 수 있나요?
- 하나의 Python 코드베이스로 여러 서버를 구성하고 배포합니다. 여러 호스트에서 같은 셸 명령을 한 번에 실행합니다. 프로덕션 환경에 적용하기 전에 로컬 Docker 컨테이너에서 서버 설정을 테스트합니다. YAML 대신 Python을 사용해 Ansible 스타일의 자동화를 원하는 팀에 적합합니다.
- pyinfra는 어떻게 설치하나요?
- uv로 pyinfra 설치하기: uv tool install pyinfra SSH 서버에서 명령 실행하기: pyinfra my-server.net exec -- echo "hello world" Docker 컨테이너에서 명령 실행하기: pyinfra @docker/ubuntu exec -- echo "Hello world"
- pyinfra은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/pyinfra-dev/pyinfra
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
선언형 구성 파일을 계획하고 적용해 클라우드 및 서비스 리소스를 생성·변경·버전 관리하는 IaC CLI입니다.
터미널에서 OVHcloud 서비스, 계정, Public Cloud 리소스를 관리하는 공식 OVHcloud CLI입니다.
kubectl과 비슷한 API를 제공하며 동기 및 비동기(asyncio/trio) 인터페이스를 지원하는 Kubernetes용 Python 클라이언트 라이브러리입니다.
Linux에서 Clash / Mihomo 프록시 커널을 실행하는 셸 기반 도구로, 구독 관리, 노드 선택, Tun 모드와 내장 doctor 명령을 지원합니다.
하나의 인터페이스로 Kubernetes, Slurm, 20개 이상의 클라우드 및 GPU 제공업체에서 AI 워크로드를 실행·관리·확장하는 오픈소스 시스템입니다.