nodes_wait 60 || true # ans CMD: run CMD as greg in his project directory. ans() { timeout 300 runuser -l greg -c "cd ~/ansible && $*" "$OUT"; grep -Eq "^node1 +: ok=" "$OUT" && grep -Eq "^node2 +: ok=" "$OUT" && ! grep -E " : ok=" "$OUT" | grep -Eq "(changed|unreachable|failed)=[1-9]"' task 3 "The developers group may run any command with sudo, no password, from a validated drop-in" need "a file in /etc/sudoers.d on node1 has a rule for %developers" "in_node node1 'grep -rqs \"^%developers\" /etc/sudoers.d'" need "visudo -c on node1 finds no errors" 'in_node node1 visudo -cq' need "sudo -n whoami as fred on node1 prints root" '[ "$(in_node node1 runuser -u fred -- sudo -n whoami)" = root ]' rm -f "$OUT"