#! /bin/bash set -euo pipefail IFS=$' \t\n' export LANG=C SCRIPT_NAME="$(basename "$0")" trap 'rm -f "$TMP_INV_INI"' EXIT TMP_INV_INI="$(mktemp --suffix=_"${SCRIPT_NAME%%.*}".ini)" mk_ini_tmp_inv() { cat <<-EOF >"$TMP_INV_INI" [all:vars] os = linux [web] srv-web1 web=1 srv-web2 web=2 [db] srv-db1 db=1 srv-db2 db=2 [plop] test-ansible EOF } arg_list() { mk_ini_tmp_inv ansible-inventory -i "$TMP_INV_INI" --list } arg_host() { mk_ini_tmp_inv ansible-inventory -i "$TMP_INV_INI" --host "$1" } usage() { ansible-doc -t inventory script } while [ "${1-}" != "" ]; do case $1 in --list ) shift arg_list ;; --host ) shift arg_host "$1" ;; -h | --help ) usage exit 0 ;; --) # End of all options shift break ;; -*) echo "SCRIPT_NAME: invalid option" >&2 echo "Try '$SCRIPT_NAME --help' for more information." >&2 exit 1 ;; *) usage ;; esac shift done