pyinfra — 基于纯Python的无代理基础设施自动化
摘要
pyinfra 是一个基于纯Python的开源无代理基础设施自动化工具,据称比Ansible快6倍,支持并行SSH执行、幂等操作和预览模式。
<p><a href="https://lobste.rs/s/htfm3p/pyinfra_agentless_infrastructure">评论</a></p>
查看缓存全文
缓存时间: 2026/06/15 12:58
# pyinfra — 无代理基础设施自动化,纯 Python 实现
来源:https://pyinfra.com/
## 自动化管理
## 自动化管理
数千台服务器
pyinfra 是一个纯 Python、无代理的自动化工具,通过 SSH 运行命令——并发、幂等,且 **比 Ansible 快 6 倍**。
$uv tool install pyinfra
[MIT 许可证] · [Python 3.10+] · [无代理] · [零配置]
``
1
2
3from pyinfra.operations import apt, files, systemd
4
5apt.packages(
6 packages=["nginx", "certbot"],
7 update=True,
8)
9
10files.template(
11 src="templates/nginx.conf.j2",
12 dest="/etc/nginx/sites-enabled/api",
13)
14
15systemd.service("nginx", reloaded=True)
``
``
1
2
3web = [
4 ("web-01.prod", {"role": "edge"}),
5 ("web-02.prod", {"role": "edge"}),
6 *[(f"web-{i:02}.prod", {}) for i in range(3, 24)],
7]
8
9db = [
10 ("db-01.prod", {"role": "primary"}),
11 ("db-02.prod", {"role": "replica"}),
12]
13
14
15
``
``
$ pyinfra inventory.py deploy.py --limit web
--> Loading inventory...
Hosts: web-01..web-23
--> Gathering facts (concurrent)...
23 hosts · 0.6s
--> Running deploy.py...
✓ web-01.prod 3 ops changed=2 0.42s
✓ web-02.prod 3 ops changed=2 0.39s
⟳ web-03.prod running... apt.packages
--> Summary
successful: 23 changed: 18 failed: 0 total: 2.1s
``
正常 deploy.py python23 台主机就绪 · --dry · 17:42
// 流式输出
## 在变更前查看变更。
使用 **--dry** 运行,查看 pyinfra 将执行的每个操作的主机级别 diff。实际运行时,并行观察结果流式返回。
bash · zsh · ~/ops●live
``
$ pyinfra inventory.py deploy.py --limit web
--> Loading inventory...
Hosts: web-01..web-24, db-01..db-04
--> Gathering facts (concurrent)...
24 hosts · 0.6s
--> Running deploy.py...
✓ web-01.prod 3 ops changed=2 0.42s
✓ web-02.prod 3 ops changed=2 0.39s
✓ web-03.prod 3 ops changed=0 0.18s
✓ web-04.prod 3 ops changed=2 0.44s
⟳ web-05.prod running... apt.packages
... 19 more
--> Summary
successful: 24 changed: 18 no-change: 6 failed: 0
total: 2.1s
``
// 特性
## 为什么选择 pyinfra:六点说明。
defpure():
### 纯 Python
无 YAML。无 Jinja 嵌套 YAML。真正的控制流。你的编辑器本来就能理解。
deffast():
### 并发 SSH
相同工作负载下比 Ansible 快 6 倍。基于 gevent + SSH。
defsafe():
### 应用前 Diff
运行 --dry 预览所有变更。操作是幂等的——重新运行不会产生任何影响。
defsmall():
### 零代理
主机上唯一要求:一个 shell 和 SSH。无需守护进程。无需状态文件。无需控制平面。
defbig():
### 可扩展
适用于 1 台主机或 10000 台主机。并行执行,实时流式输出。
defopen():
### 可定制
10 行代码实现自定义操作。连接任何支持 shell 的环境——Docker、LXC、K8s。
// 对比 Ansible
## $ diff ansible/ pyinfra/
--- ansible/playbook.yml16行
``
- hosts: web
tasks:
- name: install nginx
apt:
name: nginx
update_cache: yes
- name: render config
template:
src: nginx.conf.j2
dest: /etc/nginx/sites-enabled/api
notify: reload nginx
handlers:
- name: reload nginx
service:
name: nginx
state: reloaded
``
+++ pyinfra/deploy.py8行
``
from pyinfra.operations import apt, files, systemd
apt.packages(["nginx"], update=True)
cfg = files.template(
src="nginx.conf.j2",
dest="/etc/nginx/sites-enabled/api",
)
if cfg.will_change:
systemd.service("nginx", reloaded=True)
``
// 宣言
#01
代码 > 配置
循环就是循环。停止将控制流编码到 YAML 中。
#02
先展示,再执行
先 Diff。再应用。无人惊讶。
#03
不碍事
无代理。无状态文件。无控制平面。SSH 即走。
#04
像英文一样阅读
操作是名词和动词。apt.packages。files.template。systemd.service。
// 180+ 贡献者
感谢来自全球公司和机构的数百位开源贡献者……
SAP
EPAM Systems
Lawrence Livermore
Utrecht University
Odoo
Rochester Inst. of Tech.
Linköping University
Paul Scherrer Institute
Iress
NPR
Fox-IT
Prezi
Sensorfact
EDITED
Cynerio
# 随时准备就绪
## $uv tool install pyinfra_
阅读 5 分钟快速入门。立即部署你的第一台主机。下个季度替换你的 Ansible 仓库。
相似文章
@GithubProjects: 部署 AI Agent 不应需要基础设施博士学位。Superserve:pip install、init、deploy。三条命令…
Superserve 是一个新工具,仅通过三条命令即可简化 AI Agent 的部署,将其运行在由 Firecracker microVM 支持的持久化沙箱中。
INFRAMIND:基础设施感知的多智能体编排
InfraMind 引入了一个基础设施感知的多智能体大语言模型编排框架,利用强化学习根据实时系统负载动态选择模型和拓扑结构,在高负载下实现了高达 7 倍的延迟降低和 99.9% 的 SLO 达标率。
Phinite —— 多智能体操作系统,具备一等智能体身份、可组合技能、行为评估 [P]
Phinite 作为多智能体操作系统基础设施层发布,提供一等智能体身份、可组合技能、行为评估、云无关部署以及内置可观测性。
你的智能体能力取决于其框架。我开源了一个框架,单个函数调用背后集成了40项能力
一个开源智能体框架,单个函数调用背后集成了40项能力,包括持久内存、Docker沙箱、自动摘要、死循环检测、预算上限和实时运行分支(用于分支智能体执行)。基于Pydantic AI构建,旨在替换每个生产级智能体所需的2000行胶水代码。
展示 r/AI_Agents:防止智能体在生产环境中破坏工具调用——我们为 2000+ API 构建了可靠性层
Swytchcode 是一款 CLI 工具,充当 AI 智能体的可靠性层,自动处理跨 2000+ API 的身份验证、重试、合规性和幂等性,以防止智能体在生产环境中出错。