45 lines
1.6 KiB
Bash
Executable File
45 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
#==============================================================#
|
|
# File : inventory_cmdb
|
|
# Desc : use cmdb as inventory
|
|
# Ctime : 2021-07-22
|
|
# Mtime : 2021-07-22
|
|
# Path : bin/inventory_cmdb
|
|
# Deps : psql, sed
|
|
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
|
|
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
|
|
#==============================================================#
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# environment
|
|
#--------------------------------------------------------------#
|
|
APP_DIR="$(cd $(dirname $0) && pwd)"
|
|
PIGSTY_HOME=${PIGSTY_HOME-"${HOME}/pigsty"}
|
|
METADB_URL=${METADB_URL-"service=meta"}
|
|
PIGSTY_INVENTORY=${PIGSTY_HOME}/inventory.sh
|
|
ANSIBLE_CONFIG=${PIGSTY_HOME}/ansible.cfg
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# write dynamic inventory query file
|
|
#--------------------------------------------------------------#
|
|
echo "write dynamic inventory query script to ${PIGSTY_INVENTORY}"
|
|
cat > ${PIGSTY_INVENTORY} <<-EOF
|
|
#!/bin/bash
|
|
psql ${METADB_URL} -AXtwc 'SELECT text FROM pigsty.inventory;'
|
|
EOF
|
|
chmod 0755 ${PIGSTY_INVENTORY}
|
|
|
|
DYNAMIC_INVENTORY_FILE=$(basename ${PIGSTY_INVENTORY})
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# write dynamic inventory query file
|
|
#--------------------------------------------------------------#
|
|
echo "update ansible.cfg set inventory = ${DYNAMIC_INVENTORY_FILE}"
|
|
SED_CMD="s/inventory.*/inventory = ${DYNAMIC_INVENTORY_FILE}/g"
|
|
sed -ie "${SED_CMD}" ${ANSIBLE_CONFIG}
|
|
rm -rf "${ANSIBLE_CONFIG}e"
|
|
|
|
cat ${ANSIBLE_CONFIG} | grep inventory |