Skip to content

Instantly share code, notes, and snippets.

@josefglatz
Created March 15, 2023 12:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josefglatz/e2e12dff3e2b682938e1a97f5ec00ce9 to your computer and use it in GitHub Desktop.
Save josefglatz/e2e12dff3e2b682938e1a97f5ec00ce9 to your computer and use it in GitHub Desktop.
DDEV provider real worldexample for pulling from a remote environment
environment_variables:
REMOTE_HOST: customerwebsite-production-dev
REMOTE_DB: proddev_5Re2
REMOTE_EXTRA_FILE: "/var/www/html/shared/.my.cnf"
REMOTE_DATA_PATH: /var/www/html/shared/Data
REMOTE_IGNORE_TABLES: |-
"be_sessions
cache_treelist
fe_sessions
sys_file_processedfile
sys_history
sys_lockedrecords
sys_log
sys_registry
tx_extensionmanager_domain_model_extension
tx_solr_cache
tx_solr_cache_tags
tx_solr_eventqueue_item
tx_solr_indexqueue_indexing_property
tx_solr_indexqueue_item
tx_solr_last_searches
tx_solr_statistics
any_other_table_to_exclude"
auth_command:
command: |
set -eu -o pipefail
set -x
ssh-add -l >/dev/null || ( echo "Please run 'ddev auth ssh' before running this command." && exit 1 )
touch ~/.ssh/config
chmod 0600 ~/.ssh/config
grep "Host ${REMOTE_HOST}" ~/.ssh/config || ( cat /var/www/html/.ddev/ssh_config_linux >> ~/.ssh/config; cat /var/www/html/.ddev/ssh_config >> ~/.ssh/config; )
ssh ${REMOTE_HOST} "echo 2>&1; exit 0" || ( echo "Cannot connect to target host"; exit 1; )
db_pull_command:
command: |
set -eu -o pipefail
set -x
rm -f /var/www/html/.ddev/.downloads/db.sql.gz
mkdir -p /var/www/html/.ddev/.downloads
ID=$(date +%s)
ssh ${REMOTE_HOST} "rm -f /tmp/db_${ID}.sql.gz /tmp/db_${ID}.sql"
echo "Generating remote database dump"
IGNORE_TABLES=
DUMP_PARAMS="--defaults-extra-file=${REMOTE_EXTRA_FILE}"
for T in $(echo ${REMOTE_IGNORE_TABLES}); do IGNORE_TABLES="${IGNORE_TABLES} --ignore-table='${REMOTE_DB}.${T}'"; done
ssh ${REMOTE_HOST} "mysqldump ${DUMP_PARAMS} --no-data ${REMOTE_DB} > /tmp/db_${ID}.sql 2>/dev/null"
ssh ${REMOTE_HOST} "mysqldump ${DUMP_PARAMS} --no-create-info ${IGNORE_TABLES} ${REMOTE_DB} >> /tmp/db_${ID}.sql 2>/dev/null"
ssh ${REMOTE_HOST} "gzip -2 /tmp/db_${ID}.sql"
echo "Downloading database dump"
rsync -av ${REMOTE_HOST}:/tmp/db_${ID}.sql.gz /var/www/html/.ddev/.downloads/db.sql.gz
ssh ${REMOTE_HOST} "rm -f /tmp/db_${ID}.sql.gz"
service: web
files_pull_command:
command: |
exit 0
service: web
files_import_command:
command: |
set -x
set -eu -o pipefail
mkdir -p /var/www/html/public/fileadmin
rsync -avz --delete-after --exclude=/_processed_ ${REMOTE_HOST}:${REMOTE_DATA_PATH}/fileadmin/. /var/www/html/public/fileadmin/.
service: web
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment