pyinfra将Python代码转换为shell命令并在您的服务器上运行。执行临时命令并编写声明式操作。目标可以是SSH服务器、本地机器和Docker容器。快速且可扩展,从一台服务器到数千台服务器。可以将其视为类似ansible
,但使用Python而不是YAML,并且速度更快。
入门指南 • 示例仓库 • Matrix聊天
为什么选择pyinfra?设计特点包括:
- 🚀 在数千台主机上执行超快速,性能可预测。
- 🚨 通过实时stdin/stdout/stderr输出实现即时调试(
-vvv
)。 - 🔄 支持差异比较和干运行的幂等操作,在进行更改前先预览。
- 📦 可通过整个Python包生态系统进行扩展。
- 💻 对任何具有shell访问权限的目标进行无代理执行。
- 🔌 与Docker、Terraform、Vagrant等连接器集成。
快速入门
使用pip
安装pyinfra:
pip install pyinfra
现在您可以通过SSH在主机上执行命令:
pyinfra my-server.net exec -- echo "hello world"
或针对Docker容器、本地机器和其他连接器:
pyinfra @docker/ubuntu exec -- echo "Hello world"
pyinfra @local exec -- echo "Hello world"
除了执行命令,您还可以使用操作定义状态:
# 如果iftop apt包不存在则安装
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
这些操作可以保存为Python文件,如deploy.py
:
from pyinfra.operations import apt
apt.packages(
name="确保安装iftop",
packages=['iftop'],
update=True,
_sudo=True,
)
主机也可以保存在一个文件中,例如inventory.py
:
targets = ["@docker/ubuntu", "my-test-server.net"]
然后一起执行:
pyinfra inventory.py deploy.py
现在您已经了解了pyinfra的基本构建块!通过组合清单、操作和Python代码,您可以部署任何东西。
查看更详细的入门指南或使用操作指南。了解如何使用清单和数据、全局参数和命令行界面,或查看文档示例。