diff --git a/README.md b/README.md index a140bf6cc..bac1c3a87 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[English](README.md) | [简体中文](README.zh-CN.md) +
+
+
+ pyinfra 把 Python 代码转换成 shell 命令,并在你的服务器上执行。你既可以执行临时命令,也可以编写声明式的操作(operation)。目标可以是 SSH 服务器、本机以及 Docker 容器。它速度很快,可以从一台服务器扩展到数千台。可以把它理解为
diff --git a/README.zh-CN.md b/README.zh-CN.md
new file mode 100644
index 000000000..39dcb4805
--- /dev/null
+++ b/README.zh-CN.md
@@ -0,0 +1,109 @@
+[English](README.md) | 简体中文
+
+> 本文是 [README.md](README.md) 的简体中文翻译。若与英文版存在差异,请以英文版为准。
+
+
+
+ansible,只不过用 Python 而不是 YAML,而且快得多。
+
+ 入门指南 •
+ 示例仓库 •
+ 在 Matrix 上聊天
+
+
+
+---
+
+为什么选择 pyinfra?它的设计特点包括:
+
++ 🚀 **极速**:在数千台主机上执行,性能可预期。
++ 🚨 **即时调试**:实时输出 stdin/stdout/stderr(`-vvv`)。
++ 🔄 **幂等的操作**:支持在做出变更前进行差异对比(diff)与试运行(dry run)。
++ 📦 **可扩展**:可直接使用整个 Python 包生态。
++ 💻 **无需 Agent 即可执行**:只要目标有 shell 访问权限即可。
++ 🔌 **连接器集成**:可与 Docker、Terraform、Vagrant 等连接器配合使用。
+
+
+
+## 快速开始
+
+使用 [`uv`](https://docs.astral.sh/uv/) 安装 pyinfra:
+
+```
+uv tool install pyinfra
+```
+
+现在你就可以通过 SSH 在主机上执行命令:
+
+```sh
+pyinfra my-server.net exec -- echo "hello world"
+```
+
+也可以面向 Docker 容器、本机以及其他[连接器](https://docs.pyinfra.com/page/connectors.html):
+
+```sh
+pyinfra @docker/ubuntu exec -- echo "Hello world"
+pyinfra @local exec -- echo "Hello world"
+```
+
+除了执行命令,你还可以用 [操作](https://docs.pyinfra.com/page/operations.html) 来声明期望状态:
+
+```sh
+# Install iftop apt package if not present
+pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
+```
+
+这些内容可以保存为 Python 文件,例如 `deploy.py`:
+
+
+```py
+from pyinfra.operations import apt
+
+apt.packages(
+ name="Ensure iftop is installed",
+ packages=['iftop'],
+ update=True,
+ _sudo=True,
+)
+```
+
+主机也可以写进一个文件,例如 `inventory.py`:
+
+```py
+targets = ["@docker/ubuntu", "my-test-server.net"]
+```
+
+
+然后一起执行:
+
+```sh
+pyinfra inventory.py deploy.py
+```
+
+到这里你已经掌握了 pyinfra 的基本构件!把清单(inventory)、操作和 Python 代码组合起来,你可以部署任何东西。
+
+更详细的说明请参阅[入门指南](https://docs.pyinfra.com/page/getting-started.html)或[使用操作](https://docs.pyinfra.com/page/using-operations.html)指南。你还可以了解如何使用 [inventory 与数据](https://docs.pyinfra.com/page/inventory-data.html)、[全局参数](https://docs.pyinfra.com/page/arguments.html)和 [CLI](https://docs.pyinfra.com/page/cli.html),或者看看[带说明的示例](https://docs.pyinfra.com/page/examples.html)。
+
+---
+
+