#!/bin/bash env # first, try cloning git repo [[ -z ${GIT_CLONE_URL} ]] || { git clone ${GIT_CLONE_URL} . ; } # update ${GIT_PULL} && git pull ${GIT_SUBMODULE_UPDATE} && git submodule update # cd into specified directory [[ -n ${ANSIBLE_DIR} ]] && cd ${ANSIBLE_DIR} # set ansible opts ANSIBLE_CMD="ansible-playbook" [[ ${VERSION,,} == "true" ]] && { ansible-playbook --version exit 0 } [[ -n ${ANSIBLE_PLAYBOOK} ]] || { echo "Please set the ANSIBLE_PLAYBOOK variable." exit 1 } [[ ${CHECK,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --check" [[ ${DIFF,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --diff" [[ -n ${EXTRA_VARS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --extra-vars=${EXTRA_VARS}" [[ ${FLUSH_CACHE,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --flush-cache" [[ ${FORCE_HANDLERS,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --force-handlers" [[ -n ${FORKS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --forks=FORKS" [[ -n ${INVENTORY:-inventory} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --inventory=${INVENTORY}" [[ -n ${LIMIT} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --limit=${LIMIT}" [[ ${LIST_HOSTS,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --list-hosts" [[ ${LIST_TAGS,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --list-tags" [[ ${LIST_TASKS,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --list-tasks" [[ -n ${MODULE_PATH} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --module-path=${MODULE_PATH}" [[ -n ${SKIP_TAGS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --skip-tags=${SKIP_TAGS}" [[ -n ${START_AT_TASK} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --start-at-task=${START_AT_TASK}" [[ ${SYNTAX_CHECK,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --syntax-check" [[ -n ${TAGS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --tags=${TAGS}" [[ -n ${VAULT_ID} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --vault-id=${VAULT_ID}" [[ -n ${VAULT_PASSWORD_FILE} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --vault-password-file=${VAULT_PASSWORD_FILE}" [[ ${VERBOSE} -gt 0 ]] && ANSIBLE_CMD="${ANSIBLE_CMD} -v" [[ ${VERBOSE} -gt 1 ]] && ANSIBLE_CMD="${ANSIBLE_CMD}v" [[ ${VERBOSE} -gt 2 ]] && ANSIBLE_CMD="${ANSIBLE_CMD}v" [[ -n ${PRIVATE_KEY} ]] && { echo "${PRIVATE_KEY}" > /tmp/ssh_private_key chmod 600 /tmp/ssh_private_key ANSIBLE_CMD="${ANSIBLE_CMD} --private-key=/tmp/ssh_private_key" } [[ -n ${USER} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --user=${REMOTE_USER}" [[ -n ${CONNECTION} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --connection=${CONNECTION}" [[ -n ${TIMEOUT} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --timeout=${TIMEOUT}" [[ -n ${SSH_COMMON_ARGS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --ssh-common-args=${SSH_COMMON_ARGS}" [[ -n ${SFTP_EXTRA_ARGS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --sftp-extra-args=${SFTP_EXTRA_ARGS}" [[ -n ${SCP_EXTRA_ARGS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --scp-extra-args=${SCP_EXTRA_ARGS}" [[ -n ${SSH_EXTRA_ARGS} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --ssh-extra-args=${SSH_EXTRA_ARGS}" [[ ${BECOME,,} == "true" ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --become" [[ -n ${BECOME_METHOD} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --become-method=${BECOME_METHOD}" [[ -n ${BECOME_USER} ]] && ANSIBLE_CMD="${ANSIBLE_CMD} --become-user=${BECOME_USER}" ${RUN_PLAYBOOK:-true} && { exec "${ANSIBLE_CMD}" exit ${?} } exec "${@}"