Skip to content

Instantly share code, notes, and snippets.

@Faheetah
Created August 15, 2017 17:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Faheetah/5f02dfc8d22ce153cc3d984e8e4300d2 to your computer and use it in GitHub Desktop.
Save Faheetah/5f02dfc8d22ce153cc3d984e8e4300d2 to your computer and use it in GitHub Desktop.
Ansible helper script
#!/bin/bash
set -e
find_ansible_dir() {
dir=$(readlink -f ${1:-.})
if [ $dir = '/' ]
then
echo "Could not find a playbook in $(pwd)"
exit 1
fi
if [ -f $dir/site.yml ] || [ -d $dir/roles ] || [ -d $dir/tasks ] || [ -d $dir/.git ]
then
echo $dir
else
find_ansible_dir $(dirname $dir)
fi
}
gen_ansible_role() {
role=$1
shift
echo 'generating role'
for i in $@
do
base="$(find_ansible_dir)/roles/$role/$i"
case $i in
defaults|tasks|meta|vars|handlers)
mkdir -vp $base && touch -a $base/main.yml
;;
scaffold)
for d in "defaults tasks meta vars handlers files templates"
do
gen_ansible_role $role $d
done
;;
*)
mkdir -p $base
;;
esac
done
}
run_playbook() {
echo 'not implemented'
}
print_help() {
echo '
Usage: ap cmd [..args]
g: generate a named role component, or "scaffold" for defaults, tasks, templates, files, meta, vars
p: run a playbook site.yml using the specified arguments for the playbook command, will try inventories/development/ if no inventory is specified
'
}
parse_args() {
cmd=$1
shift
case $cmd in
g*)
gen_ansible_role "$@"
;;
p*)
run_playbook "$@"
;;
*)
print_help
;;
esac
}
# main
parse_args "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment