{"id":13616494,"url":"https://github.com/yunionio/ocboot","last_synced_at":"2026-04-07T04:00:30.850Z","repository":{"id":37929276,"uuid":"231375908","full_name":"yunionio/ocboot","owner":"yunionio","description":"Installation and setup tool of Cloudpods","archived":false,"fork":false,"pushed_at":"2026-04-03T05:46:07.000Z","size":3203,"stargazers_count":79,"open_issues_count":3,"forks_count":73,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-04-03T13:35:46.570Z","etag":null,"topics":["ansible","cloudpods","installer","python3","setup-script"],"latest_commit_sha":null,"homepage":"https://www.cloudpods.org","language":"Jinja","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yunionio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-01-02T12:18:05.000Z","updated_at":"2026-04-02T06:08:28.000Z","dependencies_parsed_at":"2023-09-26T13:41:34.396Z","dependency_job_id":"8ec62f51-84cf-415c-ade6-eef1ccfd5e01","html_url":"https://github.com/yunionio/ocboot","commit_stats":null,"previous_names":[],"tags_count":1736,"template":false,"template_full_name":null,"purl":"pkg:github/yunionio/ocboot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunionio%2Focboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunionio%2Focboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunionio%2Focboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunionio%2Focboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yunionio","download_url":"https://codeload.github.com/yunionio/ocboot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunionio%2Focboot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31499193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","cloudpods","installer","python3","setup-script"],"created_at":"2024-08-01T20:01:29.275Z","updated_at":"2026-04-07T04:00:30.827Z","avatar_url":"https://github.com/yunionio.png","language":"Jinja","funding_links":[],"categories":["Jinja"],"sub_categories":[],"readme":"# 介绍\n\nocboot 能够快速的在 CentOS 7 、Kylin V10、Debian 10等机器上搭建部署 [Cloudpods](https://github.com/yunionio/cloudpods) 服务。\n\nocboot 依赖 ansible-playbook 部署 cloudpods 服务，可以在单节点使用 local 的方式部署，也可以在多个节点使用 ssh 的方式同时部署。\n\n## 依赖说明\n\n- 操作系统: Centos 7.x 、Kylin V10、Debian 10\n- 最低配置要求: 4 核 8G\n- 软件: ansible 4.0 ~ 9.0 (ansible-core: 2.11 ~ 2.16)\n- 能够 ssh 免密登录待部署机器\n\n## 使用方法\n\n### 安装 ansible\n\nocboot 使用 [buildash](https://github.com/containers/buildah) 运行容器来部署服务，容器镜像里面包含了 python3 和 ansible 等运行环境。\n\n所以请先在自己的系统上安装 buildah ，请先参考 [buildah installation instructions](https://github.com/containers/buildah/blob/main/install.md) 安装 buildah。\n\n### clone 代码\n\n```bash\n$ git clone https://github.com/yunionio/ocboot.git\n$ cd ./ocboot\n```\n\n### 部署服务\n\nocboot 的运行方式很简单，只需要按自己机器的规划写好 yaml 配置文件，然后执行 `./ocboot.sh run.py full` 脚本，便会使用 buildah 启动容器，然后在容器里面运行 ansible-playbook 在对应的机器上部署服务。\n\n#### 快速开始\n\n- [All in One 安装](https://www.cloudpods.org/zh/docs/quickstart/allinone/)：在 CentOS 7 或 Debian 10 等发行版里搭建全功能 Cloudpods 服务，可以快速体验**内置私有云**和**多云管理**的功能。\n- [多节点高可用安装](https://www.cloudpods.org/zh/docs/setup/ha-ce/)：在生产环境中使用高可用的方式部署 Cloudpods 服务，包括**内置私有云**和**多云管理**的功能。\n\n\n### 添加节点\n\n添加节点使用 add-node 子命令把节点加入到已有集群。\n\n```bash\n# 比如把节点 192.168.121.61 加入到已有集群 192.168.121.21\n$ ./ocboot.sh add-node 192.168.121.21 192.168.121.61\n\n# 可以一次添加多个节点，格式如下\n$ ./ocboot.sh add-node $PRIMARY_IP $node1_ip $node2_ip ... $nodeN_ip\n\n# 把 $node_ip ssh 端口 2222 的节点加入到 $PRIMARY_IP ssh 端口 4567 的集群\n$ ./ocboot.sh add-node --port 4567 --node-port 2222 $PRIMARY_IP $node_ip\n\n# 查看 add-node 命令帮助信息\n$ ./ocboot.sh add-node --help\n```\n\n具体操作可参考文档：[添加节点](https://www.cloudpods.org/zh/docs/setup/host/)。\n\n### 添加 lbagent 节点\n\n添加节点使用 add-lbagent 子命令把运行 lb agent 服务的节点加入到已有集群。\n\n```bash\n# 比如把节点 192.168.121.62 加入到已有集群 192.168.121.21\n$ ./ocboot.sh add-lbagent 192.168.121.21 192.168.121.62\n\n# 可以一次添加多个节点，格式如下\n$ ./ocboot.sh add-lbagent $PRIMARY_IP $node1_ip $node2_ip ... $nodeN_ip\n\n# 把 $node_ip ssh 端口 2222 的节点加入到 $PRIMARY_IP ssh 端口 4567 的集群\n$ ./ocboot.sh add-lbagent --port 4567 --node-port 2222 $PRIMARY_IP $node_ip\n```\n\n具体操作可参考文档：[部署Lbagent](https://www.cloudpods.org/docs/getting-started/onpremise/lbagent)。\n\n### 升级节点\n\n升级节点参考文档：[升级服务](https://www.cloudpods.org/zh/docs/setup/upgrade/)。\n\n### 备份节点\n\n#### 原理\n\n备份流程会备份当前系统的配置文件（`config.yml`） 以及使用 `mysqldump` 来备份数据库。\n\n#### 命令行参数\n\n```bash\nusage: ocboot.py backup [-h] [--backup-path BACKUP_PATH] [--light] config\n\npositional arguments:\n  config                config yaml file\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --backup-path BACKUP_PATH\n                        backup path, default: /opt/backup\n  --light               ignore yunionmeter and yunionlogger database; ignore\n                        tables start with 'opslog' and 'task'.\n```\n\n#### 注意事项\n\n下面详细介绍各个参数的作用和注意事项。\n\n- `config`是必选参数，即，需要备份的配置文件名称，例如 `config-allinone.yml, config-nodes.yml, config-k8s-ha.yml，` 以及使用快速安装时会生成的 `config-allinone-current.yml`，因此备份命令不对配置文件名称作假设，**需由使用者自行输入配置文件名称**。\n- `--backup-path` 这个参数记录备份的目标目录。备份的内容包括配置文件（几 `k` 级别），以及 `mysqldump` 命令备份的数据库文件临时文件：`onecloud.sql`，然后会将该文件压缩为 `onecloud.sql.tgz`，并删除临时文件。用户需确保 `/opt/backup` 目录存在且可写且磁盘空间足够。\n- `--light` 这个选项用来做精简备份，原理是在备份过程中，忽略掉一些尺寸较大的特定文件，主要是账单、操作日志等相关的文件。默认保留。\n- 备份后的配置文件名称为 `config.yml`。\n- 备份的流程全部采用命令行参数接受输入，备份过程中无交互。因此支持 `crontab`方式自动备份。但备份程序本身不支持版本 `rotate`，用户可以使用 `logrotate` 之类的工具来做备份管理。\n\n#### FAQ\n\n- Q:  备份时提示缺 `MySQLdb` 包怎么办？\n\n- A：在centos上，可以执行如下命令来安装（其他os发行版请酌情修改，或联系客服）：\n\n  ```bash\n  sudo yum install -y mariadb-devel python3-devel\n  sudo yum groupinstall -y \"Development Tools\"\n  sudo pip3 install mysqlclient\n  ```\n\n- Q: 怎样查看、手工解压备份文件？\n\n- A：备份文件默认用户名为: `/opt/backup/onecloud.sql.gz`, 预览、手工解压的方式如下：\n\n  ```bash\n  # 预览该文件：\n  gunzip --stdout /opt/backup/onecloud.sql.gz | less\n\n  # 解压，同时保留源文件：\n  gunzip --stdout /opt/backup/onecloud.sql.gz \u003e /opt/backup/onecloud.sql\n\n  # 有些高版本的gunzip 提供 -k/--keep 选项，来保存源文件。可以直接执行：\n  gunzip -k /opt/backup/onecloud.sql.gz\n  ```\n\n### 恢复节点\n\n#### 原理\n\n恢复是备份的逆操作，流程包括：\n\n- 解压备份好的数据库文件；\n- 依照用户输入，或者在本机安装 `mariadb-server`，并导入数据库；或者将备份的数据库 source 到指定的数据库中。\n- 根据之前备份好的 `config.yml`，结合用户输入（当前机器 `ip`、`worker node ips`、`master node ips`），来重新生成 config.yml，然后提示用户重新安装云管系统。\n\n#### 命令行参数\n\n```bash\nusage: ocboot.py restore [-h] [--backup-path BACKUP_PATH]\n                         [--install-db-to-localhost]\n                         [--master-node-ips MASTER_NODE_IPS]\n                         [--master-node-as-host]\n                         [--worker-node-ips WORKER_NODE_IPS]\n                         [--worker-node-as-host] [--mysql-host MYSQL_HOST]\n                         [--mysql-user MYSQL_USER]\n                         [--mysql-password MYSQL_PASSWORD]\n                         [--mysql-port MYSQL_PORT]\n                         primary_ip\n\npositional arguments:\n  primary_ip            primary node ip\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --backup-path BACKUP_PATH\n                        backup path, default=/opt/backup\n  --install-db-to-localhost\n                        use this option when install local db\n  --master-node-ips MASTER_NODE_IPS\n                        master nodes ips, seperated by comma ','\n  --master-node-as-host\n                        use this option when use master nodes as host\n  --worker-node-ips WORKER_NODE_IPS\n                        worker nodes ips, seperated by comma ','\n  --worker-node-as-host\n                        use this option when use worker nodes as host\n  --mysql-host MYSQL_HOST\n                        mysql host; not needed if set --install-db-to-\n                        localhost\n  --mysql-user MYSQL_USER\n                        mysql user, default: root; not needed if set\n                        --install-db-to-localhost\n  --mysql-password MYSQL_PASSWORD\n                        mysql password; not needed if set --install-db-to-\n                        localhost\n  --mysql-port MYSQL_PORT\n                        mysql port, default: 3306; not needed if set\n                        --install-db-to-localhost\n```\n\n#### 注意事项\n\n- `primary_ip` 为必填项，作为位置参数传入。\n\n- `--backup-path`，默认值为`/opt/backup`。\n\n- `--install-db-to-localhost`，是否在本机（`primary`节点） 安装数据库。默认为否。如果选择了`--install-db-to-localhost`，则会在本机安装数据(`mariadb-server` 的稳定版)，并自动赋予下列参数以默认值：\n\n  - ```bash\n    --mysql-host=127.0.0.1\n    --mysql-user=root\n    --mysql-password=\u003c继承备份文件里 mysql 的密码\u003e\n    --mysql-port=3306\n    ```\n\n- `--mysql-host` 以及其他同类选项：不安装数据库，直接复用给定数据库。注意：`--install-db-to-localhost`参数与`--mysql-*`系列参数互斥，只能选择其中一种，要么本机安装数据库，要么给定具体参数。\n\n- `--master-node-ips`同时安装 `master` 节点。该参数是以半角逗号分隔的 `ip` 列表。适用于多节点模式。\n\n- `--master-node-as-host`安装`master`节点时，将其作为`host` 节点。\n\n- `--worker-node-ips`、`--worker-node-as-host`，作用同上，如其名。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyunionio%2Focboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyunionio%2Focboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyunionio%2Focboot/lists"}