alnoda-workspaces/utils/ansible-report.sh

50 lines
1.5 KiB
Bash

#!/bin/bash
while getopts i:o: flag
do
case "${flag}" in
i) inventory=${OPTARG};;
o) output_dir=${OPTARG};;
esac
done
if [ -z "${output_dir}" ]; then output_dir="/home/static-server/ansible-reports/"; fi
project_name=${PWD##*/}
printf '%s\n' "project name - ${project_name}"
report_dir="${output_dir}/${project_name}/$(date +"%d-%m-%Y-%H-%M-%S")"
mkdir -p "$report_dir"
# Ansible Lint
ansible-lint --nocolor > ${report_dir}/linter.txt
# ansible-cmdb
mkdir -p ./ansible-cmdb
if [ "${inventory}" ]; then
ansible -m setup -i ${inventory} --tree ./ansible-cmdb all
else
ansible -m setup --tree ./ansible-cmdb all
fi
ansible-cmdb ./ansible-cmdb > ${report_dir}/hosts.html
rm -rf ./ansible-cmdb
# Ansible inventory grapher
if [ "${inventory}" ]; then
ansible-inventory-grapher -i ${inventory} all | dot -Tpng > ${report_dir}/inventory.png
else
ansible-inventory-grapher all | dot -Tpng > ${report_dir}/inventory.png
fi
# Ansible playbook grapher
mkdir -p ${report_dir}/plays
if [ "${inventory}" ]; then
ls | grep yml | xargs -I{} ansible-playbook-grapher -i ${inventory} --include-role-tasks {} -o ${report_dir}/plays/{}
ls | grep yaml | xargs -I{} ansible-playbook-grapher -i ${inventory} --include-role-tasks {} -o ${report_dir}/plays/{}
else
ls | grep yml | xargs -I{} ansible-playbook-grapher --include-role-tasks {} -o ${report_dir}/plays/{}
ls | grep yaml | xargs -I{} ansible-playbook-grapher --include-role-tasks {} -o ${report_dir}/plays/{}
fi