diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8eac27a6bd0aee07020838a89f60fb282be469e0..fafb30c3b46a3b3c43519f45c88ed3cf0e942751 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -39,6 +39,7 @@ bootstrap:
   artifacts:
     paths:
     - test/cluster_data/rke.log
+    - test/cluster_data/helmfile.log
     - test/inventory.yml
     - test/group_vars/all/settings.yml
     expire_in: 1 month
diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml
index 20f38d0792e4765d9a204ee4554d8116b17dc69b..4b23ebb7d69bdf9fcfeaa39dfb1dc6e58106c1e6 100644
--- a/ansible/bootstrap.yml
+++ b/ansible/bootstrap.yml
@@ -47,3 +47,5 @@
       tags: ['setup']
     - role: apps
       tags: ['apps']
+    - role: finalize
+      tags: ['finalize']
diff --git a/ansible/roles/apps/tasks/helmfiles.yml b/ansible/roles/apps/tasks/helmfiles.yml
index 08468d992598f5a24c779e06a2d9b6e207df4640..1097135203bd4703f8c56cf8196e7f52880adf77 100644
--- a/ansible/roles/apps/tasks/helmfiles.yml
+++ b/ansible/roles/apps/tasks/helmfiles.yml
@@ -23,6 +23,6 @@
     - NEXTCLOUD_MARIADB_PASSWORD: "{{ nextcloud_mariadb_password }}"
     - NEXTCLOUD_MARIADB_ROOT_PASSWORD: "{{ nextcloud_mariadb_root_password }}"
     - GRAFANA_ADMIN_PASSWORD: "{{ grafana_admin_password }}"
-  command: "/usr/local/bin/helmfile -b /snap/bin/helm -e oas -f {{ data_directory }}/source/helmfiles/helmfile.d/{{ item }}.yaml apply --suppress-secrets"
+  shell: /usr/local/bin/helmfile -b /snap/bin/helm -e oas -f {{ data_directory }}/source/helmfiles/helmfile.d/{{ item }}.yaml apply --suppress-secrets | sed 's/\x1B\[[0-9;]*[JKmsu]//g' >> {{ log_directory }}/helmfile.log
   with_items: "{{ helmfiles }}"
   when: item is not search("cert-manager")
diff --git a/ansible/roles/finalize/tasks/main.yml b/ansible/roles/finalize/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7c1b9f9ca7461396b49d4e5e76344689bed3efac
--- /dev/null
+++ b/ansible/roles/finalize/tasks/main.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: sync_cluster_data.yml
diff --git a/ansible/roles/finalize/tasks/sync_cluster_data.yml b/ansible/roles/finalize/tasks/sync_cluster_data.yml
new file mode 100644
index 0000000000000000000000000000000000000000..33ea808939cb0043951a791cac18143f53ad9e82
--- /dev/null
+++ b/ansible/roles/finalize/tasks/sync_cluster_data.yml
@@ -0,0 +1,20 @@
+---
+- name: Copy cluster information to local folder
+  tags:
+    - fetch
+    - rke
+    - kubectl
+    - helmfile
+  fetch:
+    src: "{{ item.src }}"
+    dest: "{{ item.dest }}"
+    flat: yes
+  loop:
+    - src: "{{ data_directory }}/rke/kube_config_cluster.yml"
+      dest: "{{ secret_directory }}/kube_config_cluster.yml"
+    - src: "{{ log_directory }}/rke.log"
+      dest: cluster_data/rke.log
+    - src: "{{ data_directory }}/rke/cluster.yml"
+      dest: cluster_data/rke_cluster.yml
+    - src: "{{ log_directory }}/helmfile.log"
+      dest: cluster_data/helmfile.log
diff --git a/ansible/roles/setup/tasks/rke.yml b/ansible/roles/setup/tasks/rke.yml
index 0f3708e40c093392678271fab796873138cc6138..8ea84379465b7c5f6d5518332d3df94933d21613 100644
--- a/ansible/roles/setup/tasks/rke.yml
+++ b/ansible/roles/setup/tasks/rke.yml
@@ -29,20 +29,3 @@
     state: link
     src: "{{ data_directory }}/rke/kube_config_cluster.yml"
     dest: /root/.kube/config
-
-- name: Copy cluster information to local folder
-  tags:
-    - fetch
-    - rke
-    - kubectl
-  fetch:
-    src: "{{ item.src }}"
-    dest: "{{ item.dest }}"
-    flat: yes
-  loop:
-    - src: "{{ data_directory }}/rke/kube_config_cluster.yml"
-      dest: "{{ secret_directory }}/kube_config_cluster.yml"
-    - src: "{{ log_directory }}/rke.log"
-      dest: cluster_data/rke.log
-    - src: "{{ data_directory }}/rke/cluster.yml"
-      dest: cluster_data/rke_cluster.yml