# 剧本

> 使用 ansible 运行 playbooks，Pigsty 中的剧本列表与说明
---

Pigsty 使用幂等的 [Ansible playbooks](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_intro.html) 实现管理控制器。
Playbooks 需要您的 `PATH` 中有 `ansible-playbook` 可执行文件。您必须[安装 ansible](/zh/docs/admin/ansible#install) 才能运行 playbooks。

这里是 Pigsty 中的内置 playbooks，您也可以添加自己的。

|              模块               | Playbook                                                                               | 功能                                 |
|:-----------------------------:|----------------------------------------------------------------------------------------|------------------------------------|
|  [INFRA](/zh/docs/infra/playbook)  | [`install.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/install.yml)                 | 在当前节点上一键安装 Pigsty                  |
|  [INFRA](/zh/docs/infra/playbook)  | [`infra.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/infra.yml)                     | 在基础设施节点上初始化 pigsty 基础设施            |
|  [INFRA](/zh/docs/infra/playbook)  | [`infra-rm.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/infra-rm.yml)               | 从基础设施节点移除基础设施组件                    |
|  [INFRA](/zh/docs/infra/playbook)  | [`cache.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/cache.yml)                     | 从目标节点制作离线安装包                       |
|  [INFRA](/zh/docs/infra/playbook)  | [`cert.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/cert.yml)                       | 使用 pigsty 自签名 CA 颁发证书（例如用于 pg 客户端） |
|   [NODE](/zh/docs/node/playbook)   | [`node.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/node.yml)                       | 为 pigsty 初始化节点，将节点调整到所需状态          |
|   [NODE](/zh/docs/node/playbook)   | [`node-rm.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/node-rm.yml)                 | 从 pigsty 移除节点                      |
|  [PGSQL](/zh/docs/pgsql/playbook)  | [`pgsql.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/pgsql.yml)                     | 初始化 HA PostgreSQL 集群，或添加新副本        |
|  [PGSQL](/zh/docs/pgsql/playbook)  | [`pgsql-rm.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/pgsql-rm.yml)               | 移除 PostgreSQL 集群，或移除副本             |
|  [PGSQL](/zh/docs/pgsql/playbook)  | [`pgsql-db.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/pgsql-db.yml)               | 向现有 PostgreSQL 集群添加新业务数据库          |
|  [PGSQL](/zh/docs/pgsql/playbook)  | [`pgsql-user.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/pgsql-user.yml)           | 向现有 PostgreSQL 集群添加新业务用户           |
|   [PGSQL](/docs/pgsql/playbook)    | [`pgsql-pitr.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/pgsql-pitr.yml)           | 在现有 PostgreSQL 集群上执行时间点恢复          |
|  [PGSQL](/zh/docs/pgsql/playbook)  | [`pgsql-monitor.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/pgsql-monitor.yml)     | 使用本地导出器监控远程 postgres 实例            |
|  [PGSQL](/zh/docs/pgsql/playbook)  | [`pgsql-migration.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/pgsql-migration.yml) | 为现有 PostgreSQL 生成迁移手册和脚本           |
|  [PGSQL](/zh/docs/pgsql/playbook)  | [`slim.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/slim.yml)                       | 安装最小组件的 Pigsty                     |
|  [REDIS](/zh/docs/redis/playbook)  | [`redis.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/redis.yml)                     | 初始化 redis 集群/节点/实例                 |
|  [REDIS](/zh/docs/redis/playbook)  | [`redis-rm.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/redis-rm.yml)               | 移除 redis 集群/节点/实例                  |
|   [ETCD](/zh/docs/etcd/playbook)   | [`etcd.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/etcd.yml)                       | 初始化 etcd 集群，或扩容新成员                 |
|    [ETCD](/docs/etcd/playbook)     | [`etcd-rm.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/etcd-rm.yml)                 | 移除 etcd 集群与数据，或移除现有成员缩容            |
|  [MINIO](/zh/docs/minio/playbook)  | [`minio.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/minio.yml)                     | 初始化 minio 集群（pgbackrest 仓库可选）      |
|  [MINIO](/zh/docs/minio/playbook)  | [`minio.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/minio.yml)                     | 移除 minio 集群与数据                     |
| [DOCKER](/zh/docs/docker/playbook) | [`docker.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/docker.yml)                   | 在节点上安装 docker                      |
| [DOCKER](/zh/docs/docker/playbook) | [`app.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/app.yml)                         | 使用 docker compose 安装应用程序           |
|     [FERRET](/zh/docs/ferret/)     | [`mongo.yml`](https://github.com/pgsty/pigsty/blob/v3.7.0/mongo.yml)                     | 在节点上安装 Mongo/FerretDB              |


--------

## 部署 {#deployment}

特殊的 playbook `install.yml` 将使用临时 playbooks 部署所有内容：

| Playbook    | 命令            | 分组         | `infra` | `[nodes]` | `etcd` | `minio` | `[pgsql]` |
|-------------|---------------|------------|:-------:|:---------:|:------:|:-------:|:---------:|
| `infra.yml` | `./infra.yml` | `-l infra` |    ✓    |     ✓     |        |         |           |
| `node.yml`  | `./node.yml`  |            |         |     ✓     |   ✓    |    ✓    |     ✓     |
| `etcd.yml`  | `./etcd.yml`  | `-l etcd`  |         |           |   ✓    |         |           |
| `minio.yml` | `./minio.yml` | `-l minio` |         |           |        |    ✓    |           |
| `pgsql.yml` | `./pgsql.yml` |            |         |           |        |         |     ✓     |
