#!/usr/bin/env bash # # Wrapper script for the entire update procedure including # * updating git repo # * downloading roles # * running playbook # # This script first asks for the passwords for all the hosts and then pipes them # to the ansible playbook wrapper script, so that we don't need to wait for the # merging and downloading to finish, before being asked for the passwords. # # exit on errors set -e # set playbook root path root=$(dirname "$(readlink -f "$0")")/../.. # capture passwords for all hosts for host in "$root"/inventory/*.yml; do read -rp "sudo password for $(basename "$host"): " -s pw pipeinput+="$pw\n" echo done # merge upstream master branch git -C "$root" pull upstream master # check the changelog before updating less CHANGELOG.md read -r # download upstream roles make -f "$root"/Makefile roles # run ansible-playbook on all hosts echo -e "$pipeinput" | bash "$root"/inventory/scripts/ansible-all-hosts.sh