跳转到主要内容

使用 PostgreSQL 作为 Ansible 配置清单 CMDB

使用 Pigsty v2.7 自带的清单脚本,在静态 YAML 清单与 PostgreSQL CMDB 之间切换。
使用 Pigsty v2.7 自带的清单脚本,在静态 YAML 清单与 PostgreSQL CMDB 之间切换。

Pigsty v2.7 默认从 pigsty.yml 读取 Ansible 配置清单。该版本同时提供了 三个脚本,可以将清单载入 meta 数据库的 pigsty 模式,并让 Ansible 改用动态生成的清单。

本文严格对应 v2.7.0 标签中的 bin/inventory_loadbin/inventory_cmdbbin/inventory_conf

前置条件

默认 pg-meta 集群会通过 files/cmdb.sql 创建 CMDB 模式。请先完成 infra.ymlpg-meta 数据库初始化,并确认 meta 服务可访问。

默认的 ansible.cfg 包含:

[defaults]
inventory = pigsty.yml

载入 YAML 清单

bin/inventory_load 会读取 YAML 清单,并替换 pigsty.grouppigsty.hostpigsty.group_varpigsty.host_varpigsty.global_var 中的记录。载入新清单前,应先检查或备份目标 CMDB。

bin/inventory_load                                      # 使用 $PIGSTY_HOME/pigsty.yml 与 $METADB_URL
bin/inventory_load -p files/pigsty/demo.yml             # 载入另一个 v2.7 清单
bin/inventory_load -p pigsty.yml \
  -d postgresql://dbuser_meta:[email protected]:5432/meta

脚本使用 -p|--path 指定 YAML 文件,使用 -d|--data 指定 PostgreSQL 连接串;默认值来自 PIGSTY_HOMEMETADB_URL

切换配置源

将 Ansible 切换到 CMDB 驱动的 inventory.sh

bin/inventory_cmdb
ansible-inventory --list

bin/inventory_cmdb 会写入可执行的 inventory.sh,并修改 ansible.cfg 中的 inventory。生成的脚本通过 PostgreSQL meta 服务 查询 pigsty.inventory

切回静态 pigsty.yml 清单:

bin/inventory_conf
ansible-inventory --list

这三个脚本只负责载入与切换配置源,并不会在 YAML 与 CMDB 之间提供自动 双向同步。后续修改仍应明确选择权威配置源并重新校验。