96 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
 | |
| 
 | |
| # shellcheck disable=SC1090
 | |
| source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
 | |
| 
 | |
| dokku-ansible-deploy-validate-dependencies() {
 | |
|   # shellcheck disable=SC2034
 | |
|   declare desc="check that ansible dependencies are available"
 | |
| 
 | |
|   if ! command -v "ansible-playbook" &>/dev/null; then
 | |
|     dokku_col_log_info1_quiet "Missing ansible dependency, run dokku plugin:install-dependencies"
 | |
|     exit 1
 | |
|   fi
 | |
| }
 | |
| 
 | |
| dokku-ansible-deploy-vault-pass-cmd() {
 | |
|   # shellcheck disable=SC2034
 | |
|   declare desc="add new app vault password for decryption of passwords"
 | |
| 
 | |
|   local app="$2"
 | |
|   local vault_file="$DOKKU_LIB_ROOT/data/deploy.d/$app/.vault-password.sh"
 | |
| 
 | |
|   if [[ ! -n "$app" ]]; then
 | |
|     dokku_col_log_info1_quiet "missing app name, try 'dokku ansible-deploy:vault-pass myappname'"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   if [[ -f $vault_file ]]; then
 | |
|     dokku_col_log_info1_quiet "Vault password already in place"
 | |
|     exit 0
 | |
|   fi
 | |
| 
 | |
|   # shellcheck disable=SC2162 disable=SC2116 disable=SC2006
 | |
|   read -p "Please enter your vault password for $app: `echo $'\n> '`" vault_password
 | |
| 
 | |
|   if [[ ! -d "$DOKKU_LIB_ROOT/data/deploy.d/$app" ]]; then
 | |
|     mkdir -p "$DOKKU_LIB_ROOT/data/deploy.d/$app"
 | |
|   fi
 | |
|   dokku_col_log_info1_quiet "Created $DOKKU_LIB_ROOT/data/deploy.d/$app"
 | |
| 
 | |
|   { echo "#!/bin/bash";
 | |
|     echo "";
 | |
|     echo "set -eu -o pipefail";
 | |
|     echo "";
 | |
|     echo "echo \"$vault_password\""; } > "$vault_file"
 | |
| 
 | |
|   chmod +x "$vault_file"
 | |
| 
 | |
|   dokku_col_log_info1_quiet "Generated $vault_file"
 | |
| }
 | |
| 
 | |
| dokku-ansible-deploy-dependencies() {
 | |
|   # shellcheck disable=SC2034
 | |
|   declare desc="install plugin dependencies"
 | |
| 
 | |
|   export DEBIAN_FRONTEND=noninteractive
 | |
| 
 | |
|   if ! command -v "ansible" &>/dev/null; then
 | |
|     dokku_col_log_info1_quiet "installing ansible"
 | |
|     apt install -qq -y ansible python3 python3-dev
 | |
|   fi
 | |
| }
 | |
| 
 | |
| dokku-ansible-deploy-post-extract() {
 | |
|   # shellcheck disable=SC2034
 | |
|   declare desc="run the post-extract hook to setup the plugin"
 | |
| 
 | |
|   declare APP="$1" TMPDIR="$2"
 | |
| 
 | |
|   if [[ -d "$TMPDIR/deploy.d" ]] && [[ "$(ls -A "$TMPDIR/deploy.d")" ]]; then
 | |
|     mkdir -p "$DOKKU_LIB_ROOT/data/deploy.d/$APP"
 | |
|     cp -r "$TMPDIR/deploy.d/." "$DOKKU_LIB_ROOT/data/deploy.d/$APP"
 | |
|     dokku_col_log_info1_quiet "Copied deploy.d files into place"
 | |
| 
 | |
|     if [[ -d "$TMPDIR/deploy.d/vault" ]]; then
 | |
|       if [[ ! -f "$DOKKU_LIB_ROOT/data/deploy.d/$APP/.vault-password.sh" ]]; then
 | |
|         dokku_col_log_info1_quiet "Vault folder discovered but missing vault password"
 | |
|         dokku_col_log_info1_quiet "Please run dokku ansible-deploy:vault-password $APP"
 | |
|         exit 1
 | |
|       fi
 | |
|     fi
 | |
|   fi
 | |
| }
 | |
| 
 | |
| dokku-ansible-deploy-pre-deploy() {
 | |
|   # shellcheck disable=SC2034
 | |
|   declare desc="run the pre-deploy hook to setup an app"
 | |
| }
 | |
| 
 | |
| dokku-ansible-deploy-post-deploy() {
 | |
|   # shellcheck disable=SC2034
 | |
|   declare desc="run the post-deploy hook to finish an app setup"
 | |
| }
 |