From 39486c9406e66ad0b9cfc4d73b67104a4e82502f Mon Sep 17 00:00:00 2001 From: Sven Ketelsen Date: Thu, 2 Sep 2021 14:57:22 +0200 Subject: [PATCH] chore: aplit/renamed ansible playbooks --- ...atabase-cluster.yml => create-database.yml | 0 import-database.yml | 119 ++++++++++++++++++ roles/awx/tasks/awx-config.yml | 26 ++-- roles/upload-local-file/defaults/main.yml | 2 +- roles/upload-local-file/vars/main.yml | 1 - .../provisioning/process/simple-connect.bpmn | 6 +- ...-db-import.yml => upload-database-dumb.yml | 13 +- 7 files changed, 137 insertions(+), 30 deletions(-) rename create-database-cluster.yml => create-database.yml (100%) create mode 100644 import-database.yml rename create-db-import.yml => upload-database-dumb.yml (86%) diff --git a/create-database-cluster.yml b/create-database.yml similarity index 100% rename from create-database-cluster.yml rename to create-database.yml diff --git a/import-database.yml b/import-database.yml new file mode 100644 index 0000000..556c062 --- /dev/null +++ b/import-database.yml @@ -0,0 +1,119 @@ +--- + +# Parameters: +# playbook inventory +# stage := the type 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) (Currently max is 2 master/slave) +# cluster_services := (services to setup, e.g. ['connect', 'wordpress', ...]) +# uploaded_file := the dump file to import, has to be on the database server under /tmp (e.g. wordpress_portal.sql) +# target_database := (optional) the database to import 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 }})" + + tasks: + - name: Add hosts + add_host: + name: "{{ stage }}-maria-01" + groups: + - "stage_{{ stage }}" + - "{{ item }}" + cluster_service: "{{ item }}" + changed_when: False + with_items: "{{ cluster_services }}" + when: item in ['connect_wordpress'] + +############################################################# +# Setup services for created inventory +############################################################# + +- hosts: "stage_{{ stage }}" + serial: "{{ serial_number | default(1) }}" + remote_user: root + + pre_tasks: + - name: "Gathering current server infos from hetzner" + hcloud_server_info: + api_token: "{{ hetzner_authentication_token }}" + register: hetzner_server_infos + delegate_to: 127.0.0.1 + + - name: "Setting current server infos as fact: hetzner_server_infos_json" + set_fact: + hetzner_server_infos_json: "{{ hetzner_server_infos.hcloud_server_info }}" + delegate_to: 127.0.0.1 + + - name: "Reading ip address for {{ inventory_hostname }}" + set_fact: + stage_server_ip: "{{ hetzner_server_infos_json | json_query(querystr) | first }}" + vars: + querystr: "[?name=='{{ inventory_hostname }}'].ipv4_address" + delegate_to: 127.0.0.1 + + - name: "Printing ip address for {{ inventory_hostname }}" + debug: + msg: "{{ stage_server_ip }}" + delegate_to: 127.0.0.1 + when: + - debug + + roles: + - role: import-maria-database + when: + - "'connect_wordpress' in group_names" + - "target_database is defined" + - "uploaded_file is defined" + - role: import-maria-database + vars: + target_database: "{{ connect_wordpress_maria_database }}" + when: + - "'connect_wordpress' in group_names" + - "uploaded_file is defined" + +############################################################# +# Sending smardigo management message to process +############################################################# + +- hosts: "stage_{{ stage }}" + serial: "{{ serial_number | default(1) }}" + connection: local + gather_facts: false + + post_tasks: + - name: "Sending smardigo management message <{{ smardigo_management_action }}> to <{{ scope_id }}/{{ process_instance_id }}>" + uri: + url: "{{ smardigo_management_url }}" + method: POST + body_format: json + body: "{{ lookup('template','smardigo-management-message.json.j2') }}" + headers: + accept: "*/*" + Content-Type: "application/json" + Smardigo-User-Token: "{{ smardigo_management_token }}" + status_code: [200] + delegate_to: 127.0.0.1 + retries: 5 + delay: 5 + when: + - scope_id is defined + - process_instance_id is defined + - smardigo_management_action is defined \ No newline at end of file diff --git a/roles/awx/tasks/awx-config.yml b/roles/awx/tasks/awx-config.yml index 2213787..c8ba772 100644 --- a/roles/awx/tasks/awx-config.yml +++ b/roles/awx/tasks/awx-config.yml @@ -553,7 +553,7 @@ tags: - awx_config -- name: "187 all job templates" +- name: "Remove all job templates" uri: url: "{{ awx_base_url }}{{ item.url }}" method: DELETE @@ -576,18 +576,18 @@ include_tasks: awx-config-job-template.yml loop: - { - name: "create-database-cluster", - #description: "create-database-cluster", - #playbook_file: "create-database-cluster.yml", + name: "create-database", + #description: "create-database", + #playbook_file: "create-database.yml", credentials: [ "{{ awx_credential_hetzner_ansible_vault_id }}", "{{ awx_credential_hetzner_ansible_id }}", ] } - { - name: "create-db-import", - #description: "create-db-import", - #playbook_file: "create-db-import.yml", + name: "create-realm", + #description: "create-realm", + #playbook_file: "create-realm.yml", credentials: [ "{{ awx_credential_hetzner_ansible_vault_id }}", "{{ awx_credential_hetzner_ansible_id }}", @@ -603,18 +603,18 @@ ] } - { - name: "create-realm", - #description: "create-realm", - #playbook_file: "create-realm.yml", + name: "create-service", + #description: "create-service", + #playbook_file: "create-service.yml", credentials: [ "{{ awx_credential_hetzner_ansible_vault_id }}", "{{ awx_credential_hetzner_ansible_id }}", ] } - { - name: "create-service", - #description: "create-service", - #playbook_file: "create-service.yml", + name: "import-database", + #description: "import-database", + #playbook_file: "import-database.yml", credentials: [ "{{ awx_credential_hetzner_ansible_vault_id }}", "{{ awx_credential_hetzner_ansible_id }}", diff --git a/roles/upload-local-file/defaults/main.yml b/roles/upload-local-file/defaults/main.yml index de54568..5f31ebe 100644 --- a/roles/upload-local-file/defaults/main.yml +++ b/roles/upload-local-file/defaults/main.yml @@ -1,3 +1,3 @@ --- -upload_directory: /tmp +upload_directory: /tmp diff --git a/roles/upload-local-file/vars/main.yml b/roles/upload-local-file/vars/main.yml index cd21505..ed97d53 100644 --- a/roles/upload-local-file/vars/main.yml +++ b/roles/upload-local-file/vars/main.yml @@ -1,2 +1 @@ --- - diff --git a/smardigo/provisioning/process/simple-connect.bpmn b/smardigo/provisioning/process/simple-connect.bpmn index 0386945..7a545d5 100644 --- a/smardigo/provisioning/process/simple-connect.bpmn +++ b/smardigo/provisioning/process/simple-connect.bpmn @@ -548,12 +548,12 @@ Variables.userId(authenticatedUserId) Flow_1u7vy0j Flow_15fkmn4 - + - - + + ${progress_current + 1} diff --git a/create-db-import.yml b/upload-database-dumb.yml similarity index 86% rename from create-db-import.yml rename to upload-database-dumb.yml index ad39e11..5a1afda 100644 --- a/create-db-import.yml +++ b/upload-database-dumb.yml @@ -1,6 +1,6 @@ --- # Example call: -# poetry run ansible-playbook create-db-import.yml --ask-vault-pass -e "cluster_name='maria' cluster_size='1' stage='dev' upload_file='dumps/import.sql' uploaded_file='import.sql' target_database=test01" +# poetry run ansible-playbook upload-database-dumb.yml --ask-vault-pass -e "cluster_name='maria' cluster_size='1' stage='dev' upload_file='dumps/import.sql' uploaded_file='import.sql' # How this stuff works: # If `upload_file` is defined the upload role save the binary to `upload_directory` (default /tmp) @@ -88,17 +88,6 @@ when: - "'connect_wordpress' in group_names" - "upload_file is defined" - - role: import-maria-database - when: - - "'connect_wordpress' in group_names" - - "target_database is defined" - - "uploaded_file is defined" - - role: import-maria-database - vars: - target_database: "{{ connect_wordpress_maria_database }}" - when: - - "'connect_wordpress' in group_names" - - "uploaded_file is defined" ############################################################# # Sending smardigo management message to process