2016-03-02 17:52:19 +08:00
#!/usr/bin/env bash
2016-02-29 23:35:07 +08:00
set -euo pipefail
2017-08-02 16:35:26 +08:00
2017-05-15 21:49:45 +08:00
#############
# VARIABLES #
#############
2016-02-29 23:35:07 +08:00
basedir = $( dirname " $0 " )
2017-08-02 16:35:26 +08:00
do_not_generate = " ceph-common $|ceph-docker-common $" # pipe separated list of roles we don't want to generate sample file, MUST end with '$', e.g: 'foo$|bar$'
2016-02-29 23:35:07 +08:00
2016-03-02 17:52:19 +08:00
2017-05-15 21:49:45 +08:00
#############
# FUNCTIONS #
#############
populate_header ( ) {
2016-03-02 17:52:19 +08:00
cat <<EOF > " $basedir " /group_vars/" $output "
2016-02-29 23:35:07 +08:00
---
# Variables here are applicable to all host groups NOT roles
# This sample file generated by $(basename "$0")
# Dummy variable to avoid error because ansible does not recognize the
# file as a good configuration file when no variable in it.
dummy:
EOF
2017-05-15 21:49:45 +08:00
}
2016-02-29 23:35:07 +08:00
2017-05-15 21:49:45 +08:00
generate_group_vars_file ( ) {
2016-03-02 17:52:19 +08:00
if [ " $( uname) " = = "Darwin" ] ; then
2017-05-15 16:38:36 +08:00
sed '/^---/d; s/^\([A-Za-z[:space:]]\)/#\1/' \
" $defaults " >> " $basedir " /group_vars/" $output "
2016-03-02 17:52:19 +08:00
echo >> " $basedir " /group_vars/" $output "
2017-05-15 16:56:33 +08:00
elif [ " $( uname -s) " = = "Linux" ] ; then
2016-02-29 23:35:07 +08:00
sed '/^---/d; s/^\([A-Za-z[:space:]].\+\)/#\1/' \
2017-05-15 16:38:36 +08:00
" $defaults " >> " $basedir " /group_vars/" $output "
2016-02-29 23:35:07 +08:00
echo >> " $basedir " /group_vars/" $output "
2016-03-02 17:52:19 +08:00
else
echo "Unsupported platform"
exit 1
fi
2017-05-15 21:49:45 +08:00
}
########
# MAIN #
########
for role in " $basedir " /roles/ceph-*; do
rolename = $( basename " $role " )
2017-08-02 16:35:26 +08:00
if [ [ $rolename = = "ceph-defaults" ] ] ; then
2017-05-15 21:49:45 +08:00
output = "all.yml.sample"
elif [ [ $rolename = = "ceph-agent" ] ] ; then
output = "agent.yml.sample"
elif [ [ $rolename = = "ceph-fetch-keys" ] ] ; then
output = "ceph-fetch-keys.yml.sample"
else
output = " ${ rolename : 5 } s.yml.sample "
fi
defaults = " $role " /defaults/main.yml
if [ [ ! -f $defaults ] ] ; then
continue
fi
2017-08-02 16:35:26 +08:00
if ! echo " $rolename " | grep -qE " $do_not_generate " ; then
populate_header
generate_group_vars_file
fi
2016-02-29 23:35:07 +08:00
done