diff --git a/roles/awx/defaults/main.yml b/roles/awx/defaults/main.yml
index eeb6392..2feb703 100644
--- a/roles/awx/defaults/main.yml
+++ b/roles/awx/defaults/main.yml
@@ -37,3 +37,4 @@ awx_job_templates:
- name: "remove-service"
- name: "restore-database-backup"
- name: "update-monitoring"
+ - name: "update-service-state"
diff --git a/roles/service-state/defaults/main.yml b/roles/service-state/defaults/main.yml
new file mode 100644
index 0000000..ca17a6d
--- /dev/null
+++ b/roles/service-state/defaults/main.yml
@@ -0,0 +1,15 @@
+---
+
+service_state_commands:
+ - key: up
+ command: "docker-compose up -d"
+ - key: down
+ command: "docker-compose down"
+ - key: upgrade
+ command: "docker-compose pull && docker-compose down && docker-compose up -d"
+
+service_state_command: "{{ service_state_commands
+ | selectattr('key', 'match', service_state )
+ | map(attribute='command')
+ | list
+ | first }}"
\ No newline at end of file
diff --git a/roles/service-state/tasks/main.yml b/roles/service-state/tasks/main.yml
new file mode 100644
index 0000000..072bbd8
--- /dev/null
+++ b/roles/service-state/tasks/main.yml
@@ -0,0 +1,17 @@
+---
+
+### tags:
+
+- name: "Setting service state for <{{ service_id }}> to <{{ service_state }}>"
+ ansible.builtin.shell: "{{ service_state_command }}"
+ args:
+ chdir: '{{ service_base_path }}/{{ service_id }}'
+ register: service_state_command_output
+
+- name: "Printing service state stdout_lines"
+ debug:
+ msg: "{{ service_state_command_output }}"
+ delegate_to: 127.0.0.1
+ become: false
+ when:
+ - debug
diff --git a/smardigo/provisioning/process/simple-connect.bpmn b/smardigo/provisioning/process/simple-connect.bpmn
index 622e8d5..48a16bb 100644
--- a/smardigo/provisioning/process/simple-connect.bpmn
+++ b/smardigo/provisioning/process/simple-connect.bpmn
@@ -469,7 +469,7 @@ Variables.userId(authenticatedUserId)
${1}
- ${6}
+ ${3}
Flow_0r057gs
@@ -633,7 +633,7 @@ Variables.userId(authenticatedUserId)
${1}
- ${2}
+ ${4}
Flow_1c39717
@@ -646,7 +646,7 @@ Variables.userId(authenticatedUserId)
Service gestartet
- Flow_1xmeor7
+ Flow_00jy6ae
Flow_1rv440f
@@ -677,7 +677,26 @@ Variables.userId(authenticatedUserId)
-
+
+
+
+
+
+
+
+
+
+ down
+
+
+ ${progress_current + 1}
+
+
+ Flow_09id3fl
+ Flow_1xmeor7
+
+
+
@@ -692,10 +711,29 @@ Variables.userId(authenticatedUserId)
${progress_current + 1}
- Flow_09id3fl
- Flow_1xmeor7
+ Flow_1xmeor7
+ Flow_00a7lij
-
+
+
+
+
+
+
+
+
+
+
+ up
+
+
+ ${progress_current + 1}
+
+
+ Flow_00a7lij
+ Flow_00jy6ae
+
+
Flow_1n08t19
@@ -1456,9 +1494,17 @@ Server bei Hetzner löschen
+
+
+
+
+
+
+
+
-
+
@@ -1656,6 +1702,12 @@ Server bei Hetzner löschen
+
+
+
+
+
+
diff --git a/update-service-state.yml b/update-service-state.yml
new file mode 100644
index 0000000..b087557
--- /dev/null
+++ b/update-service-state.yml
@@ -0,0 +1,101 @@
+---
+
+# 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_services_str := (services to setup, e.g. 'connect,wordpress')
+# service_state := the state of the service (e.g. up, down, upgrade)
+# 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
+ gather_facts: false
+ connection: local
+
+ 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 }})"
+
+ - name: "Parsing cluster_services_str into cluster_services"
+ set_fact:
+ cluster_services: "{{ cluster_services_str | split(',') }}"
+
+ tasks:
+ - name: Add hosts
+ add_host:
+ name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-01"
+ groups:
+ - "stage_{{ stage }}"
+ - "{{ cluster_service }}"
+ - "{{ item }}"
+ changed_when: False
+ with_items: "{{ cluster_services }}"
+ when: item in ['connect', 'connect_wordpress']
+
+#############################################################
+# Stop services for created inventory
+#############################################################
+
+- hosts: "stage_{{ stage }}"
+ serial: "{{ serial_number | default(1) }}"
+ remote_user: root
+ vars:
+ service_state: up
+ ansible_ssh_host: "{{ stage_server_domain }}"
+
+ pre_tasks:
+ - name: "Import autodiscover pre-tasks"
+ include_tasks: tasks/autodiscover_pre_tasks.yml
+
+ roles:
+ - role: service-state
+ vars:
+ service_id: "{{ connect_id }}"
+ when: "'connect' in group_names"
+
+ - role: service-state
+ vars:
+ service_id: "{{ wordpress_id }}"
+ when: "'connect_wordpress' in group_names"
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- hosts: "stage_{{ stage }}"
+ serial: "{{ serial_number | default(1) }}"
+ gather_facts: false
+ connection: local
+ run_once: true
+
+ 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]
+ retries: 5
+ delay: 5
+ delegate_to: 127.0.0.1
+ when:
+ - scope_id is defined
+ - process_instance_id is defined
+ - smardigo_management_action is defined