From 2baecbbf5cebda4519d4c2fe3668faccf3250108 Mon Sep 17 00:00:00 2001
From: thweber <thomas.weber@wu.ac.at>
Date: Mon, 5 Sep 2022 14:32:04 +0200
Subject: [PATCH] cleanup handlers, add wait condition for k8s-api

---
 roles/create_infrastructure/defaults/main.yml |  21 ----
 .../create_infrastructure/tasks/inventory.yml |  60 ----------
 roles/create_infrastructure/tasks/keypair.yml |  23 ----
 .../tasks/lb_members.yml                      |  79 -------------
 .../tasks/loadbalancer.yml                    |  13 ---
 roles/create_infrastructure/tasks/main.yml    |  88 --------------
 roles/create_infrastructure/tasks/network.yml |  38 ------
 .../tasks/security_groups.yml                 |  44 -------
 roles/create_infrastructure/tasks/vm.yml      | 110 ------------------
 .../templates/agents.yml.j2                   |   6 -
 .../templates/all.yml.j2                      |   9 --
 .../create_infrastructure/templates/hosts.j2  |  16 ---
 .../templates/master.yml.j2                   |   6 -
 .../templates/servers.yml.j2                  |   6 -
 roles/rke2/handlers/main.yml                  |  13 +--
 .../{registries.yml => config_registries.yml} |   0
 roles/rke2/tasks/config_rke2.yml              |  10 +-
 roles/rke2/tasks/kubeconfig.yml               |  68 -----------
 roles/rke2/tasks/main.yml                     |  33 ++++--
 roles/rke2/tasks/save_kubeconfig.yml          |  31 +++++
 20 files changed, 58 insertions(+), 616 deletions(-)
 delete mode 100644 roles/create_infrastructure/defaults/main.yml
 delete mode 100644 roles/create_infrastructure/tasks/inventory.yml
 delete mode 100644 roles/create_infrastructure/tasks/keypair.yml
 delete mode 100644 roles/create_infrastructure/tasks/lb_members.yml
 delete mode 100644 roles/create_infrastructure/tasks/loadbalancer.yml
 delete mode 100644 roles/create_infrastructure/tasks/main.yml
 delete mode 100644 roles/create_infrastructure/tasks/network.yml
 delete mode 100644 roles/create_infrastructure/tasks/security_groups.yml
 delete mode 100644 roles/create_infrastructure/tasks/vm.yml
 delete mode 100644 roles/create_infrastructure/templates/agents.yml.j2
 delete mode 100644 roles/create_infrastructure/templates/all.yml.j2
 delete mode 100644 roles/create_infrastructure/templates/hosts.j2
 delete mode 100644 roles/create_infrastructure/templates/master.yml.j2
 delete mode 100644 roles/create_infrastructure/templates/servers.yml.j2
 rename roles/rke2/tasks/{registries.yml => config_registries.yml} (100%)
 delete mode 100644 roles/rke2/tasks/kubeconfig.yml
 create mode 100644 roles/rke2/tasks/save_kubeconfig.yml

diff --git a/roles/create_infrastructure/defaults/main.yml b/roles/create_infrastructure/defaults/main.yml
deleted file mode 100644
index 88d20f7..0000000
--- a/roles/create_infrastructure/defaults/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-ssh_key_name: "rke2-{{ cluster_name }}-ssh-key"
-ssh_key_file: "{{ ssh_key_name }}.pem"
-network_name: "rke2-{{ cluster_name }}"
-subnet_name: "rke2-{{ cluster_name }}"
-cidr: 10.0.0.0/24
-router_name: "rke2-{{ cluster_name }}"
-
-server_volume_size: 50
-agent_volume_size: 100
-server_flavor: m1a.large
-agent_flavor: m1a.xlarge
-image: 1fe615f0-9dad-447d-bf54-9071defafb77
-
-server_count: 3
-agent_count: 3
-
-loadbalancer_name: "rke2_{{ cluster_name }}"
-security_group: "rke2_{{ cluster_name }}"
-state: present
-
-ssh_keys_dir: ssh_keys
\ No newline at end of file
diff --git a/roles/create_infrastructure/tasks/inventory.yml b/roles/create_infrastructure/tasks/inventory.yml
deleted file mode 100644
index c50e818..0000000
--- a/roles/create_infrastructure/tasks/inventory.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-- block:  
-  # - pause:
-  #     seconds: 5
-
-  - openstack.cloud.server_info:
-      auth: "{{ openstack_auth }}"
-      auth_type: "{{ openstack_auth_type }}"
-      server: "rke2-{{ cluster_name }}-server-{{ item }}"
-    loop: "{{ range(1, agent_count, 1) | list }}"
-    register: servers_result
-
-  - openstack.cloud.server_info:
-      auth: "{{ openstack_auth }}"
-      auth_type: "{{ openstack_auth_type }}"
-      server: "rke2-{{ cluster_name }}-agent-{{ item }}"
-    loop: "{{ range(0, agent_count, 1) | list }}"
-    register: agents_result
-
-  - set_fact:
-      agents: "{{ agents_result.results | community.general.json_query('[].openstack_servers[].{name: name, private_v4: private_v4}') }}"
-      servers: "{{ servers_result.results | community.general.json_query('[].openstack_servers[].{name: name, private_v4: private_v4}') }}"
-  
-  when: agents | length > 0 and agents[0].private_v4 == '' or servers | length > 1 and servers[0].private_v4 == ''
-
-
-- name: update inventory in project
-  template:
-    src: hosts.j2
-    dest: hosts
-
-- name: create inventory folders
-  file:
-    path: "{{ item }}"
-    state: directory
-  loop:
-    - group_vars
-    - group_vars/all
-    - group_vars/master
-    - group_vars/servers
-    - group_vars/agents    
-
-- name: update all inventory
-  template:
-    src: all.yml.j2
-    dest: group_vars/all/infrastructure.yml
-
-- name: update master inventory
-  template:
-    src: master.yml.j2
-    dest: group_vars/master/infrastructure.yml
-
-- name: update servers inventory
-  template:
-    src: servers.yml.j2
-    dest: group_vars/servers/infrastructure.yml
-
-- name: update agents inventory
-  template:
-    src: agents.yml.j2
-    dest: group_vars/agents/infrastructure.yml
diff --git a/roles/create_infrastructure/tasks/keypair.yml b/roles/create_infrastructure/tasks/keypair.yml
deleted file mode 100644
index 933d7b3..0000000
--- a/roles/create_infrastructure/tasks/keypair.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-- name: ssh key pair
-  openstack.cloud.keypair:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ ssh_key_name }}"
-    state: "{{ state }}"
-  register: ssh_key
-
-# - debug:
-#     var: ssh_key
-
-
-- name: create inventory folders
-  file:
-    path: "{{ ssh_keys_dir }}"
-    state: directory
-
-- name: store private key locally
-  copy:
-    dest: "{{ ssh_keys_dir }}/{{ ssh_key_name }}.pem"
-    content: "{{ ssh_key.key.private_key }}"
-    mode: "0600"
-  when: state == 'present' and ssh_key.key.private_key != none
\ No newline at end of file
diff --git a/roles/create_infrastructure/tasks/lb_members.yml b/roles/create_infrastructure/tasks/lb_members.yml
deleted file mode 100644
index 595ffcc..0000000
--- a/roles/create_infrastructure/tasks/lb_members.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-- name: wait for loadbalancer
-  async_status:
-    jid: "{{ _create_loadbalancer.ansible_job_id }}"
-  register: loadbalancer_result
-  until: loadbalancer_result.finished
-  delay: 1
-  retries: 600
-
-- name: store loadbalancer ip
-  set_fact:
-    new_loadbalancer_ip: "{{ loadbalancer_result.loadbalancer.public_vip_address | default(loadbalancer_ip) }}"
-
-- name: add listener
-  openstack.cloud.lb_listener:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ loadbalancer_name }}-listener-{{ item }}"
-    loadbalancer: "{{ loadbalancer_name }}"
-    protocol: TCP
-    protocol_port: "{{ item }}"
-    state: "{{ state }}"
-  loop:
-    - 6443
-    - 9345
-    - 80
-    - 443
-
-- name: add pool
-  openstack.cloud.lb_pool:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ loadbalancer_name }}-pool-{{ item }}"
-    listener: "{{ loadbalancer_name }}-listener-{{ item }}"
-    protocol: TCP
-    lb_algorithm: ROUND_ROBIN
-    state: "{{ state }}"
-  loop:
-    - 6443
-    - 9345
-    - 80
-    - 443
-
-- name: add health monitor
-  openstack.cloud.lb_health_monitor:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    pool: "{{ loadbalancer_name }}-pool-{{ item }}"
-    name: "{{ loadbalancer_name }}-pool-{{ item }}-healthmonitor"
-    delay: '20'
-    max_retries: '5'
-    max_retries_down: '5'
-    resp_timeout: '10'
-    type: TCP
-  loop:
-    - 6443
-    - 9345
-    - 80
-    - 443
-
-
-- set_fact:
-    pool_members:
-      - { pool: 6443, port: 6443, vm: "{{ servers + [ master ] }}" }
-      - { pool: 9345, port: 9345, vm: "{{ servers + [ master ] }}" }
-      - { pool: 80, port: 80, vm: "{{ agents }}" }
-      - { pool: 443, port: 443, vm: "{{ agents }}" }
-
-- name: add members
-  openstack.cloud.lb_member:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ loadbalancer_name }}-pool-{{ item.0.pool }}-{{ item.1.name }}"
-    pool: "{{ loadbalancer_name }}-pool-{{ item.0.pool }}"
-    address: "{{ item.1.private_v4 }}"
-    protocol_port: "{{ item.0.port }}"
-  with_subelements: 
-    - "{{ pool_members }}"
-    - vm
-
diff --git a/roles/create_infrastructure/tasks/loadbalancer.yml b/roles/create_infrastructure/tasks/loadbalancer.yml
deleted file mode 100644
index f1a17f1..0000000
--- a/roles/create_infrastructure/tasks/loadbalancer.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-- name: loadbalancer
-  openstack.cloud.loadbalancer:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ loadbalancer_name }}"
-    vip_subnet: "{{ subnet_name }}"
-    auto_public_ip: yes
-    public_network: public
-    state: "{{ state }}"
-  register: _create_loadbalancer
-  async: 600
-  poll: 0
-
diff --git a/roles/create_infrastructure/tasks/main.yml b/roles/create_infrastructure/tasks/main.yml
deleted file mode 100644
index 8416c7b..0000000
--- a/roles/create_infrastructure/tasks/main.yml
+++ /dev/null
@@ -1,88 +0,0 @@
-- block:
-  - name: network
-    include_tasks: network.yml
-    args:
-      apply:
-        tags:
-          - network
-    tags:
-      - network
-
-  - name: loadbalancer
-    include_tasks: loadbalancer.yml
-    args:
-      apply:
-        tags:
-          - loadbalancer
-    tags:
-      - loadbalancer
-
-  - name: security groups
-    include_tasks: security_groups.yml
-    args:
-      apply:
-        tags:
-          - security_groups
-    tags:
-      - security_groups
-
-  - name: keypair
-    include_tasks: keypair.yml
-    args:
-      apply:
-        tags:
-          - keypair
-    tags:
-      - keypair
-
-  - name: vm
-    include_tasks: vm.yml
-    args:
-      apply:
-        tags:
-          - vm
-    tags:
-      - vm
-
-  - name: lb elements 
-    include_tasks: lb_members.yml
-    args:
-      apply:
-        tags:
-          - loadbalancer
-    tags:
-      - loadbalancer
-
-  - name: inventory
-    include_tasks: inventory.yml
-
-  when: state == 'present'
-
-- block:
-  - name: loadbalancer
-    include_tasks: loadbalancer.yml  
-  
-  - name: vm
-    include_tasks: vm.yml
-
-  - name: security groups
-    include_tasks: security_groups.yml
-
-  - name: network
-    include_tasks: network.yml
-    args:
-      apply:
-        tags:
-          - network
-    tags:
-      - network
-  
-  - name: delete inventory
-    file:
-      path: "{{ item }}"
-      state: absent
-    loop:
-      - group_vars
-      - hosts
-
-  when: state == 'absent'
\ No newline at end of file
diff --git a/roles/create_infrastructure/tasks/network.yml b/roles/create_infrastructure/tasks/network.yml
deleted file mode 100644
index 6c0597e..0000000
--- a/roles/create_infrastructure/tasks/network.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-- name: delete router
-  openstack.cloud.router:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ router_name }}"
-    state: "{{ state }}"
-  when: state == 'absent'
-
-- name: network
-  openstack.cloud.network:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ network_name }}"
-    state: "{{ state }}"
-
-- name: subnet
-  openstack.cloud.subnet:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    network_name: "{{ network_name }}"
-    name: "{{ subnet_name }}"
-    cidr: "{{ cidr }}"
-    state: "{{ state }}"
-  register: subnet_result
-
-- set_fact:
-    new_subnet_id: "{{ subnet_result.subnet.id }}"
-  when: state == 'present'
-
-- name: router
-  openstack.cloud.router:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ router_name }}"
-    network: public
-    interfaces:
-      - "{{ network_name }}"
-  when: state == 'present'
diff --git a/roles/create_infrastructure/tasks/security_groups.yml b/roles/create_infrastructure/tasks/security_groups.yml
deleted file mode 100644
index 76c9ec0..0000000
--- a/roles/create_infrastructure/tasks/security_groups.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-- name: security group
-  openstack.cloud.security_group:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "{{ security_group }}"
-    state: "{{ state }}"
-  register: _create_security_group
-  async: 600
-  poll: 0
-
-- name: wait for security group
-  async_status:
-    jid: "{{ _create_security_group.ansible_job_id }}"
-  register: security_group_result
-  until: security_group_result.finished
-  delay: 1
-  retries: 600
-
-- name: rules
-  openstack.cloud.security_group_rule:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    security_group: "{{ security_group }}"
-    protocol: "{{ item.protocol }}"
-    port_range_min: "{{ item.min }}"
-    port_range_max: "{{ item.max }}"
-    remote_ip_prefix: "{{ item.cidr }}"
-    state: "{{ state }}"
-  loop:
-    - { protocol: TCP, min: 2379, max: 2380, cidr: "{{ cidr }}" } # etcd
-    - { protocol: TCP, min: 6443, max: 6443, cidr: "{{ cidr }}" } # Kubernetes API
-    - { protocol: TCP, min: 80, max: 80, cidr: "{{ cidr }}" } # Ingress HTTP
-    - { protocol: TCP, min: 443, max: 80, cidr: "{{ cidr }}" } # Ingress HTTPS
-    - { protocol: TCP, min: 8443, max: 8443, cidr: "{{ cidr }}" } # Ingress Webhook
-    - { protocol: TCP, min: 9345, max: 9345, cidr: "{{ cidr }}" } # RKE2 API
-    - { protocol: TCP, min: 10250, max: 10250, cidr: "{{ cidr }}" } # kubelet metrics
-    - { protocol: TCP, min: 30000, max: 32767, cidr: "{{ cidr }}" } # NodePort port range
-    - { protocol: UDP, min: 8472, max: 8472, cidr: "{{ cidr }}" } # flannel
-    - { protocol: TCP, min: 4240, max: 4240, cidr: "{{ cidr }}" } # cni-health
-    - { protocol: TCP, min: 22, max: 22, cidr: "0.0.0.0/0" } # SSH
-  #ignore_errors: yes
-  async: 600
-  poll: 0
-  when: state == 'present'
\ No newline at end of file
diff --git a/roles/create_infrastructure/tasks/vm.yml b/roles/create_infrastructure/tasks/vm.yml
deleted file mode 100644
index 5d957f1..0000000
--- a/roles/create_infrastructure/tasks/vm.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-- name: master VM
-  openstack.cloud.server:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "rke2-{{ cluster_name }}-master"
-    boot_from_volume: yes
-    terminate_volume: yes
-    volume_size: "{{ server_volume_size }}"
-    network: "{{ network_name }}"
-    key_name: "{{ ssh_key_name }}"
-    flavor: "{{ server_flavor }}"
-    image: "{{ image }}"
-    security_groups:
-      - "{{ security_group }}"
-    delete_fip: yes
-    floating_ip_pools:
-      - public
-    state: "{{ state }}"
-    userdata: |-
-      #cloud-config
-      package_update: true
-      package_upgrade: true
-  register: _create_master
-  async: 600
-  poll: 0
-
-- name: server VMs
-  openstack.cloud.server:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "rke2-{{ cluster_name }}-server-{{ item }}"
-    boot_from_volume: yes
-    terminate_volume: yes
-    volume_size: "{{ server_volume_size }}"
-    network: "{{ network_name }}"
-    key_name: "{{ ssh_key_name }}"
-    flavor: "{{ server_flavor }}"
-    image: "{{ image }}"
-    security_groups:
-      - "{{ security_group }}"
-    auto_ip: no
-    state: "{{ state }}"
-    userdata: |-
-      #cloud-config
-      package_update: true
-      package_upgrade: true
-  loop: "{{ range(1, server_count, 1) | list }}"
-  register: _create_servers
-  async: 600
-  poll: 0
-
-- name: agent VM
-  openstack.cloud.server:
-    auth: "{{ openstack_auth }}"
-    auth_type: "{{ openstack_auth_type }}"
-    name: "rke2-{{ cluster_name }}-agent-{{ item }}"
-    boot_from_volume: yes
-    terminate_volume: yes
-    volume_size: "{{ agent_volume_size }}"
-    network: "{{ network_name }}"
-    key_name: "{{ ssh_key_name }}"
-    flavor: "{{ agent_flavor }}"
-    image: "{{ image }}"
-    security_groups:
-      - "{{ security_group }}"
-    auto_ip: no
-    state: "{{ state }}"
-    userdata: |-
-      #cloud-config
-      package_update: true
-      package_upgrade: true
-  loop: "{{ range(0, agent_count, 1) | list }}"
-  register: _create_agents
-  async: 600
-  poll: 0
-
-- name: wait for master vm
-  async_status:
-    jid: "{{ _create_master.ansible_job_id }}"
-  register: master_result
-  until: master_result.finished
-  delay: 1
-  retries: 600
-
-- block:
-  - name: wait for server vms
-    async_status:
-      jid: "{{ item.ansible_job_id }}"
-    register: servers_result
-    until: servers_result.finished
-    delay: 1
-    retries: 600
-    loop: "{{ _create_servers.results }}"
-
-- block:
-  - name: wait for agents vm
-    async_status:
-      jid: "{{ item.ansible_job_id }}"
-    register: agents_result
-    until: agents_result.finished
-    delay: 1
-    retries: 600
-    loop: "{{ _create_agents.results }}"
-
-- set_fact:
-      master: "{{ master_result | community.general.json_query('server.{name: name, private_v4: private_v4, public_v4: public_v4}') }}"
-      servers: "{{ servers_result.results | community.general.json_query('[].server.{name: name, private_v4: private_v4}') }}"
-      agents: "{{ agents_result.results | community.general.json_query('[].server.{name: name, private_v4: private_v4}') }}"
-      new_master_floating_ip: "{{ master_result.server.public_v4 }}"
-  when: state == 'present'
\ No newline at end of file
diff --git a/roles/create_infrastructure/templates/agents.yml.j2 b/roles/create_infrastructure/templates/agents.yml.j2
deleted file mode 100644
index ab719f0..0000000
--- a/roles/create_infrastructure/templates/agents.yml.j2
+++ /dev/null
@@ -1,6 +0,0 @@
-{% raw %}
-ansible_user: "ubuntu"
-ansible_ssh_private_key_file: "{{ ssh_key_file }}"
-ansible_ssh_common_args: "-o ProxyCommand='ssh -q ubuntu@{{ master_floating_ip }} -o StrictHostKeyChecking=no -i {{ ssh_key_file }} -W %h:%p' -o StrictHostKeyChecking=no"
-node_type: agent
-{% endraw %}
\ No newline at end of file
diff --git a/roles/create_infrastructure/templates/all.yml.j2 b/roles/create_infrastructure/templates/all.yml.j2
deleted file mode 100644
index 836b6a8..0000000
--- a/roles/create_infrastructure/templates/all.yml.j2
+++ /dev/null
@@ -1,9 +0,0 @@
-loadbalancer_ip: {{ new_loadbalancer_ip }}
-
-master_floating_ip: {{ new_master_floating_ip }}
-
-{% if new_subnet_id is defined %}
-subnet_id: {{ new_subnet_id }}
-{% endif %}
-
-ssh_key_file: {{ ssh_keys_dir }}/{{ ssh_key_file }}
\ No newline at end of file
diff --git a/roles/create_infrastructure/templates/hosts.j2 b/roles/create_infrastructure/templates/hosts.j2
deleted file mode 100644
index a687156..0000000
--- a/roles/create_infrastructure/templates/hosts.j2
+++ /dev/null
@@ -1,16 +0,0 @@
-[master]
-{{ master.name }} ansible_host="{{ master.public_v4 }}"
-
-[servers]
-{% if servers is defined and servers | length > 0 %}
-{% for server in servers %}
-{{ server.name }} ansible_host="{{ server.private_v4 }}"
-{% endfor %}
-{% endif %}
-
-[agents]
-{% if agents is defined and agents | length > 0 %}
-{% for agent in agents %}
-{{ agent.name }} ansible_host="{{ agent.private_v4 }}"
-{% endfor %}
-{% endif %}
\ No newline at end of file
diff --git a/roles/create_infrastructure/templates/master.yml.j2 b/roles/create_infrastructure/templates/master.yml.j2
deleted file mode 100644
index 39c75b6..0000000
--- a/roles/create_infrastructure/templates/master.yml.j2
+++ /dev/null
@@ -1,6 +0,0 @@
-{% raw %}
-ansible_user: "ubuntu"
-ansible_ssh_private_key_file: "{{ ssh_key_file }}"
-ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
-node_type: server
-{% endraw %}
\ No newline at end of file
diff --git a/roles/create_infrastructure/templates/servers.yml.j2 b/roles/create_infrastructure/templates/servers.yml.j2
deleted file mode 100644
index 562da52..0000000
--- a/roles/create_infrastructure/templates/servers.yml.j2
+++ /dev/null
@@ -1,6 +0,0 @@
-{% raw %}
-ansible_user: "ubuntu"
-ansible_ssh_private_key_file: "{{ ssh_key_file }}"
-ansible_ssh_common_args: "-o ProxyCommand='ssh -q ubuntu@{{ master_floating_ip }} -o StrictHostKeyChecking=no -i {{ ssh_key_file }} -W %h:%p' -o StrictHostKeyChecking=no"
-node_type: server
-{% endraw %}
\ No newline at end of file
diff --git a/roles/rke2/handlers/main.yml b/roles/rke2/handlers/main.yml
index 8dc0e2f..9eda227 100644
--- a/roles/rke2/handlers/main.yml
+++ b/roles/rke2/handlers/main.yml
@@ -14,8 +14,6 @@
     enabled: yes
     state: restarted
     daemon_reload: yes
-  ignore_errors: True
-  when: upgrade
   
 - name: reload rke2
   ansible.builtin.systemd:
@@ -23,13 +21,4 @@
     masked: no
     enabled: yes
     state: reloaded
-    daemon_reload: yes
-
-- name: wait for RANCHER to come up
-  uri:
-    url: "http://{{ rancher_ui_dns }}"
-    status_code: [200, 404]
-  register: result
-  until: result.status == 200 or result.status == 404
-  retries: 100 # retry X times
-  delay: 30 # pause for X sec b/w each call
\ No newline at end of file
+    daemon_reload: yes
\ No newline at end of file
diff --git a/roles/rke2/tasks/registries.yml b/roles/rke2/tasks/config_registries.yml
similarity index 100%
rename from roles/rke2/tasks/registries.yml
rename to roles/rke2/tasks/config_registries.yml
diff --git a/roles/rke2/tasks/config_rke2.yml b/roles/rke2/tasks/config_rke2.yml
index b418917..9861b0e 100644
--- a/roles/rke2/tasks/config_rke2.yml
+++ b/roles/rke2/tasks/config_rke2.yml
@@ -30,15 +30,9 @@
 - name: read token
   include_vars: group_vars/all/token.yml
 
-- name: rke2 config
+- name: copy rke2 config
   template:
     src: config.yaml.j2
     dest: /etc/rancher/rke2/config.yaml
   notify:
-    - restart rke2
-
-- name: enable rke2
-  ansible.builtin.systemd:
-    name: "rke2-{{ node_type }}"
-    enabled: yes
-    masked: no
+    - start rke2
\ No newline at end of file
diff --git a/roles/rke2/tasks/kubeconfig.yml b/roles/rke2/tasks/kubeconfig.yml
deleted file mode 100644
index 2d19b94..0000000
--- a/roles/rke2/tasks/kubeconfig.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-- name: start rke2 on master
-  ansible.builtin.systemd:
-    name: "rke2-{{ node_type }}"
-    enabled: yes
-    masked: no
-    state: started
-    daemon_reload: yes
-  ignore_errors: True
-  when:  ( 'master' in group_names )
-#  notify:
-#  - wait for RANCHER to come up
-- name: start rke2 on the servers
-  ansible.builtin.systemd:
-    name: "rke2-{{ node_type }}"
-    enabled: yes
-    masked: no
-    state: started
-    daemon_reload: yes
-  ignore_errors: True
-#  when:  ( 'servers' in group_names )
-
-- name: start rke2 everywhere
-  ansible.builtin.systemd:
-    name: "rke2-{{ node_type }}"
-    enabled: yes
-    masked: no
-    state: started
-    daemon_reload: yes
-  ignore_errors: True
-
-- name: wait for kubeconfig
-  wait_for:
-    path: /etc/rancher/rke2/rke2.yaml
-  when:  ( 'master' in group_names )
-
-- name: fetch kubeconfig from master
-  ansible.builtin.fetch:
-    src: /etc/rancher/rke2/rke2.yaml
-    dest: kubeconfig.yaml
-    flat: yes
-  when:  ( 'master' in group_names )
-
-- name: replace endpoint in kubeconfig NEW
-  delegate_to: localhost
-  become: false
-  ansible.builtin.replace:
-    path: kubeconfig.yaml
-    regexp: '^(\s+server: ).*'
-    replace: '\1https://{{ lb_ip_mgmt }}:6443'
-  when: ( 'master' in group_names )
-
-- name: fetch kubeconfig from master and copy it 
-  ansible.builtin.fetch:
-    src: /etc/rancher/rke2/rke2.yaml
-    dest: kubeconfigext.yaml
-    flat: yes
-  when: ( 'master' in group_names )
-
-
-- name: replace endpoint in external kubeconfig
-  delegate_to: localhost
-  become: false
-  ansible.builtin.replace:
-    path: kubeconfigext.yaml
-    regexp: '^(\s+server: ).*'
-    replace: '\1https://rancher.{{ domain }}:6443'
-  when: ( 'master' in group_names )
\ No newline at end of file
diff --git a/roles/rke2/tasks/main.yml b/roles/rke2/tasks/main.yml
index 873af86..d94fdce 100644
--- a/roles/rke2/tasks/main.yml
+++ b/roles/rke2/tasks/main.yml
@@ -9,22 +9,37 @@
   when: ( not rke2_installed.stat.exists and state != 'absent' ) or (upgrade and state != 'absent' )
 
 - include_tasks: templates.yml
-  when: "state != 'absent' and 'master' in group_names  "
+  when: state != 'absent' and 'master' in group_names
 
 - block:
-    - include_tasks: registries.yml
+    - include_tasks: config_registries.yml
     - include_tasks: config_rke2.yml
-  when: state != 'absent' 
-
-- include_tasks: kubeconfig.yml
-  when: state != 'absent' #and 'master' in group_names 
+  when: state != 'absent'
 
+- include_tasks: save_kubeconfig.yml
+  when: state != 'absent' and 'master' in group_names
 
+- include_tasks: rotate_encryption.yml
+  when: state != 'absent' and 'control-plane' in group_names and rotate 
 
 - name: uninstall rke2
   command: rke2-uninstall.sh
   when: rke2_installed.stat.exists and state == 'absent'
 
-
-- include_tasks: rotate_encryption.yml
-  when: state != 'absent' and 'control-plane' in group_names and rotate 
+- name: Flush handlers
+  meta: flush_handlers
+
+- name: wait for k8s to come up till 401 unauthorized
+  delegate_to: localhost
+  uri:
+    url: "https://{{ LB_IP_MGMT }}:6443"
+    status_code: [401]
+  register: result
+  until: result.status == 401
+  retries: 10 # retry X times
+  delay: 10 # pause for X sec b/w each call
+
+- name: add secrets for CCM
+  ansible.builtin.debug:
+    var: result
+    verbosity: 2
\ No newline at end of file
diff --git a/roles/rke2/tasks/save_kubeconfig.yml b/roles/rke2/tasks/save_kubeconfig.yml
new file mode 100644
index 0000000..2ed2ff7
--- /dev/null
+++ b/roles/rke2/tasks/save_kubeconfig.yml
@@ -0,0 +1,31 @@
+- name: wait for kubeconfig
+  wait_for:
+    path: /etc/rancher/rke2/rke2.yaml
+
+- name: fetch kubeconfig from master
+  ansible.builtin.fetch:
+    src: /etc/rancher/rke2/rke2.yaml
+    dest: kubeconfig.yaml
+    flat: yes
+
+- name: replace endpoint in kubeconfig NEW
+  delegate_to: localhost
+  become: false
+  ansible.builtin.replace:
+    path: kubeconfig.yaml
+    regexp: '^(\s+server: ).*'
+    replace: '\1https://{{ lb_ip_mgmt }}:6443'
+
+- name: fetch kubeconfig from master and copy it 
+  ansible.builtin.fetch:
+    src: /etc/rancher/rke2/rke2.yaml
+    dest: kubeconfigext.yaml
+    flat: yes
+
+- name: replace endpoint in external kubeconfig
+  delegate_to: localhost
+  become: false
+  ansible.builtin.replace:
+    path: kubeconfigext.yaml
+    regexp: '^(\s+server: ).*'
+    replace: '\1https://rancher.{{ domain }}'
\ No newline at end of file
-- 
GitLab