diff --git a/roles/sync/database_sync/database_sync-mysql/defaults/main.yml b/roles/sync/database_sync/database_sync-mysql/defaults/main.yml index d4866c2c..88143a7b 100644 --- a/roles/sync/database_sync/database_sync-mysql/defaults/main.yml +++ b/roles/sync/database_sync/database_sync-mysql/defaults/main.yml @@ -2,7 +2,7 @@ mysql_sync: mysqldump_params: "{{ _mysqldump_params }}" # set in _init but you can override here. cleanup: true # if false leaves tmp database dump on deploy server for debugging purposes. - use_gzip: false # if true gzip will be used instead of default bzip2. + archival_method: "bzip2" # oprions are "bzip2" or "gzip". databases: - source: # Name of the database to take a dump from. diff --git a/roles/sync/database_sync/database_sync-mysql/tasks/sync.yml b/roles/sync/database_sync/database_sync-mysql/tasks/sync.yml index 9cf2b250..ac346444 100644 --- a/roles/sync/database_sync/database_sync-mysql/tasks/sync.yml +++ b/roles/sync/database_sync/database_sync-mysql/tasks/sync.yml @@ -35,17 +35,24 @@ - database.target.asg is defined - database.target.asg | length > 0 -- name: Register remote dump name (from database) - BZIP2. + +- name: Register bzip2 archive type vars. ansible.builtin.set_fact: - mysql_sync_source_dump_path: "/tmp/{{ database.source.database }}_{{ build_number }}_source.sql.bz2" + archive_file_type: "bz2" + archival_command: "bzip2" when: - - not mysql_sync.use_gzip + - mysql_sync.archival_method == 'bzip2' -- name: Register remote dump name (from database) - GZIP. +- name: Register gunzip archive type vars. ansible.builtin.set_fact: - mysql_sync_source_dump_path: "/tmp/{{ database.source.database }}_{{ build_number }}_source.sql.gz" + archive_file_type: "gz" + archival_command: "gzip" when: - - mysql_sync.use_gzip + - mysql_sync.archival_method == 'gzip' + +- name: Register remote dump name (from database). + ansible.builtin.set_fact: + mysql_sync_source_dump_path: "/tmp/{{ database.source.database }}_{{ build_number }}_source.sql.{{ archive_file_type }}" - name: Get source last known good build number. ansible.builtin.command: @@ -68,23 +75,13 @@ mysql_sync_source_database: "{{ database.source.database }}" when: not database.source.type == 'rolling' -- name: Take a dump from source database - BZIP2. - ansible.builtin.shell: "set -o pipefail && mysqldump --defaults-extra-file={{ database.source.credentials_file }} {{ mysql_sync.mysqldump_params }} {{ mysql_sync_source_database }} | bzip2 > {{ mysql_sync_source_dump_path }}" +- name: Take a dump from source database. + ansible.builtin.shell: "set -o pipefail && mysqldump --defaults-extra-file={{ database.source.credentials_file }} {{ mysql_sync.mysqldump_params }} {{ mysql_sync_source_database }} | {{ archival_command }} > {{ mysql_sync_source_dump_path }}" args: executable: /bin/bash delegate_to: "{{ database.source.host }}" when: - database.source.fresh_db - - not mysql_sync.use_gzip - -- name: Take a dump from source database - GZIP. - ansible.builtin.shell: "set -o pipefail && mysqldump --defaults-extra-file={{ database.source.credentials_file }} {{ mysql_sync.mysqldump_params }} {{ mysql_sync_source_database }} | gzip > {{ mysql_sync_source_dump_path }}" - args: - executable: /bin/bash - delegate_to: "{{ database.source.host }}" - when: - - database.source.fresh_db - - mysql_sync.use_gzip - name: Find source database host. ansible.builtin.command: @@ -107,17 +104,9 @@ delegate_to: "{{ database.source.host }}" when: not database.source.fresh_db -- name: Register tmp target dump name - BZIP2. +- name: Register tmp target dump name. ansible.builtin.set_fact: - mysql_sync_target_dump_path: "/tmp/{{ database.target.database }}_{{ build_number }}_target.sql.bz2" - when: - - not mysql_sync.use_gzip - -- name: Register tmp target dump name - GZIP. - ansible.builtin.set_fact: - mysql_sync_target_dump_path: "/tmp/{{ database.target.database }}_{{ build_number }}_target.sql.gz" - when: - - mysql_sync.use_gzip + mysql_sync_target_dump_path: "/tmp/{{ database.target.database }}_{{ build_number }}_target.sql.{{ archive_file_type }}" - name: Register tmp unpacked target dump name. ansible.builtin.set_fact: @@ -144,51 +133,22 @@ mysql_sync_target_database: "{{ database.target.database }}" when: not database.target.type == 'rolling' -- name: Fetch dump file - BZIP2. - ansible.builtin.fetch: - src: "{{ mysql_sync_source_dump_path }}" - dest: "{{ _ce_deploy_build_tmp_dir }}/{{ database.target.database }}.sql.bz2" - flat: true - delegate_to: "{{ database.source.host }}" - when: - - not mysql_sync.use_gzip - -- name: Fetch dump file - GZIP. +- name: Fetch dump file. ansible.builtin.fetch: src: "{{ mysql_sync_source_dump_path }}" - dest: "{{ _ce_deploy_build_tmp_dir }}/{{ database.target.database }}.sql.gz" + dest: "{{ _ce_deploy_build_tmp_dir }}/{{ database.target.database }}.sql.{{ archive_file_type }}" flat: true delegate_to: "{{ database.source.host }}" - when: - - mysql_sync.use_gzip -- name: Copy dump file to destination - BZIP2. +- name: Copy dump file to destination. ansible.builtin.copy: - src: "{{ _ce_deploy_build_tmp_dir }}/{{ database.target.database }}.sql.bz2" + src: "{{ _ce_deploy_build_tmp_dir }}/{{ database.target.database }}.sql.{{ archive_file_type }}" dest: "{{ mysql_sync_target_dump_path }}" - when: - - not mysql_sync.use_gzip -- name: Copy dump file to destination - GZIP. - ansible.builtin.copy: - src: "{{ _ce_deploy_build_tmp_dir }}/{{ database.target.database }}.sql.gz" - dest: "{{ mysql_sync_target_dump_path }}" - when: - - mysql_sync.use_gzip - -- name: Unpack dump file - BZIP2. - ansible.builtin.shell: "bzip2 -d -c {{ mysql_sync_target_dump_path }} > {{ mysql_sync_target_dump_unpacked_path }}" +- name: Unpack dump file. + ansible.builtin.shell: "{{ archival_command }} -d -c {{ mysql_sync_target_dump_path }} > {{ mysql_sync_target_dump_unpacked_path }}" args: executable: /bin/bash - when: - - not mysql_sync.use_gzip - -- name: Unpack dump file - GZIP. - ansible.builtin.shell: "gzip -d -c {{ mysql_sync_target_dump_path }} > {{ mysql_sync_target_dump_unpacked_path }}" - args: - executable: /bin/bash - when: - - mysql_sync.use_gzip - name: Delete temporary dump file on target. ansible.builtin.file: