From 60a6c73be6f8c4fea8025d42eff621db333e4ea6 Mon Sep 17 00:00:00 2001 From: "Ketelsen, Sven" Date: Fri, 29 Apr 2022 13:23:42 +0000 Subject: [PATCH] DEV-424 export for wordpress database (maria) --- export-database.yml | 99 +++++++++++++++++++ roles/export_maria_database/defaults/main.yml | 3 + roles/export_maria_database/tasks/main.yml | 11 +++ roles/import_maria_database/vars/main.yml | 2 - 4 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 export-database.yml create mode 100644 roles/export_maria_database/defaults/main.yml create mode 100644 roles/export_maria_database/tasks/main.yml delete mode 100644 roles/import_maria_database/vars/main.yml diff --git a/export-database.yml b/export-database.yml new file mode 100644 index 0000000..2537c0b --- /dev/null +++ b/export-database.yml @@ -0,0 +1,99 @@ +--- + +# Parameters: +# playbook inventory +# stage := the name of the stage (e.g. dev, int, qa, prod) +# tenant_id := (unique key for the tenant, e.g. customer) +# cluster_name := (business name for the cluster, e.g. product, department ) +# cluster_size := (WIP node count for the cluster) +# cluster_service := (service to setup, e.g. 'connect', ...) +# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...]) +# database_backup_file := the dump file to export, has to be on the database server under /tmp (e.g. wordpress_portal.sql) +# target_database := (optional) the database to export into ( see {{ connect_wordpress_maria_database }}) +# smardigo message callback +# scope_id := (scope id of the management process) +# process_instance_id := (process instance id of the management process) +# smardigo_management_action := (smardigo management action anme of the management process) + +############################################################# +# Creating inventory dynamically for given parameters +############################################################# + +- hosts: localhost + connection: local + gather_facts: false + + pre_tasks: + - name: "Check if ansible version is at least 2.10.x" + assert: + that: + - ansible_version.major >= 2 + - ansible_version.minor >= 10 + msg: "The ansible version has to be at least ({{ ansible_version.full }})" + +# add virtual server to load stage specific variables as context + - name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts" + add_host: + name: "{{ stage }}-virtual-host-to-read-groups-vars" + groups: + - "stage_{{ stage }}" + changed_when: False + + tasks: + - name: Add maria servers to hosts if necessary + add_host: + name: "{{ stage }}-maria-01" + groups: + - "stage_{{ stage }}" + - "{{ item }}" + changed_when: False + with_items: "{{ cluster_features }}" + when: item in ['connect_wordpress'] + +############################################################# +# exporting database backups for created inventory +############################################################# + +- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars" + serial: "{{ serial_number | default(1) }}" + remote_user: root + vars: + ansible_ssh_host: "{{ stage_server_domain }}" + + pre_tasks: + - name: "export autodiscover pre-tasks" + import_tasks: tasks/autodiscover_pre_tasks.yml + become: false + tags: + - always + + roles: + - role: export_maria_database + vars: + database_backup_file: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-wordpress.sql.gz" + when: + - "'connect_wordpress' in group_names" + - "target_database is defined" + + - role: export_maria_database + vars: + target_database: "{{ connect_wordpress_maria_database }}" + database_backup_file: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-wordpress.sql.gz" + when: + - "'connect_wordpress' in group_names" + +############################################################# +# Sending smardigo management message to process +############################################################# + +- hosts: "{{ stage }}-virtual-host-to-read-groups-vars" + serial: "{{ serial_number | default(1) }}" + gather_facts: false + connection: local + run_once: true + vars: + connect_jwt_username: "{{ management_admin_username }}" + + tasks: + - name: "Sending smardigo management message to <{{ smardigo_management_url }}>" + include_tasks: tasks/smardigo_management_message.yml diff --git a/roles/export_maria_database/defaults/main.yml b/roles/export_maria_database/defaults/main.yml new file mode 100644 index 0000000..7974d68 --- /dev/null +++ b/roles/export_maria_database/defaults/main.yml @@ -0,0 +1,3 @@ +--- + +upload_directory: "{{ backup_directory }}" diff --git a/roles/export_maria_database/tasks/main.yml b/roles/export_maria_database/tasks/main.yml new file mode 100644 index 0000000..6f4d3b7 --- /dev/null +++ b/roles/export_maria_database/tasks/main.yml @@ -0,0 +1,11 @@ +--- + +### tags: + +- name: "Export database <{{ target_database }}> to <{{ upload_directory }}/{{ database_backup_file }}>" + community.mysql.mysql_db: + name: "{{ target_database }}" + state: dump + target: "/{{ upload_directory }}/{{ database_backup_file }}" + config_file: "/etc/mysql/mariadb.conf.d/50-client.cnf" + login_password: "{{ mysql_root_password }}" diff --git a/roles/import_maria_database/vars/main.yml b/roles/import_maria_database/vars/main.yml deleted file mode 100644 index cd21505..0000000 --- a/roles/import_maria_database/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -