Use PostgreSQL as Ansible Config Inventory CMDB
Categories:
You can use PostgreSQL as a configuration source for Pigsty, replacing the static YAML configuration file.
There are some advantages to using CMDB as a dynamic inventory: metadata is presented in a highly structured way in the form of data tables, and consistency is ensured through database constraints. At the same time, using CMDB allows you to use third-party tools to edit and manage Pigsty metadata, making it easier to integrate with external systems.
Ansible Inventory
Pigsty’s default configuration file path is specified in ansible.cfg
as inventory = pigsty.yml
.
Changing this parameter will change the default configuration file path used by Ansible. If you point it to an executable script file, Ansible will use the dynamic inventory mechanism, execute the script, and expect the script to return a configuration file.
Using CMDB is implemented by editing the ansible.cfg
in the Pigsty directory:
---
inventory = pigsty.yml
+++
inventory = inventory.sh
And the inventory.sh
is a simple script that generates equivalent YAML/JSON configuration files from the records in the PostgreSQL CMDB.
You can use bin/inventory_cmdb
to switch to CMDB inventory, and
use bin/inventory_conf
to switch back to the local YAML configuration file.
You may also need bin/inventory_load
to load the YAML configuration file into the CMDB.
Load Configuration
Pigsty will init a CMDB (optional) on the default pg-meta
cluster’s meta
database, under pigsty
schema.
the CMDB is available only after
infra.yml
is fully executed on the admin node.
You can load YAML config file into CMDB with bin/inventory_load
:
usage: inventory_load [-h] [-p PATH] [-d CMDB_URL]
load config arguments
optional arguments:
-h, --help show this help message and exit„
-p PATH, --path PATH config path, ${PIGSTY_HOME}/pigsty.yml by default
-d DATA, --data DATA postgres cmdb pgurl, ${METADB_URL} by default
If you run bin/inventory_load
without any arguments, it will load the default pigsty.yml
into the default CMDB.
bin/inventory_load
bin/inventory_load -p conf/demo.yml
bin/inventory_load -p conf/prod.yml -d postgresql://dbuser_meta:DBUser.Meta@10.10.10.10:5432/meta
You can switch to dynamic CMDB inventory with:
bin/inventory_cmdb
To switch back to local YAML config file:
bin/inventory_conf
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.