This script replaces the existing Makefile, and will be extended
to provide more functionality in future commits.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
ansible/Makefile | 9 ---------
ansible/manage | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+), 9 deletions(-)
delete mode 100644 ansible/Makefile
create mode 100755 ansible/manage
diff --git a/ansible/Makefile b/ansible/Makefile
deleted file mode 100644
index 6af7ae3..0000000
--- a/ansible/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-all:
-
-site:
- @ansible-playbook site.yml
-
-clean:
- @rm -f *.retry log
-
-.PHONY: all site clean
diff --git a/ansible/manage b/ansible/manage
new file mode 100755
index 0000000..46bec6c
--- /dev/null
+++ b/ansible/manage
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+PROGRAM_NAME="$0"
+
+# -------------------
+# Utility functions
+# -------------------
+
+# die MESSAGE
+#
+# Abort the program after displaying $MESSAGE on standard error.
+die() {
+ echo "$1" >&2
+ exit 1
+}
+
+# ----------------------
+# User-visible actions
+# ----------------------
+
+do_help() {
+ echo "\
+Usage: $PROGRAM_NAME ACTION [OPTIONS]
+
+Actions:
+ list List known guests
+ prepare GUEST Prepare or update GUEST. Can be run as many times as needed
+ update GUEST Alias for prepare
+ help Display this help"
+}
+
+do_list() {
+ INVENTORY=$(grep "^inventory\\s*=" ansible.cfg 2>/dev/null | sed
"s/^.*=\\s*//g")
+ INVENTORY=${INVENTORY:-/etc/ansible/hosts}
+
+ grep -v '^\[' "$INVENTORY" | sort -u
+}
+
+do_prepare() {
+ GUEST="$1"
+
+ test "$GUEST" || {
+ die "Usage: $PROGRAM_NAME prepare GUEST"
+ }
+ do_list | grep -q "$GUEST" || {
+ die "$PROGRAM_NAME: $GUEST: Unknown guest"
+ }
+
+ ansible-playbook -l "$GUEST" site.yml
+}
+
+case "$1" in
+ list) do_list ;;
+ prepare|update) do_prepare "$2" ;;
+ *help) do_help ;;
+ *) die "Usage: $PROGRAM_NAME ACTION [OPTIONS]" ;;
+esac
--
2.13.6