diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 5c965fe342061a66f3423fda958165c08ac6f059..0000000000000000000000000000000000000000
--- a/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-managed_clusters/**/*
-managed_clusters/*_credentials.sh
-**/keypair.key
diff --git a/README.md b/README.md
deleted file mode 100644
index 9690b070a17ccbac67149e783cac5ddf42d293ca..0000000000000000000000000000000000000000
--- a/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Kubernetes as a Service administration
-This repo is used to create clusters on [JSC-Cloud](https://cloud.jsc.fz-juelich.de) and deploy software on them.
-
-## Supported Labels
- - kured: "true"  -> Install [Kured](https://github.com/kubereboot/kured), this will reboot your nodes if necessary on a sunday between 2am and 5am (Timezone: Europe/Berlin). [more](https://gitlab.jsc.fz-juelich.de/kaas/fleet-deployments/-/tree/kured)
- - cinder-csi: "true"  -> Install [Cinder-CSI Plugin](https://github.com/kubernetes/cloud-provider-openstack/tree/release-1.26/docs/cinder-csi-plugin), this will create a storage class on the cluster, which uses OpenStack Cinder Volumes as persistent storage. [more](https://gitlab.jsc.fz-juelich.de/kaas/fleet-deployments/-/tree/openstack-cinder-csi)
-
-
-## Create Cluster
-Requirements:
- - OpenStack CLI (`pip install openstackclient`)
- - application credentials for `jsc-cloud-team` project
- - application credentials for `<user>` project ( Roles: load-balancer_member member reader)
-
-Create OpenStack environment in users project:
- - `git clone --single-branch --branch main git@gitlab.jsc.fz-juelich.de:kaas/fleet-deployments.git fleet_deployments/managed_clusters`
- - `cd fleet_deployments/managed_clusters`
- - Store `jsc-cloud-team` credentials in `managed_clusters/management_credentials.sh`
- - Store `<user>` credentials in `managed_clusters/<NAME>_credentials.sh` (<NAME> must be equal to the Name given in create.sh)
- - **update create.sh , fill in name, project id and subnet cidr**
- - `/bin/bash create.sh`
-
-Create NodeTemplate / RKETemplate
- - Browse to https://zam12142.zam.kfa-juelich.de , log in
- - Open sidebar (click top left) -> Cluster Management
- - RKE1 Configuration (sidebar) -> Node Templates
- - Add Template (top right), choose OpenStack
- - Create 2 Node Templates (main + worker template, see <NAME>/userdata_[main|worker].yaml for values) 
- - **IMPORTANT: At the end of the node template creation, `Engine Options` -> `Docker Install URL` must be "None"!**
- - RKE1 Configuration (sidebar) -> RKE Templates
- - Add template (top right), name should be equal to cluster name, revision can be v1
- - Click "Edit as YAML" on the right side, copy the ${NAME}/rke.yaml file from into it.
-
-Create Cluster:
- - Browse to https://zam12142.zam.kfa-juelich.de , log in
- - Open sidebar (click top left) -> Cluster Management
- - Create (top right), select RKE1 in the top right, click OpenStack
- - Cluster Name: as before in create.sh, create two nodepools (one for main nodes [check: drain before delete, etcd, control-plane], one for worker nodes [check: drain before delete, worker]). Set "Auto Replace" to 5 minutes. Use the previously created node templates.
- - Cluster Options: "Use an existing RKE Template and revision" -> Choose the previously created one.
- - Member roles (above Cluster Options) -> Add member as owner to this cluster. If user does not exists yet, it can be done later.
- - Labels: can be used to install default software. See List above for available labels
- - Scroll down: Create -> Done.
-
-How to Manage Cluster (once it's created, may take up to 10 minutes):
- - 1. via UI: https://zam12142.zam.kfa-juelich.de , open sidebar (click top left), Explore Cluster -> <Name>
- - 2. via CLI: Install kubectl, download kubectl (icons top right in Explore Cluster)
-
-How to increase/decrease number of nodes:
- - https://zam12142.zam.kfa-juelich.de , sidebar (click top left), Cluster Management, Click on Cluster name, use `+` in nodepool to add more nodes in nodepool. 
- - When decreasing you should drain them first:
-    - `kubectl cordon <node>` (or in Explore Clusters -> <name> -> nodes)
-    - `kubectl drain --ignore-daemonsets --delete-emptydir-data <node>` (or in UI, same as above)
-    - In Cluster Management select node and click on `Scale Down`. (Deleted nodes would be replaced otherwise)
-
-
-## Delete cluster
- - Delete Cluster in Rancher UI
- - Use `delete.sh` to revert all changes done before (network, security-group, static-routes, etc.)
diff --git a/fleet.yaml b/fleet.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..915bac3e8293ded48ac331a6be0dd29bc5400b39
--- /dev/null
+++ b/fleet.yaml
@@ -0,0 +1,20 @@
+defaultNamespace: kube-system
+helm:
+  releaseName: openstack-cloud-controller-manager
+  repo: https://kubernetes.github.io/cloud-provider-openstack
+  chart: openstack-cloud-controller-manager
+  version: 2.30.2
+  values:
+    nodeSelector:
+      node-role.kubernetes.io/control-plane: "true"
+    tolerations:
+      - key: node.cloudprovider.kubernetes.io/uninitialized
+        value: "true"
+        effect: NoSchedule
+      - key: node-role.kubernetes.io/control-plane
+        effect: NoSchedule
+      - key: node-role.kubernetes.io/etcd
+        effect: NoExecute
+    secret:
+      create: false
+
diff --git a/managed_clusters/create.sh b/managed_clusters/create.sh
deleted file mode 100644
index f93e9d101dace06b75ff750d2b3abab8c7ea0afc..0000000000000000000000000000000000000000
--- a/managed_clusters/create.sh
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/bin/bash
-
-### Customization
-
-NAME="loki-1" # Enter a (ideally) unique name for the cluster
-PROJECT_ID="da90a49b04a54afca1298491a5e23ba5" # project id from the users project, where the k8s cluster should be created
-SUBNET_CIDR="10.0.180.0/24" # Unique CIDR (10.0.x.0/24) , each cluster needs a different subnet CIDR.
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-
-if [[ ! -f ${DIR}/${NAME}_credentials.sh ]] || [[ ! -f ${DIR}/management_credentials.sh ]]; then
-  echo "Missing credentials. Stop script"
-  exit 1
-fi
-
-###
-# set to false, to get the output at the end without creating anything
-CREATE="true"
-
-mkdir -p ${DIR}/${NAME}
-
-# Some variables for our `jsc-cloud-team` management project
-MANAGEMENT_PROJECT_ID=2092d29f72ca4f32ac416cc545986007
-MANAGEMENT_ROUTER_ID=90d2a94c-3bff-4a79-88d2-00dc6626e278
-#MANAGEMENT_ROUTER_INTERNAL_ID=5e048465-53ed-4f24-8eec-871cf7d668d5
-MANAGEMENT_NETWORK_CIDR="10.0.1.0/24"
-MANAGEMENT_GATEWAY_INTERNAL="10.0.1.253"
-MANAGEMENT_SECGROUP_ID=7b7de2f9-a561-4f3c-929a-fd8bc26a0d2c
-
-# activate `<user>` project credentials
-source ${DIR}/${NAME}_credentials.sh
-
-if [[ $CREATE == "true" ]]; then
-    # Create network and share it with `jsc-cloud-team`
-    USER_NETWORK_ID=$(openstack network create $NAME -c id -f value)
-    USER_SUBNET_ID=$(openstack subnet create --subnet-range $SUBNET_CIDR --dns-nameserver 134.94.32.3 --dns-nameserver 134.94.32.4 --dns-nameserver 134.94.32.5 --network $USER_NETWORK_ID $NAME -c id -f value)
-    openstack network rbac create --target-project $MANAGEMENT_PROJECT_ID --action access_as_shared --type network $USER_NETWORK_ID
-else
-    # Get IDs
-    USER_NETWORK_ID=$(openstack network show $NAME -c id -f value)
-    USER_SUBNET_ID=$(openstack subnet show $NAME -c id -f value)
-fi
-
-# activate `jsc-cloud-team` project credentials
-source ${DIR}/management_credentials.sh
-
-if [[ $CREATE == "true" ]]; then
-    # Add port from shared network to jsc-cloud-team's internal router
-    #INTERNAL_ROUTER_PORT_ID=$(openstack port create --network $USER_NETWORK_ID -f value -c id ${NAME})
-    #INTERNAL_ROUTER_PORT_IP=$(openstack port show $INTERNAL_ROUTER_PORT_ID -f json -c fixed_ips | jq -r '.fixed_ips[0].ip_address')
-    #openstack router add port $MANAGEMENT_ROUTER_INTERNAL_ID $INTERNAL_ROUTER_PORT_ID
-    openstack router add subnet $MANAGEMENT_ROUTER_ID $USER_SUBNET_ID
-    # Set static route for external (default) router
-    #openstack router set --route destination=$SUBNET_CIDR,gateway=$MANAGEMENT_GATEWAY_INTERNAL $MANAGEMENT_ROUTER_ID
-    # Add security group rules to allow new cluster to reach Rancher VMs
-    openstack security group rule create --dst-port 443 --remote-ip=$SUBNET_CIDR --protocol tcp --description "Rancher access for ${NAME} cluster" $MANAGEMENT_SECGROUP_ID -f value -c id
-    openstack security group rule create --dst-port 111 --remote-ip=$SUBNET_CIDR --protocol tcp --description "NFS access for ${NAME} cluster" $MANAGEMENT_SECGROUP_ID -f value -c id
-    openstack security group rule create --dst-port 111 --remote-ip=$SUBNET_CIDR --protocol udp --description "NFS access for ${NAME} cluster" $MANAGEMENT_SECGROUP_ID -f value -c id
-    openstack security group rule create --dst-port 2049 --remote-ip=$SUBNET_CIDR --protocol tcp --description "NFS access for ${NAME} cluster" $MANAGEMENT_SECGROUP_ID -f value -c id
-    openstack security group rule create --dst-port 2049 --remote-ip=$SUBNET_CIDR --protocol udp --description "NFS access for ${NAME} cluster" $MANAGEMENT_SECGROUP_ID -f value -c id
-fi
-
-# activate `<user>` project credentials
-source ${DIR}/${NAME}_credentials.sh
-
-if [[ $CREATE == "true" ]]; then
-    # Set static route for <user> project router
-    # openstack router set --route destination=$MANAGEMENT_NETWORK_CIDR,gateway=$INTERNAL_ROUTER_PORT_IP $USER_ROUTER_ID
-
-    # Create security group
-    # More details: https://ranchermanager.docs.rancher.com/getting-started/installation-and-upgrade/installation-requirements/port-requirements
-    USER_SEC_GROUP_ID=$(openstack security group create ${NAME} -c id -f value)
-    openstack security group rule create --dst-port 22 --remote-ip=$MANAGEMENT_NETWORK_CIDR --protocol tcp --description "SSH provisioning of node by RKE" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 2376 --remote-ip=$MANAGEMENT_NETWORK_CIDR --protocol tcp --description "Docker daemon TLS port used by node driver" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 80 --remote-ip=$SUBNET_CIDR --protocol tcp --description "http ingress" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 443 --remote-ip=$SUBNET_CIDR --protocol tcp --description "https ingress" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 2379 --remote-ip=$SUBNET_CIDR --protocol tcp --description "etcd client requests" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 2380 --remote-ip=$SUBNET_CIDR --protocol tcp --description "etcd peer communication" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 6443 --remote-ip=$SUBNET_CIDR --protocol tcp --description "Kubernetes apiserver" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 8472 --remote-ip=$SUBNET_CIDR --protocol udp --description "Canal/Flannel VXLAN overlay networking" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 9099 --remote-ip=$SUBNET_CIDR --protocol tcp --description "Canal/Flannel livenessProbe/readinessProbe" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 10250 --remote-ip=$SUBNET_CIDR --protocol tcp --description "Metrics server communication with all nodes" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 10254 --remote-ip=$SUBNET_CIDR --protocol tcp --description "Ingress controller livenessProbe/readinessProbe" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 30000:32767 --remote-ip=$SUBNET_CIDR --protocol tcp --description "NodePort port range" $USER_SEC_GROUP_ID -f value -c id
-    openstack security group rule create --dst-port 30000:32767 --remote-ip=$SUBNET_CIDR --protocol udp --description "NodePort port range" $USER_SEC_GROUP_ID -f value -c id
-
-    # Create a keypair, will be used to bootstrap VMs of the new cluster
-    openstack keypair create ${NAME} > ${DIR}/${NAME}/keypair.key
-    chmod 400 ${DIR}/${NAME}/keypair.key
-fi
-
-
-# You can use these variables to create NodeTemplates in Rancher.
-# IMPORTANT: at the end of the nodetemplate, set "engineInstallUrl" to None. 
-# Docker will be installed during the cloud-init runcmd phase. 
-# You'll find the userdata files in ${DIR}/${NAME}/userdata_[main|worker].yaml
-echo "--- NodeTemplate ---"
-echo "applicationCredentialId:     ${OS_APPLICATION_CREDENTIAL_ID}"
-echo "applicationCredentialSecret: ${OS_APPLICATION_CREDENTIAL_SECRET}"
-echo "authUrl:                     https://cloud.jsc.fz-juelich.de:5000/v3"
-echo "domainId:                    default"
-echo "flavorId:                    d468d3fb-18da-4bd3-94ce-9c4793cf2082 (4Cpu / 8GB)"
-echo "flavorId:                    05572232-73cc-4dfc-87af-b9f84d56bd33 (2Cpu / 4GB)"
-echo "imageId:                     1b14ce21-5bd3-4776-860f-8d77a0232d24"
-echo "keypairName:                 ${NAME}"
-echo "netId:                       ${USER_NETWORK_ID}"
-echo "privateKeyFile:"
-cat ${DIR}/${NAME}/keypair.key
-echo "region:                      JSCCloud"
-echo "secGroups:                   ${NAME}"
-echo "sshUser:                     ubuntu"
-echo "tenantDomainId:              aaa9e797f2b94bbfab233dab6b48697a"
-echo "tenantId:                    ${PROJECT_ID}"
-echo "userDataFile:                see files for main/worker in ${DIR}"
-sed -e "s@<name>@${NAME}@g" ${DIR}/userdata_main.yaml > ${DIR}/${NAME}/userdata_main.yaml
-sed -e "s@<name>@${NAME}@g" ${DIR}/userdata_worker.yaml > ${DIR}/${NAME}/userdata_worker.yaml
-sed -e "s@<name>@${NAME}@g" ${DIR}/userdata_usernode.yaml > ${DIR}/${NAME}/userdata_usernode.yaml
-echo "engineInstallUrl:            None"
-echo "----------------------------------"
-
-
-sed -e "s@<credential_id>@${OS_APPLICATION_CREDENTIAL_ID}@g" -e "s@<credential_secret>@${OS_APPLICATION_CREDENTIAL_SECRET}@g" -e "s@<subnet_id>@${USER_SUBNET_ID}@g" ${DIR}/rke.yaml > ${DIR}/${NAME}/rke.yaml
-
-# ssh into the rancher-1 vm.
-# Create a NFS folder for the cluster-backups
-# Allow access to this directory
-echo "---- Administrator ----"
-echo "ssh ubuntu@134.94.198.215"
-echo "sudo su"
-echo "mkdir /nfs/cluster-backups/${NAME}"
-echo "echo \"/nfs/cluster-backups/${NAME} ${SUBNET_CIDR}(rw,sync,no_root_squash,no_subtree_check)\" >> /etc/exports"
-echo "exportfs -a"
-echo "--------------------------------"
-echo "---- Logs for the cluster creation (on Rancher-1 VM)----"
-echo "kubectl -n cattle-system logs -f -l app=rancher"
-echo "----------------------------------"
diff --git a/managed_clusters/credentials_unset.sh b/managed_clusters/credentials_unset.sh
deleted file mode 100644
index a5a796c1f01e8ca342e7bb218feb3a0400e7acd6..0000000000000000000000000000000000000000
--- a/managed_clusters/credentials_unset.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env bash
-
-unset OS_AUTH_TYPE
-unset OS_AUTH_URL
-unset OS_IDENTITY_API_VERSION
-unset OS_REGION_NAME
-unset OS_INTERFACE
-unset OS_APPLICATION_CREDENTIAL_ID
-unset OS_APPLICATION_CREDENTIAL_SECRET
-
diff --git a/managed_clusters/delete.sh b/managed_clusters/delete.sh
deleted file mode 100644
index aaeec32e10e1cfafff508fb3e1f74ef92013c652..0000000000000000000000000000000000000000
--- a/managed_clusters/delete.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/bash
-
-### Customization
-
-NAME=""
-SUBNET_CIDR=""
-
-###
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-
-MANAGEMENT_PROJECT_ID=2092d29f72ca4f32ac416cc545986007
-MANAGEMENT_ROUTER_ID=90d2a94c-3bff-4a79-88d2-00dc6626e278
-MANAGEMENT_ROUTER_INTERNAL_ID=5e048465-53ed-4f24-8eec-871cf7d668d5
-MANAGEMENT_NETWORK_CIDR="10.0.1.0/24"
-MANAGEMENT_GATEWAY_INTERNAL="10.0.1.253"
-MANAGEMENT_SECGROUP_ID=7b7de2f9-a561-4f3c-929a-fd8bc26a0d2c
-
-source ${DIR}/credentials.sh
-
-USER_ROUTER_ID=$(openstack router show router -f value -c id)
-USER_NETWORK_ID=$(openstack network show $NAME -f value -c id)
-USER_SUBNET_ID=$(openstack network show $NAME -c subnets -f json | jq -r '.subnets[0]')
-
-openstack keypair delete ${NAME}
-rm ${DIR}/keypair.key
-USER_SEC_GROUP_ID=$(openstack security group create ${NAME} -c id -f value)
-openstack security group delete $USER_SEC_GROUP_ID
-
-source ${DIR}/../management_credentials.sh
-
-INTERNAL_ROUTER_PORT_ID=$(openstack port show -f value -c id ${NAME})
-INTERNAL_ROUTER_PORT_IP=$(openstack port show $INTERNAL_ROUTER_PORT_ID -f json -c fixed_ips | jq -r '.fixed_ips[0].ip_address')
-openstack router remove port $MANAGEMENT_ROUTER_INTERNAL_ID $INTERNAL_ROUTER_PORT_ID
-openstack router unset --route destination=$SUBNET_CIDR,gateway=$MANAGEMENT_GATEWAY_INTERNAL $MANAGEMENT_ROUTER_ID
-RULE_ID=$(openstack security group rule list -c ID -c 'IP Range' -c 'Port Range' -c 'IP Protocol' -f value $MANAGEMENT_SECGROUP_ID | grep "443:443" | grep tcp | grep "$SUBNET_CIDR" | cut -d' ' -f1)
-openstack security group rule delete $RULE_ID
-RULE_ID=$(openstack security group rule list -c ID -c 'IP Range' -c 'Port Range' -c 'IP Protocol' -f value $MANAGEMENT_SECGROUP_ID | grep "111:111" | grep tcp | grep "$SUBNET_CIDR" | cut -d' ' -f1)
-openstack security group rule delete $RULE_ID
-RULE_ID=$(openstack security group rule list -c ID -c 'IP Range' -c 'Port Range' -c 'IP Protocol' -f value $MANAGEMENT_SECGROUP_ID | grep "2049:2049" | grep tcp | grep "$SUBNET_CIDR" | cut -d' ' -f1)
-openstack security group rule delete $RULE_ID
-RULE_ID=$(openstack security group rule list -c ID -c 'IP Range' -c 'Port Range' -c 'IP Protocol' -f value $MANAGEMENT_SECGROUP_ID | grep "111:111" | grep udp | grep "$SUBNET_CIDR" | cut -d' ' -f1)
-openstack security group rule delete $RULE_ID
-RULE_ID=$(openstack security group rule list -c ID -c 'IP Range' -c 'Port Range' -c 'IP Protocol' -f value $MANAGEMENT_SECGROUP_ID | grep "2049:2049" | grep udp | grep "$SUBNET_CIDR" | cut -d' ' -f1)
-openstack security group rule delete $RULE_ID
-
-source ${DIR}/credentials.sh
-
-openstack router unset --route destination=$MANAGEMENT_NETWORK_CIDR,gateway=$INTERNAL_ROUTER_PORT_IP $USER_ROUTER_ID
-openstack router remove subnet $USER_ROUTER_ID $USER_SUBNET_ID
-openstack network delete $USER_NETWORK_ID
-
-echo "ssh Rancher-1"
-echo "# Remove nfs share for cluster in /etc/exports"
-echo "exportfs -a"
-echo "# Remove nfs backup directory for cluster, if no longer needed"
diff --git a/managed_clusters/rke.yaml b/managed_clusters/rke.yaml
deleted file mode 100644
index d6cae888c26760b5e77745aedac71ba4cb6c9ce8..0000000000000000000000000000000000000000
--- a/managed_clusters/rke.yaml
+++ /dev/null
@@ -1,348 +0,0 @@
-docker_root_dir: /var/lib/docker
-enable_cluster_alerting: false
-enable_cluster_monitoring: false
-enable_network_policy: false
-local_cluster_auth_endpoint:
-  enabled: true
-rancher_kubernetes_engine_config:
-  addon_job_timeout: 45
-  addons: |-
-    ---
-    apiVersion: v1
-    stringData:
-      cloud-config: |-
-        [Global]
-        auth-url=https://cloud.jsc.fz-juelich.de:5000/v3
-        application-credential-id=<credential_id>
-        application-credential-secret=<credential_secret>
-        region=JSCCloud
-        tls-insecure=true
-        [LoadBalancer]
-        use-octavia=true
-        subnet-id=<subnet_id>
-        floating-network-id=c2ce19a1-ad08-41fb-8dd2-4b97d78815fc
-        manage-security-groups=false
-        [BlockStorage]
-        bs-version=v2
-        ignore-volume-az=true
-    kind: Secret
-    metadata:
-      name: cloud-config
-      namespace: kube-system
-    ---
-    apiVersion: v1
-    kind: ServiceAccount
-    metadata:
-      name: cloud-controller-manager
-      namespace: kube-system
-    ---
-    apiVersion: apps/v1
-    kind: DaemonSet
-    metadata:
-      name: openstack-cloud-controller-manager
-      namespace: kube-system
-      labels:
-        k8s-app: openstack-cloud-controller-manager
-    spec:
-      selector:
-        matchLabels:
-          k8s-app: openstack-cloud-controller-manager
-      updateStrategy:
-        type: RollingUpdate
-      template:
-        metadata:
-          labels:
-            k8s-app: openstack-cloud-controller-manager
-        spec:
-          nodeSelector:
-            node-role.kubernetes.io/controlplane: "true"
-          securityContext:
-            runAsUser: 1001
-          tolerations:
-          - key: node.cloudprovider.kubernetes.io/uninitialized
-            value: "true"
-            effect: NoSchedule
-          - key: node-role.kubernetes.io/controlplane
-            effect: NoSchedule
-            value: "true"
-          - key: node-role.kubernetes.io/etcd
-            effect: NoExecute
-            value: "true"
-          serviceAccountName: cloud-controller-manager
-          containers:
-            - name: openstack-cloud-controller-manager
-              image: registry.k8s.io/provider-os/openstack-cloud-controller-manager:v1.26.3
-              args:
-                - /bin/openstack-cloud-controller-manager
-                - --v=1
-                - --cluster-name=$(CLUSTER_NAME)
-                - --cloud-config=$(CLOUD_CONFIG)
-                - --cloud-provider=openstack
-                - --use-service-account-credentials=true
-                - --bind-address=127.0.0.1
-              volumeMounts:
-                - mountPath: /etc/kubernetes/pki
-                  name: k8s-certs
-                  readOnly: true
-                - mountPath: /etc/ssl/certs
-                  name: ca-certs
-                  readOnly: true
-                - mountPath: /etc/config
-                  name: cloud-config-volume
-                  readOnly: true
-              resources:
-                requests:
-                  cpu: 200m
-              env:
-                - name: CLOUD_CONFIG
-                  value: /etc/config/cloud-config
-                - name: CLUSTER_NAME
-                  value: kubernetes
-          hostNetwork: true
-          volumes:
-          - hostPath:
-              path: /etc/kubernetes/pki
-              type: DirectoryOrCreate
-            name: k8s-certs
-          - hostPath:
-              path: /etc/ssl/certs
-              type: DirectoryOrCreate
-            name: ca-certs
-          - name: cloud-config-volume
-            secret:
-              secretName: cloud-config
-    ---
-    apiVersion: v1
-    items:
-    - apiVersion: rbac.authorization.k8s.io/v1
-      kind: ClusterRoleBinding
-      metadata:
-        name: system:cloud-node-controller
-      roleRef:
-        apiGroup: rbac.authorization.k8s.io
-        kind: ClusterRole
-        name: system:cloud-node-controller
-      subjects:
-      - kind: ServiceAccount
-        name: cloud-node-controller
-        namespace: kube-system
-    - apiVersion: rbac.authorization.k8s.io/v1
-      kind: ClusterRoleBinding
-      metadata:
-        name: system:cloud-controller-manager
-      roleRef:
-        apiGroup: rbac.authorization.k8s.io
-        kind: ClusterRole
-        name: system:cloud-controller-manager
-      subjects:
-      - kind: ServiceAccount
-        name: cloud-controller-manager
-        namespace: kube-system
-    kind: List
-    metadata: {}
-    ---
-    apiVersion: v1
-    items:
-    - apiVersion: rbac.authorization.k8s.io/v1
-      kind: ClusterRole
-      metadata:
-        name: system:cloud-controller-manager
-      rules:
-      - apiGroups:
-        - coordination.k8s.io
-        resources:
-        - leases
-        verbs:
-        - get
-        - create
-        - update
-      - apiGroups:
-        - ""
-        resources:
-        - events
-        verbs:
-        - create
-        - patch
-        - update
-      - apiGroups:
-        - ""
-        resources:
-        - nodes
-        verbs:
-        - '*'
-      - apiGroups:
-        - ""
-        resources:
-        - nodes/status
-        verbs:
-        - patch
-      - apiGroups:
-        - ""
-        resources:
-        - services
-        verbs:
-        - list
-        - patch
-        - update
-        - watch
-      - apiGroups:
-        - ""
-        resources:
-        - services/status
-        verbs:
-        - patch
-      - apiGroups:
-        - ""
-        resources:
-        - serviceaccounts
-        verbs:
-        - create
-        - get
-      - apiGroups:
-        - ""
-        resources:
-        - serviceaccounts/token
-        verbs:
-        - create
-      - apiGroups:
-        - ""
-        resources:
-        - persistentvolumes
-        verbs:
-        - '*'
-      - apiGroups:
-        - ""
-        resources:
-        - endpoints
-        verbs:
-        - create
-        - get
-        - list
-        - watch
-        - update
-      - apiGroups:
-        - ""
-        resources:
-        - configmaps
-        verbs:
-        - get
-        - list
-        - watch
-      - apiGroups:
-        - ""
-        resources:
-        - secrets
-        verbs:
-        - list
-        - get
-        - watch
-    - apiVersion: rbac.authorization.k8s.io/v1
-      kind: ClusterRole
-      metadata:
-        name: system:cloud-node-controller
-      rules:
-      - apiGroups:
-        - ""
-        resources:
-        - nodes
-        verbs:
-        - '*'
-      - apiGroups:
-        - ""
-        resources:
-        - nodes/status
-        verbs:
-        - patch
-      - apiGroups:
-        - ""
-        resources:
-        - events
-        verbs:
-        - create
-        - patch
-        - update
-    kind: List
-    metadata: {}
-  authentication:
-    strategy: x509
-  authorization: {}
-  bastion_host:
-    ignore_proxy_env_vars: false
-    ssh_agent_auth: false
-  cloud_provider:
-    name: external
-  dns:
-    linear_autoscaler_params: {}
-    node_selector: null
-    nodelocal:
-      node_selector: null
-      update_strategy:
-        rolling_update: {}
-    options: null
-    provider: coredns
-    reversecidrs: null
-    stubdomains: null
-    tolerations: null
-    update_strategy: {}
-    upstreamnameservers:
-    - 134.94.32.3
-    - 134.94.32.4
-    - 134.94.32.5
-  enable_cri_dockerd: false
-  ignore_docker_version: true
-  ingress:
-    default_backend: false
-    default_ingress_class: true
-    http_port: 0
-    https_port: 0
-    provider: none
-  kubernetes_version: v1.26.7-rancher1-1
-  monitoring:
-    provider: metrics-server
-    replicas: 1
-  network:
-    mtu: 0
-    options:
-      flannel_backend_type: vxlan
-    plugin: canal
-  restore:
-    restore: false
-  rotate_encryption_key: false
-  services:
-    etcd:
-      backup_config:
-        enabled: true
-        interval_hours: 12
-        retention: 6
-        safe_timestamp: false
-        timeout: 300
-      creation: 12h
-      extra_args:
-        election-timeout: '5000'
-        heartbeat-interval: '500'
-      gid: 0
-      retention: 72h
-      snapshot: false
-      uid: 0
-    kube-api:
-      always_pull_images: false
-      pod_security_policy: false
-      secrets_encryption_config:
-        enabled: false
-      service_node_port_range: 30000-32767
-    kube-controller: {}
-    kubelet:
-      fail_swap_on: false
-      generate_serving_certificate: false
-    kubeproxy: {}
-    scheduler: {}
-  ssh_agent_auth: false
-  upgrade_strategy:
-    max_unavailable_controlplane: '1'
-    max_unavailable_worker: 10%
-    node_drain_input:
-      delete_local_data: false
-      force: false
-      grace_period: -1
-      ignore_daemon_sets: true
-      timeout: 120
diff --git a/managed_clusters/userdata_main.yaml b/managed_clusters/userdata_main.yaml
deleted file mode 100644
index 4de553eb4b36fc5970e716c2444143a5685d2063..0000000000000000000000000000000000000000
--- a/managed_clusters/userdata_main.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-#cloud-config
-
-package_update: false
-package_upgrade: false
-
-write_files:
-  - encoding: b64
-    content: Ly8gQXV0b21hdGljYWxseSB1cGdyYWRlIHBhY2thZ2VzIGZyb20gdGhlc2UgKG9yaWdpbjphcmNoaXZlKSBwYWlycwovLwovLyBOb3RlIHRoYXQgaW4gVWJ1bnR1IHNlY3VyaXR5IHVwZGF0ZXMgbWF5IHB1bGwgaW4gbmV3IGRlcGVuZGVuY2llcwovLyBmcm9tIG5vbi1zZWN1cml0eSBzb3VyY2VzIChlLmcuIGNocm9taXVtKS4gQnkgYWxsb3dpbmcgdGhlIHJlbGVhc2UKLy8gcG9ja2V0IHRoZXNlIGdldCBhdXRvbWF0aWNhbGx5IHB1bGxlZCBpbi4KVW5hdHRlbmRlZC1VcGdyYWRlOjpBbGxvd2VkLU9yaWdpbnMgewoJIiR7ZGlzdHJvX2lkfToke2Rpc3Ryb19jb2RlbmFtZX0iOwoJIiR7ZGlzdHJvX2lkfToke2Rpc3Ryb19jb2RlbmFtZX0tc2VjdXJpdHkiOwoJLy8gRXh0ZW5kZWQgU2VjdXJpdHkgTWFpbnRlbmFuY2U7IGRvZXNuJ3QgbmVjZXNzYXJpbHkgZXhpc3QgZm9yCgkvLyBldmVyeSByZWxlYXNlIGFuZCB0aGlzIHN5c3RlbSBtYXkgbm90IGhhdmUgaXQgaW5zdGFsbGVkLCBidXQgaWYKCS8vIGF2YWlsYWJsZSwgdGhlIHBvbGljeSBmb3IgdXBkYXRlcyBpcyBzdWNoIHRoYXQgdW5hdHRlbmRlZC11cGdyYWRlcwoJLy8gc2hvdWxkIGFsc28gaW5zdGFsbCBmcm9tIGhlcmUgYnkgZGVmYXVsdC4KCSIke2Rpc3Ryb19pZH1FU01BcHBzOiR7ZGlzdHJvX2NvZGVuYW1lfS1hcHBzLXNlY3VyaXR5IjsKCSIke2Rpc3Ryb19pZH1FU006JHtkaXN0cm9fY29kZW5hbWV9LWluZnJhLXNlY3VyaXR5IjsKCSIke2Rpc3Ryb19pZH06JHtkaXN0cm9fY29kZW5hbWV9LXVwZGF0ZXMiOwovLwkiJHtkaXN0cm9faWR9OiR7ZGlzdHJvX2NvZGVuYW1lfS1wcm9wb3NlZCI7Ci8vCSIke2Rpc3Ryb19pZH06JHtkaXN0cm9fY29kZW5hbWV9LWJhY2twb3J0cyI7Cn07CgovLyBQeXRob24gcmVndWxhciBleHByZXNzaW9ucywgbWF0Y2hpbmcgcGFja2FnZXMgdG8gZXhjbHVkZSBmcm9tIHVwZ3JhZGluZwpVbmF0dGVuZGVkLVVwZ3JhZGU6OlBhY2thZ2UtQmxhY2tsaXN0IHsKfTsKClVuYXR0ZW5kZWQtVXBncmFkZTo6RGV2UmVsZWFzZSAiYXV0byI7Cg==
-    owner: root:root
-    path: /etc/apt/apt.conf.d/50unattended-upgrades
-    permissions: '0644'
-  - encoding: b64
-    content: L3Zhci9saWIvZG9ja2VyL2NvbnRhaW5lcnMvKi8qLmxvZyB7CiAgcm90YXRlIDcKICBkYWlseQogIGNvbXByZXNzCiAgbWlzc2luZ29rCiAgZGVsYXljb21wcmVzcwogIGNvcHl0cnVuY2F0ZQp9Cg==
-    owner: root:root
-    path: /etc/logrotate.d/docker-container
-    permissions: '0644'
-  - encoding: b64
-    content: IwojIERlZmF1bHQgc2V0dGluZ3MgZm9yIC9ldGMvaW5pdC5kL3N5c3N0YXQsIC9ldGMvY3Jvbi5kL3N5c3N0YXQKIyBhbmQgL2V0Yy9jcm9uLmRhaWx5L3N5c3N0YXQgZmlsZXMKIwoKIyBTaG91bGQgc2FkYyBjb2xsZWN0IHN5c3RlbSBhY3Rpdml0eSBpbmZvcm1hdGlvbnM/IFZhbGlkIHZhbHVlcwojIGFyZSAidHJ1ZSIgYW5kICJmYWxzZSIuIFBsZWFzZSBkbyBub3QgcHV0IG90aGVyIHZhbHVlcywgdGhleQojIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgZGViY29uZiEKRU5BQkxFRD0idHJ1ZSIKCg==
-    owner: root:root
-    path: /etc/default/sysstat
-    permissions: '0644'
-  - encoding: b64
-    content: a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9MAo=
-    owner: root:root
-    path: /etc/sysctl.d/99-disable-unpriv-userns.conf
-    permissions: '0644'
-
-runcmd:
-  - echo "$(date) - Start node" >> /home/ubuntu/start.log
-  - echo "$(date) - Sleep 5 seconds, to avoid race condition" >> /home/ubuntu/start.log
-  - sleep 5
-  - echo "$(date) - Download docker" >> /home/ubuntu/start.log
-  - wget -O /tmp/docker.sh https://releases.rancher.com/install-docker/23.0.sh
-  - echo "$(date) - Download docker done" >> /home/ubuntu/start.log
-  - echo "$(date) - Install docker" >> /home/ubuntu/start.log
-  - sh /tmp/docker.sh
-  - usermod -aG docker ubuntu
-  - echo "$(date) - Install docker done" >> /home/ubuntu/start.log
-  - echo "$(date) - Set containerd and docker packages on hold" >> /home/ubuntu/start.log
-  - apt-mark hold containerd.io docker-compose-plugin docker-scan-plugin docker-ce docker-ce-cli docker-ce-rootless-extras
-  - echo "$(date) - Install custom packages" >> /home/ubuntu/start.log
-  - apt update && apt install -yq autofs jq net-tools nfs-common sudo sysstat unattended-upgrades
-  - echo "$(date) - Install custom packages done" >> /home/ubuntu/start.log
-  - echo "$(date) - Configure autofs" >> /home/ubuntu/start.log
-  - systemctl stop autofs
-  - mkdir -p /opt/rke
-  - echo "/opt/rke/etcd-snapshots -fstype=nfs,rw,vers=4,minorversion=2,proto=tcp,hard,nobind,rsize=32768,wsize=32768,nodiratime,fsc,timeo=100,noatime,nosuid,intr,nodev 10.0.1.124:/nfs/cluster-backups/<name>" > /etc/auto.nfs
-  - echo "$(date) - Enable autofs" >> /home/ubuntu/start.log
-  - echo "/- /etc/auto.nfs --ghost --timeout=86400" >> /etc/auto.master
-  - systemctl enable --now autofs
-  - echo "$(date) - Upgrade all packages" >> /home/ubuntu/start.log
-  - apt update && apt upgrade -yq
-  - echo "$(date) - Upgrade all packages done" >> /home/ubuntu/start.log
-  - echo "$(date) - Enable sysstat" >> /home/ubuntu/start.log
-  - systemctl enable --now sysstat
-  - echo "$(date) - Start script done" >> /home/ubuntu/start.log
diff --git a/managed_clusters/userdata_usernode.yaml b/managed_clusters/userdata_usernode.yaml
deleted file mode 100644
index 0615a1b0493c3ddbc9b2a806db107d5267f39769..0000000000000000000000000000000000000000
--- a/managed_clusters/userdata_usernode.yaml
+++ /dev/null
@@ -1,58 +0,0 @@
-#cloud-config
-
-package_update: false
-package_upgrade: false
-
-write_files:
-  - encoding: b64
-    content: Ly8gQXV0b21hdGljYWxseSB1cGdyYWRlIHBhY2thZ2VzIGZyb20gdGhlc2UgKG9yaWdpbjphcmNoaXZlKSBwYWlycwovLwovLyBOb3RlIHRoYXQgaW4gVWJ1bnR1IHNlY3VyaXR5IHVwZGF0ZXMgbWF5IHB1bGwgaW4gbmV3IGRlcGVuZGVuY2llcwovLyBmcm9tIG5vbi1zZWN1cml0eSBzb3VyY2VzIChlLmcuIGNocm9taXVtKS4gQnkgYWxsb3dpbmcgdGhlIHJlbGVhc2UKLy8gcG9ja2V0IHRoZXNlIGdldCBhdXRvbWF0aWNhbGx5IHB1bGxlZCBpbi4KVW5hdHRlbmRlZC1VcGdyYWRlOjpBbGxvd2VkLU9yaWdpbnMgewoJIiR7ZGlzdHJvX2lkfToke2Rpc3Ryb19jb2RlbmFtZX0iOwoJIiR7ZGlzdHJvX2lkfToke2Rpc3Ryb19jb2RlbmFtZX0tc2VjdXJpdHkiOwoJLy8gRXh0ZW5kZWQgU2VjdXJpdHkgTWFpbnRlbmFuY2U7IGRvZXNuJ3QgbmVjZXNzYXJpbHkgZXhpc3QgZm9yCgkvLyBldmVyeSByZWxlYXNlIGFuZCB0aGlzIHN5c3RlbSBtYXkgbm90IGhhdmUgaXQgaW5zdGFsbGVkLCBidXQgaWYKCS8vIGF2YWlsYWJsZSwgdGhlIHBvbGljeSBmb3IgdXBkYXRlcyBpcyBzdWNoIHRoYXQgdW5hdHRlbmRlZC11cGdyYWRlcwoJLy8gc2hvdWxkIGFsc28gaW5zdGFsbCBmcm9tIGhlcmUgYnkgZGVmYXVsdC4KCSIke2Rpc3Ryb19pZH1FU01BcHBzOiR7ZGlzdHJvX2NvZGVuYW1lfS1hcHBzLXNlY3VyaXR5IjsKCSIke2Rpc3Ryb19pZH1FU006JHtkaXN0cm9fY29kZW5hbWV9LWluZnJhLXNlY3VyaXR5IjsKCSIke2Rpc3Ryb19pZH06JHtkaXN0cm9fY29kZW5hbWV9LXVwZGF0ZXMiOwovLwkiJHtkaXN0cm9faWR9OiR7ZGlzdHJvX2NvZGVuYW1lfS1wcm9wb3NlZCI7Ci8vCSIke2Rpc3Ryb19pZH06JHtkaXN0cm9fY29kZW5hbWV9LWJhY2twb3J0cyI7Cn07CgovLyBQeXRob24gcmVndWxhciBleHByZXNzaW9ucywgbWF0Y2hpbmcgcGFja2FnZXMgdG8gZXhjbHVkZSBmcm9tIHVwZ3JhZGluZwpVbmF0dGVuZGVkLVVwZ3JhZGU6OlBhY2thZ2UtQmxhY2tsaXN0IHsKfTsKClVuYXR0ZW5kZWQtVXBncmFkZTo6RGV2UmVsZWFzZSAiYXV0byI7Cg==
-    owner: root:root
-    path: /etc/apt/apt.conf.d/50unattended-upgrades
-    permissions: '0644'
-  - encoding: b64
-    content: L3Zhci9saWIvZG9ja2VyL2NvbnRhaW5lcnMvKi8qLmxvZyB7CiAgcm90YXRlIDcKICBkYWlseQogIGNvbXByZXNzCiAgbWlzc2luZ29rCiAgZGVsYXljb21wcmVzcwogIGNvcHl0cnVuY2F0ZQp9Cg==
-    owner: root:root
-    path: /etc/logrotate.d/docker-container
-    permissions: '0644'
-  - encoding: b64
-    content: IwojIERlZmF1bHQgc2V0dGluZ3MgZm9yIC9ldGMvaW5pdC5kL3N5c3N0YXQsIC9ldGMvY3Jvbi5kL3N5c3N0YXQKIyBhbmQgL2V0Yy9jcm9uLmRhaWx5L3N5c3N0YXQgZmlsZXMKIwoKIyBTaG91bGQgc2FkYyBjb2xsZWN0IHN5c3RlbSBhY3Rpdml0eSBpbmZvcm1hdGlvbnM/IFZhbGlkIHZhbHVlcwojIGFyZSAidHJ1ZSIgYW5kICJmYWxzZSIuIFBsZWFzZSBkbyBub3QgcHV0IG90aGVyIHZhbHVlcywgdGhleQojIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgZGViY29uZiEKRU5BQkxFRD0idHJ1ZSIKCg==
-    owner: root:root
-    path: /etc/default/sysstat
-    permissions: '0644'
-  - encoding: b64
-    content: a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9MAo=
-    owner: root:root
-    path: /etc/sysctl.d/99-disable-unpriv-userns.conf
-    permissions: '0644'
-
-runcmd:
-  - echo "$(date) - Start node" >> /home/ubuntu/start.log
-  - echo "$(date) - Sleep 5 seconds, to avoid race condition" >> /home/ubuntu/start.log
-  - sleep 5
-  - echo "$(date) - Download docker" >> /home/ubuntu/start.log
-  - wget -O /tmp/docker.sh https://releases.rancher.com/install-docker/23.0.sh
-  - echo "$(date) - Download docker done" >> /home/ubuntu/start.log
-  - echo "$(date) - Install docker" >> /home/ubuntu/start.log
-  - sh /tmp/docker.sh
-  - usermod -aG docker ubuntu
-  - echo "$(date) - Install docker done" >> /home/ubuntu/start.log
-  - echo "$(date) - Set containerd and docker packages on hold" >> /home/ubuntu/start.log
-  - apt-mark hold containerd.io docker-compose-plugin docker-scan-plugin docker-ce docker-ce-cli docker-ce-rootless-extras
-  - echo "$(date) - Install custom packages" >> /home/ubuntu/start.log
-  - apt update && apt install -yq jq net-tools nfs-common autofs sudo sysstat unattended-upgrades
-  - echo "$(date) - Install custom packages done" >> /home/ubuntu/start.log
-  - echo "$(date) - Upgrade all packages" >> /home/ubuntu/start.log
-  - apt update && apt upgrade -yq
-  - echo "$(date) - Upgrade all packages done" >> /home/ubuntu/start.log
-  - echo "$(date) - Configure autofs" >> /home/ubuntu/start.log
-  - systemctl stop autofs
-  - mkdir -p /p/software/jsccloud
-  - mkdir -p /p/home/jusers
-  - echo "/p/software/jsccloud -fstype=nfs,rw,vers=4,minorversion=2,proto=tcp,hard,nobind,rsize=32768,wsize=32768,nodiratime,fsc,timeo=100,noatime,nosuid,intr,nodev 10.0.2.249:/p/software/jsccloud" >> /etc/auto.nfs
-  - echo "/p/home/jusers -fstype=nfs,rw,vers=4,minorversion=2,proto=tcp,hard,nobind,rsize=32768,wsize=32768,nodiratime,fsc,timeo=100,noatime,nosuid,intr,nodev 10.0.2.249:/p/home/jusers" >> /etc/auto.nfs
-  - echo "$(date) - Enable autofs" >> /home/ubuntu/start.log
-  - echo "/- /etc/auto.nfs --ghost --timeout=86400" >> /etc/auto.master
-  - systemctl enable --now autofs
-  - echo "$(date) - Enable sysstat" >> /home/ubuntu/start.log
-  - systemctl enable --now sysstat
-  - echo "$(date) - Start script done" >> /home/ubuntu/start.log
diff --git a/managed_clusters/userdata_worker.yaml b/managed_clusters/userdata_worker.yaml
deleted file mode 100644
index 8e4bf711b1745bd47276ad2c18534b3e4677cb2c..0000000000000000000000000000000000000000
--- a/managed_clusters/userdata_worker.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-#cloud-config
-
-package_update: false
-package_upgrade: false
-
-write_files:
-  - encoding: b64
-    content: Ly8gQXV0b21hdGljYWxseSB1cGdyYWRlIHBhY2thZ2VzIGZyb20gdGhlc2UgKG9yaWdpbjphcmNoaXZlKSBwYWlycwovLwovLyBOb3RlIHRoYXQgaW4gVWJ1bnR1IHNlY3VyaXR5IHVwZGF0ZXMgbWF5IHB1bGwgaW4gbmV3IGRlcGVuZGVuY2llcwovLyBmcm9tIG5vbi1zZWN1cml0eSBzb3VyY2VzIChlLmcuIGNocm9taXVtKS4gQnkgYWxsb3dpbmcgdGhlIHJlbGVhc2UKLy8gcG9ja2V0IHRoZXNlIGdldCBhdXRvbWF0aWNhbGx5IHB1bGxlZCBpbi4KVW5hdHRlbmRlZC1VcGdyYWRlOjpBbGxvd2VkLU9yaWdpbnMgewoJIiR7ZGlzdHJvX2lkfToke2Rpc3Ryb19jb2RlbmFtZX0iOwoJIiR7ZGlzdHJvX2lkfToke2Rpc3Ryb19jb2RlbmFtZX0tc2VjdXJpdHkiOwoJLy8gRXh0ZW5kZWQgU2VjdXJpdHkgTWFpbnRlbmFuY2U7IGRvZXNuJ3QgbmVjZXNzYXJpbHkgZXhpc3QgZm9yCgkvLyBldmVyeSByZWxlYXNlIGFuZCB0aGlzIHN5c3RlbSBtYXkgbm90IGhhdmUgaXQgaW5zdGFsbGVkLCBidXQgaWYKCS8vIGF2YWlsYWJsZSwgdGhlIHBvbGljeSBmb3IgdXBkYXRlcyBpcyBzdWNoIHRoYXQgdW5hdHRlbmRlZC11cGdyYWRlcwoJLy8gc2hvdWxkIGFsc28gaW5zdGFsbCBmcm9tIGhlcmUgYnkgZGVmYXVsdC4KCSIke2Rpc3Ryb19pZH1FU01BcHBzOiR7ZGlzdHJvX2NvZGVuYW1lfS1hcHBzLXNlY3VyaXR5IjsKCSIke2Rpc3Ryb19pZH1FU006JHtkaXN0cm9fY29kZW5hbWV9LWluZnJhLXNlY3VyaXR5IjsKCSIke2Rpc3Ryb19pZH06JHtkaXN0cm9fY29kZW5hbWV9LXVwZGF0ZXMiOwovLwkiJHtkaXN0cm9faWR9OiR7ZGlzdHJvX2NvZGVuYW1lfS1wcm9wb3NlZCI7Ci8vCSIke2Rpc3Ryb19pZH06JHtkaXN0cm9fY29kZW5hbWV9LWJhY2twb3J0cyI7Cn07CgovLyBQeXRob24gcmVndWxhciBleHByZXNzaW9ucywgbWF0Y2hpbmcgcGFja2FnZXMgdG8gZXhjbHVkZSBmcm9tIHVwZ3JhZGluZwpVbmF0dGVuZGVkLVVwZ3JhZGU6OlBhY2thZ2UtQmxhY2tsaXN0IHsKfTsKClVuYXR0ZW5kZWQtVXBncmFkZTo6RGV2UmVsZWFzZSAiYXV0byI7Cg==
-    owner: root:root
-    path: /etc/apt/apt.conf.d/50unattended-upgrades
-    permissions: '0644'
-  - encoding: b64
-    content: L3Zhci9saWIvZG9ja2VyL2NvbnRhaW5lcnMvKi8qLmxvZyB7CiAgcm90YXRlIDcKICBkYWlseQogIGNvbXByZXNzCiAgbWlzc2luZ29rCiAgZGVsYXljb21wcmVzcwogIGNvcHl0cnVuY2F0ZQp9Cg==
-    owner: root:root
-    path: /etc/logrotate.d/docker-container
-    permissions: '0644'
-  - encoding: b64
-    content: IwojIERlZmF1bHQgc2V0dGluZ3MgZm9yIC9ldGMvaW5pdC5kL3N5c3N0YXQsIC9ldGMvY3Jvbi5kL3N5c3N0YXQKIyBhbmQgL2V0Yy9jcm9uLmRhaWx5L3N5c3N0YXQgZmlsZXMKIwoKIyBTaG91bGQgc2FkYyBjb2xsZWN0IHN5c3RlbSBhY3Rpdml0eSBpbmZvcm1hdGlvbnM/IFZhbGlkIHZhbHVlcwojIGFyZSAidHJ1ZSIgYW5kICJmYWxzZSIuIFBsZWFzZSBkbyBub3QgcHV0IG90aGVyIHZhbHVlcywgdGhleQojIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgZGViY29uZiEKRU5BQkxFRD0idHJ1ZSIKCg==
-    owner: root:root
-    path: /etc/default/sysstat
-    permissions: '0644'
-  - encoding: b64
-    content: a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9MAo=
-    owner: root:root
-    path: /etc/sysctl.d/99-disable-unpriv-userns.conf
-    permissions: '0644'
-
-runcmd:
-  - echo "$(date) - Start node" >> /home/ubuntu/start.log
-  - echo "$(date) - Sleep 5 seconds, to avoid race condition" >> /home/ubuntu/start.log
-  - sleep 5
-  - echo "$(date) - Download docker" >> /home/ubuntu/start.log
-  - wget -O /tmp/docker.sh https://releases.rancher.com/install-docker/23.0.sh
-  - echo "$(date) - Download docker done" >> /home/ubuntu/start.log
-  - echo "$(date) - Install docker" >> /home/ubuntu/start.log
-  - sh /tmp/docker.sh
-  - usermod -aG docker ubuntu
-  - echo "$(date) - Install docker done" >> /home/ubuntu/start.log
-  - echo "$(date) - Set containerd and docker packages on hold" >> /home/ubuntu/start.log
-  - apt-mark hold containerd.io docker-compose-plugin docker-scan-plugin docker-ce docker-ce-cli docker-ce-rootless-extras
-  - echo "$(date) - Install custom packages" >> /home/ubuntu/start.log
-  - apt update && apt install -yq jq net-tools nfs-common autofs sudo sysstat unattended-upgrades
-  - echo "$(date) - Install custom packages done" >> /home/ubuntu/start.log
-  - echo "$(date) - Upgrade all packages" >> /home/ubuntu/start.log
-  - apt update && apt upgrade -yq
-  - echo "$(date) - Upgrade all packages done" >> /home/ubuntu/start.log
-  - echo "$(date) - Configure autofs" >> /home/ubuntu/start.log
-  - systemctl stop autofs
-  - mkdir -p /p/home/jusers
-  - echo "/p/home/jusers -fstype=nfs,rw,vers=4,minorversion=2,proto=tcp,hard,nobind,rsize=32768,wsize=32768,nodiratime,fsc,timeo=100,noatime,nosuid,intr,nodev 10.0.2.249:/p/home/jusers" >> /etc/auto.nfs
-  - echo "$(date) - Enable autofs" >> /home/ubuntu/start.log
-  - echo "/- /etc/auto.nfs --ghost --timeout=86400" >> /etc/auto.master
-  - systemctl enable --now autofs
-  - echo "$(date) - Enable sysstat" >> /home/ubuntu/start.log
-  - systemctl enable --now sysstat
-  - echo "$(date) - Start script done" >> /home/ubuntu/start.log