部署 dbbot 和配置 Ansible

dbbot 内置绿色版 Ansible(2.10.17),目标是减少环境侵入和版本冲突。标准流程只有两步:

  1. 解压 dbbot。
  2. 注册并验证内置 Ansible。

dbbotctl env setup 不只是写 alias。

它会按控制机环境安装或升级运行依赖,例如 python3、SELinux Python 绑定和 sshpass,并写入 shell 初始化文件。建议在专门的控制节点或新环境执行。

1. 下载并解压 dbbot

cd ~
dbbot_version="$(basename "$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/fanderchan/dbbot/releases/latest)")"
curl -fL -O "https://github.com/fanderchan/dbbot/releases/download/${dbbot_version}/dbbot-${dbbot_version}.tar.gz"
tar -zxvf "dbbot-${dbbot_version}.tar.gz" -C /usr/local

推荐安装路径:/usr/local。 如果你使用 wget 下载,请先确认系统已安装 wget;最小化 CentOS 7 环境通常默认没有 wget

解压完成后,建议先确认核心目录:

ls -1 /usr/local/dbbot

典型输出应包含:

  • bin
  • mysql_ansible
  • clickhouse_ansible
  • monitoring_prometheus_ansible
  • portable-ansible

建议先做一次本地自检:

/usr/local/dbbot/bin/dbbotctl version
/usr/local/dbbot/bin/dbbotctl doctor

2. 注册绿色版 Ansible

/usr/local/dbbot/bin/dbbotctl env setup
source ~/.bashrc

dbbotctl env setup 会调用内置的 setup_portable_ansible.sh,自动补齐依赖,并向 ~/.bashrc 写入:

  • ansible / ansible-playbook alias
  • /usr/local/dbbot/binPATH

在 Linux 控制机上,这一步可能还会:

  • 安装或升级系统 python3
  • 安装 SELinux Python 绑定
  • 安装或写入 sshpass
  • 修改 ~/.bashrc

最小化 CentOS 7 通常默认没有 python3。这种情况下 dbbotctl env setup 会提示安装 python3;直接按回车或输入 y 后会通过系统包管理器安装并继续后续配置。

验证安装:

ansible --version

ansible / ansible-playbook alias 主要面向交互式 shell。脚本、CI、SSH one-liner 等非交互场景中,shell 可能不会展开 alias,建议优先使用绿色版 Ansible 的显式路径:

python3 /usr/local/dbbot/portable-ansible/ansible --version
python3 /usr/local/dbbot/portable-ansible/ansible-playbook --version

预期关键点:

  • Ansible 版本:2.10.17
  • Python 版本:3.x

3. 这套绿色版 Ansible 是怎么构建的

当前发行包中的绿色版 Ansible 由 make_ansible_portable 构建,核心命令如下:

./build.sh \
  --python /usr/bin/python3 \
  --source ansible-base==2.10.17 \
  --without-vault \
  --without-yaml-c-extension \
  --clean-output \
  --extra-collection 'ansible.posix:==1.5.4'

可以这样理解:

  • --python /usr/bin/python3:指定构建和自测时使用的控制机 Python。
  • --source ansible-base==2.10.17:选择 2.10 代 Ansible 对应的官方 ansible-base 包。
  • --without-vault:移除 ansible-vault 入口以及 cryptography / cffi 依赖链,减小体积;构建结果不再支持 vault。
  • --without-yaml-c-extension:移除 PyYAML 的 C 扩展,回退到纯 Python YAML 实现。
  • --clean-output:重新构建前清理同名旧产物。
  • --extra-collection 'ansible.posix:==1.5.4':把固定版本的 ansible.posix collection 直接打进 bundle。

常见说明

  • dbbot 的 Playbook 主要基于 Python 3 完整测试。
  • 目标机器仅有 Python 2 时,Ansible 会按实际环境进行兼容处理。
  • MySQL 与 ClickHouse 子目录共用同一套控制节点环境,不需要分别安装多套 Ansible。
  • 如果你需要手工查看底层脚本,可直接查看 /usr/local/dbbot/libexec/dbbotctl/setup_portable_ansible.sh
  • 后续升级同样建议通过 dbbotctl 执行,而不是手工删除旧目录再回拷配置。详见:dbbot 升级与回滚

下一章:dbbot 配置与单机部署演示