Last active
January 19, 2022 16:36
-
-
Save discopatrick/4e85d61ad9d692c06ca8d3bf0dd802ea to your computer and use it in GitHub Desktop.
A playbook for use with roots/trellis syncing the local wordpress db and uploads folder to a remote installation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| - name: sync uploads and db from staging to local | |
| hosts: my_staging_host | |
| remote_user: "{{ web_user }}" | |
| pre_tasks: | |
| - name: Ensure site is valid | |
| connection: local | |
| fail: | |
| msg: "Site `{{ site | default('') }}` is not valid. Available sites to sync: {{ wordpress_sites.keys() | join(', ') }}" | |
| when: wordpress_sites[site | default('')] is not defined | |
| vars: | |
| project: "{{ wordpress_sites[site] }}" | |
| project_root: "{{ www_root }}/{{ site }}" | |
| project_uploads: "{{ www_root }}/{{ site }}/shared/uploads" | |
| project_web_dir: "{{ project_root }}/current/web" | |
| wordpress_env_defaults: | |
| db_host: localhost | |
| db_name: "{{ site | underscore }}_staging" #{{ env }}" | |
| db_user: "{{ site | underscore }}" | |
| disable_wp_cron: true | |
| wp_env: staging # "{{ env }}" | |
| wp_home: "{{ project.ssl.enabled | default(false) | ternary('https', 'http') }}://${HTTP_HOST}" | |
| wp_siteurl: "${WP_HOME}/wp" | |
| site_env: "{{ wordpress_env_defaults | combine(project.env | default({}), vault_wordpress_sites[site].env) }}" | |
| tasks: | |
| - name: sync remote box uploads to vagrant box (via vagrant synced folder) | |
| synchronize: | |
| src: "{{ project_uploads }}" | |
| dest: ../site/web/app | |
| mode: pull | |
| delete: yes | |
| ignore_errors: yes # some hidden files cause errors in rsync | |
| # TODO: put .gitkeep file back in uploads folder (it gets deleted) | |
| - name: create db backup on staging with wp-cli | |
| command: wp db export ~/{{ wordpress_env_defaults.db_name }}.sql | |
| args: | |
| chdir: "{{ project_web_dir }}" | |
| - name: copy db backup from staging to vagrant box (via vagrant synced folder) | |
| fetch: | |
| src: ~/{{ wordpress_env_defaults.db_name }}.sql | |
| dest: ../site | |
| flat: yes # copies file only, without dir structure | |
| - name: reset and restore db on vagrant box | |
| delegate_to: default | |
| command: wp db reset --yes | |
| args: | |
| chdir: "{{ project_web_dir }}" | |
| - name: restore db on vagrant box | |
| delegate_to: default | |
| command: wp db import ../{{ wordpress_env_defaults.db_name }}.sql | |
| args: | |
| chdir: "{{ project_web_dir }}" | |
| - name: search-replace email addresses | |
| delegate_to: default | |
| command: wp search-replace "@mydomain.org.uk" "@local.dev" | |
| args: | |
| chdir: "{{ project_web_dir }}" | |
| - name: search-replace staging email addresses | |
| delegate_to: default | |
| command: wp search-replace "@staging.mydomain.org.uk" "@local.dev" | |
| args: | |
| chdir: "{{ project_web_dir }}" | |
| - name: search-replace the domain name | |
| delegate_to: default | |
| command: wp search-replace "www.mydomain.org.uk" "local.dev" | |
| args: | |
| chdir: "{{ project_web_dir }}" | |
| - name: search-replace the staging domain name | |
| delegate_to: default | |
| command: wp search-replace "staging.mydomain.org.uk" "local.dev" | |
| args: | |
| chdir: "{{ project_web_dir }}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment