Add two ansible helpers
This commit is contained in:
parent
b33f7bd2fa
commit
bcb98b9e9a
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Strict mode
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
BASENAME=$(basename $0)
|
||||
|
||||
# Define role subdirectories
|
||||
VALID_SUBDIRS=(defaults files handlers meta tasks templates vars)
|
||||
DEFAULT_SUBDIRS=(defaults tasks)
|
||||
|
||||
function usage {
|
||||
cat << END_OF_HELPTEXT
|
||||
Usage: $BASENAME ROLENAME [SUBDIRS]...
|
||||
|
||||
Creates a skeleton for an Ansible role under ./roles/ROLENAME with
|
||||
subdirectories and main.yml files.
|
||||
|
||||
SUBDIRS is a subset of the following sub directories:
|
||||
${VALID_SUBDIRS[@]}
|
||||
|
||||
If SUBDIRS is not specified, it defaults to:
|
||||
${DEFAULT_SUBDIRS[@]}
|
||||
END_OF_HELPTEXT
|
||||
}
|
||||
|
||||
function inarray {
|
||||
local match="$1"; shift
|
||||
local el
|
||||
for el; do
|
||||
[[ "$el" == "$match" ]] && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# Show help if no arguments are given or one of them is --help
|
||||
[[ $# -eq 0 ]] && usage && exit 0
|
||||
|
||||
for arg in $@; do
|
||||
[[ $arg == "--help" ]] && usage && exit 0
|
||||
done
|
||||
|
||||
# Parse arguments
|
||||
ROLENAME=$1
|
||||
|
||||
if [[ $# -eq 2 && $2 == all ]]; then
|
||||
# Special value all: create all subdirectories
|
||||
SUBDIRS=("${VALID_SUBDIRS[@]}")
|
||||
elif [[ $# -gt 1 ]]; then
|
||||
SUBDIRS=()
|
||||
|
||||
for arg in "${@:2}"; do
|
||||
if ! inarray $arg "${VALID_SUBDIRS[@]}"; then
|
||||
echo "Unknown role subdirectory: $arg" >&2
|
||||
exit 1
|
||||
fi
|
||||
SUBDIRS+=($arg)
|
||||
done
|
||||
else
|
||||
SUBDIRS=("${DEFAULT_SUBDIRS[@]}")
|
||||
fi
|
||||
|
||||
ROLEDIR="roles/$ROLENAME"
|
||||
|
||||
# Create base directory for role
|
||||
mkdir -p "$ROLEDIR"
|
||||
|
||||
# Create skeleton
|
||||
for subdir in "${SUBDIRS[@]}"; do
|
||||
echo "Creating $ROLEDIR/$subdir"
|
||||
mkdir -p "$ROLEDIR/$subdir"
|
||||
|
||||
case "$subdir" in
|
||||
defaults|handlers|meta|tasks|vars)
|
||||
filename="$ROLEDIR/$subdir/main.yml"
|
||||
echo "Creating $filename"
|
||||
touch "$filename"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Strict mode
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
if [[ $# -eq 0 ]] || [[ $1 == "--help" ]]; then
|
||||
echo "Usage: $(basename $0) FILE VARIABLE"
|
||||
echo
|
||||
echo "Decrypts ansible-vault encrypted inline variable VARIABLE from FILE."
|
||||
echo
|
||||
echo "Example: $(basename $0) roles/common/defaults.main.yml user_root_password"
|
||||
|
||||
exit 1
|
||||
elif [[ $# -lt 2 ]]; then
|
||||
echo "Error: Missing arguments." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VAR_FILE=$1
|
||||
VAR_NAME=$2
|
||||
|
||||
if [[ ! -f $VAR_FILE ]]; then
|
||||
echo "Error: Variable file '$VAR_FILE' does not exist!" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ansible localhost -m debug -a "var=$VAR_NAME" -e "@$VAR_FILE"
|
||||
Loading…
Reference in New Issue