run 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/bash -e
  2. #
  3. # This file serves as the default command to the openshift-ansible image.
  4. # Runs a playbook with inventory as specified by environment variables.
  5. #
  6. # For more information see the documentation:
  7. # https://github.com/openshift/openshift-ansible/blob/master/README_CONTAINER_IMAGE.md
  8. # SOURCE and HOME DIRECTORY: /opt/app-root/src
  9. if [[ -z "${PLAYBOOK_FILE}" ]]; then
  10. echo
  11. echo "PLAYBOOK_FILE must be provided."
  12. exec /usr/local/bin/usage
  13. fi
  14. INVENTORY="$(mktemp)"
  15. if [[ -v INVENTORY_FILE ]]; then
  16. # Make a copy so that ALLOW_ANSIBLE_CONNECTION_LOCAL below
  17. # does not attempt to modify the original
  18. cp -a ${INVENTORY_FILE} ${INVENTORY}
  19. elif [[ -v INVENTORY_URL ]]; then
  20. curl -o ${INVENTORY} ${INVENTORY_URL}
  21. elif [[ -v DYNAMIC_SCRIPT_URL ]]; then
  22. curl -o ${INVENTORY} ${DYNAMIC_SCRIPT_URL}
  23. chmod 755 ${INVENTORY}
  24. else
  25. echo
  26. echo "One of INVENTORY_FILE, INVENTORY_URL or DYNAMIC_SCRIPT_URL must be provided."
  27. exec /usr/local/bin/usage
  28. fi
  29. INVENTORY_ARG="-i ${INVENTORY}"
  30. if [[ "$ALLOW_ANSIBLE_CONNECTION_LOCAL" = false ]]; then
  31. sed -i s/ansible_connection=local// ${INVENTORY}
  32. fi
  33. if [[ -v VAULT_PASS ]]; then
  34. VAULT_PASS_FILE=.vaultpass
  35. echo ${VAULT_PASS} > ${VAULT_PASS_FILE}
  36. VAULT_PASS_ARG="--vault-password-file ${VAULT_PASS_FILE}"
  37. fi
  38. cd ${WORK_DIR}
  39. exec ansible-playbook ${INVENTORY_ARG} ${VAULT_PASS_ARG} ${OPTS} ${PLAYBOOK_FILE}