Repolode
pyinfra-dev

pyinfra-dev/pyinfra

一款基于 Python 的基础设施自动化工具,可在 SSH 服务器、本地机器和 Docker 容器上执行命令与声明式操作。

可替代:Ansible

Star
6,044
Fork
558
未关闭 Issue
166
最近提交
7天前

这是什么?

pyinfra 是一款基础设施自动化工具,让你用 Python 而不是 YAML 编写服务器配置和部署逻辑。它既可以在多台主机上批量执行临时 shell 命令,也可以定义声明式操作(如安装软件包、管理文件),并将其转换为 shell 命令在目标机器上执行。

目标可以是通过 SSH 连接的远程服务器、本地机器或 Docker 容器。操作具备幂等性,因此在真正生效前可以先通过 diff 和 dry run 预览变更。调试时可实时查看标准输入、输出和错误流,并通过增加 -v 参数提升输出详细程度。

由于就是普通的 Python 代码,部署脚本中可以直接使用整个 Python 包生态。项目无需在目标机器上安装 agent,只要求具备 shell 访问权限,并提供 Docker、Terraform、Vagrant 等连接器。

核心功能

  • 01用 Python 代码而非 YAML 编写部署逻辑。
  • 02可在 SSH 主机、本地机器和 Docker 容器上执行临时命令或声明式操作。
  • 03操作具备幂等性,支持变更前的 diff 和 dry run 预览。
  • 04实时输出命令的标准输入、输出和错误信息,便于排查故障。
  • 05无需 agent,目标机器只需具备 shell 访问权限。
  • 06提供 Docker、Terraform、Vagrant 等连接器。

适用场景

  • 用同一套 Python 代码配置和部署一批服务器。
  • 同时在大量主机上执行相同的 shell 命令。
  • 在本地 Docker 容器中先测试服务器配置,再应用到生产环境。
  • 希望用 Python 替代 YAML 实现 Ansible 式自动化的团队。

快速上手

  1. 1

    使用 uv 安装 pyinfra

    uv tool install pyinfra
  2. 2

    在 SSH 服务器上执行命令

    pyinfra my-server.net exec -- echo "hello world"
  3. 3

    在 Docker 容器中执行命令

    pyinfra @docker/ubuntu exec -- echo "Hello world"

标签

常见问题

pyinfra 是什么?
一款基于 Python 的基础设施自动化工具,可在 SSH 服务器、本地机器和 Docker 容器上执行命令与声明式操作。 pyinfra 是一款基础设施自动化工具,让你用 Python 而不是 YAML 编写服务器配置和部署逻辑。它既可以在多台主机上批量执行临时 shell 命令,也可以定义声明式操作(如安装软件包、管理文件),并将其转换为 shell 命令在目标机器上执行。
pyinfra 可以免费使用吗?用的什么许可证?
pyinfra 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
pyinfra 还在维护吗?
活跃维护中。pyinfra 最近一次提交是在 2026年10月15日。
pyinfra 适合用来做什么?
用同一套 Python 代码配置和部署一批服务器。 同时在大量主机上执行相同的 shell 命令。 在本地 Docker 容器中先测试服务器配置,再应用到生产环境。 希望用 Python 替代 YAML 实现 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

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目