|
|
|
@@ -0,0 +1,32 @@ |
|
|
|
#!/usr/bin/env bash |
|
|
|
# |
|
|
|
# Run the playbook on multiple hosts with different credentials with this script |
|
|
|
# It defaults to ansible tags "setup-all,start". You can pass alternative tags |
|
|
|
# to this script as arguments, e.g. |
|
|
|
# |
|
|
|
# ./inventory/scripts/ansible-all-hosts.sh self-check |
|
|
|
# |
|
|
|
|
|
|
|
# set playbook root path |
|
|
|
root=$(dirname "$(readlink -f "$0")")/../.. |
|
|
|
|
|
|
|
# set default tags or get from first argument if any |
|
|
|
tags="${1:-setup-all,start}" |
|
|
|
|
|
|
|
# init password array |
|
|
|
declare -A pws |
|
|
|
|
|
|
|
# capture passwords for all hosts |
|
|
|
for host in "$root"/inventory/*.yml; do |
|
|
|
read -rp "sudo password for $(basename "$host"): " -s pw |
|
|
|
pws[$host]="$pw" |
|
|
|
echo |
|
|
|
done |
|
|
|
|
|
|
|
# run ansible on all captured passwords/hosts |
|
|
|
for host in "${!pws[@]}"; do |
|
|
|
ansible-playbook "$root"/setup.yml \ |
|
|
|
--inventory-file "$host" \ |
|
|
|
--extra-vars "ansible_become_pass=${pws[$host]}" \ |
|
|
|
--tags="$tags" |
|
|
|
done |