|
- #!/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.
- #
- # ./bin/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
|