pyinfra — 基于纯Python的无代理基础设施自动化

Lobsters Hottest 工具

摘要

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 仓库。

相似文章

INFRAMIND:基础设施感知的多智能体编排

arXiv cs.AI

InfraMind 引入了一个基础设施感知的多智能体大语言模型编排框架,利用强化学习根据实时系统负载动态选择模型和拓扑结构,在高负载下实现了高达 7 倍的延迟降低和 99.9% 的 SLO 达标率。