-
-
Save Faheetah/5f02dfc8d22ce153cc3d984e8e4300d2 to your computer and use it in GitHub Desktop.
Ansible helper script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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