From bc17fab0108647551ce327d4c424725875d5bb8f Mon Sep 17 00:00:00 2001 From: Mauro Torrez Date: Wed, 18 Sep 2019 20:34:42 -0300 Subject: [PATCH] commit inicial --- .drone.yml | 18 ++++++++++++++ .gitignore | 4 +++ Dockerfile | 10 ++++++++ entrypoint.sh | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 .drone.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 entrypoint.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..c2230e3 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,18 @@ +--- +kind: pipeline +name: default + +steps: + + - name: docker + image: plugins/docker + settings: + repo: eumau/ansible + auto_tag: true + username: + from_secret: dockerhub_username + password: + from_secret: dockerhub_password + when: + branch: + - master diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4858447 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*~ +\#* +.#* +*.bak diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..443c365 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3.7-slim-buster +ARG ANSIBLE_VERSION=2.8.5 +ADD entrypoint.sh / +RUN set -x \ + && chmod +x /entrypoint.sh \ + && pip3 install -U pip \ + && pip3 install ansible==${ANSIBLE_VERSION} \ + && rm -rf /root/.cache +VOLUME /ansible +ENTRYPOINT ["/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..fff2d34 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,68 @@ +#!/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 "${@}"