SRE host, role, and service inventory
Find a file
2022-09-14 02:09:44 -07:00
.github Release action needs id-token 2021-10-12 15:00:42 -07:00
infinitory (INFC-18949) Fix unhandled error 2021-02-16 12:32:32 -08:00
infinitory-flask (DIO-2636) Update python in dockerfiles 2021-09-23 15:20:22 -05:00
test/errors Adding error page to infinitory 2018-10-16 16:32:17 -07:00
.gitignore (DIO-834) Adds infinitory-flask component 2020-09-29 10:08:37 -07:00
CODEOWNERS Move codeowners from DIO to IT SysOps 2022-08-26 07:51:22 -04:00
Dockerfile Bump python from 3.10-rc-buster to 3.11-rc-buster 2022-04-20 13:30:10 +00:00
generate.py (DIO-834) Refactor to use pdb queries, output to GCS Bucket 2020-09-29 10:08:12 -07:00
MANIFEST.in Include static and templates in the built package 2017-09-13 11:03:25 -07:00
README.md adds requirements.txt 2022-02-03 10:04:44 -08:00
requirements.txt adds requirements.txt 2022-02-03 10:04:44 -08:00
setup.py (DIO-1541) Release with github actions 2021-10-04 13:16:20 -07:00

SRE Inventory Report

Generate a report on SRE inventory, including hosts, roles, and services.

Architecture

This app has two components:

infinitory - the data colection portion. Which can be run in cron or otherwise scheduled to collect data from Puppetdb using token authentication. Data can be stored locally as well as pushed to a GCS bucket.

infinitory-flask - the web frontend portion. This can be pointed to resources collected by the infinitory (cron) app and serves data from the GCS bucket

Running in Docker

infinitory

docker run -e GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS -e BUCKET=<GCP_BUCKET_NAME> -e TOKEN=<PDB_ACCESS_TOKEN> -v /tmp:/output:rw --add-host <pdb-host>:<pdb-hostip> infinitory-app

infinitory-flask

docker run -e GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS -e BUCKET=<GCP_BUCKET_NAME> infinitory-flask

Using GOOGLE_APPLICATION_CREDENTIALS may require an extra volume mount in some cases:

-v /path/to/creds.json:/creds.json

...where your ENV variable points to that file:

export GOOGLE_APPLICATION_CREDENTIALS=/creds.json

Developing

Use python setup.py develop to install dependencies

Running infinitory in Dev:

bin/infinitory -h pdb.ops.puppetlabs.net -t <pdb-access-token> -o /tmp/output -b <gcs-bucket-name>

Running infinitory-flask in Dev:

infinitory-flask/python app.py infinitory-prod

Build / release

infinitory - For infinitory, you must first release the python package and then build / push the docker image

## Release a python build
## (with .pypirc in place)
python setup.py sdist upload -r local

infinitory-flask - Simply build and push the docker image to release this portion of the app.

Before a release, the requirements.txt file should be regenerated:

pip install pipreqs #if needed
pipreqs .