From fe3df5c836fa93e0a7de3a588a07095112833bbb Mon Sep 17 00:00:00 2001 From: Dmitriy Safronov Date: Thu, 18 Jan 2024 04:06:20 +0400 Subject: [PATCH] [#287] fix control node tasks logic to properly change server address on control node (#288) Signed-off-by: Dmitriy Safronov --- roles/k3s_server/tasks/main.yml | 74 +++++++++++++++++---------------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/roles/k3s_server/tasks/main.yml b/roles/k3s_server/tasks/main.yml index 2a10b1a..27e4332 100644 --- a/roles/k3s_server/tasks/main.yml +++ b/roles/k3s_server/tasks/main.yml @@ -79,19 +79,6 @@ ansible.builtin.pause: seconds: 10 - - name: Change server to API endpoint instead of localhost - ansible.builtin.command: >- - /usr/local/bin/k3s kubectl config set-cluster default - --server=https://{{ api_endpoint }}:{{ api_port }} - --kubeconfig ~{{ ansible_user }}/.kube/config - changed_when: true - - - name: Copy kubectl config to local machine - ansible.builtin.fetch: - src: /etc/rancher/k3s/k3s.yaml - dest: "{{ kubeconfig }}" - flat: true - - name: Check whether kubectl is installed on control node ansible.builtin.command: 'kubectl' register: kubectl_installed @@ -100,29 +87,46 @@ become: false changed_when: false - - name: Setup kubeconfig k3s-ansible context - when: kubeconfig == "~/.kube/config.new" and kubectl_installed.rc == 0 - ansible.builtin.replace: - path: "{{ kubeconfig }}" - regexp: 'name: default' - replace: 'name: k3s-ansible' - delegate_to: 127.0.0.1 - become: false + - name: Apply K3S kubeconfig to control node + when: kubectl_installed.rc == 0 + block: + - name: Copy kubeconfig to control node + ansible.builtin.fetch: + src: /etc/rancher/k3s/k3s.yaml + dest: "{{ kubeconfig }}" + flat: true - - name: Merge with any existing kube config - when: kubeconfig == "~/.kube/config.new" and kubectl_installed.rc == 0 - ansible.builtin.shell: | - TFILE=$(mktemp) - KUBECONFIG=~/.kube/config.new kubectl rename-context default k3s-ansible - KUBECONFIG=~/.kube/config.new kubectl config set-context k3s-ansible --user=k3s-ansible --cluster=k3s-ansible - KUBECONFIG=~/.kube/config.new:~/.kube/config kubectl config view --flatten > ${TFILE} - mv ${TFILE} ~/.kube/config - rm ~/.kube/config.new - delegate_to: 127.0.0.1 - become: false - register: mv_result - changed_when: - - mv_result.rc == 0 + - name: Change server address in kubeconfig on control node + ansible.builtin.shell: | + KUBECONFIG={{ kubeconfig }} kubectl config set-cluster default --server=https://{{ api_endpoint }}:{{ api_port }} + delegate_to: 127.0.0.1 + become: false + register: csa_result + changed_when: + - csa_result.rc == 0 + + - name: Setup kubeconfig k3s-ansible context on control node + when: kubeconfig != "~/.kube/config" + ansible.builtin.replace: + path: "{{ kubeconfig }}" + regexp: 'name: default' + replace: 'name: k3s-ansible' + delegate_to: 127.0.0.1 + become: false + + - name: Merge with any existing kubeconfig on control node + when: kubeconfig != "~/.kube/config" + ansible.builtin.shell: | + TFILE=$(mktemp) + KUBECONFIG={{ kubeconfig }} kubectl config set-context k3s-ansible --user=k3s-ansible --cluster=k3s-ansible + KUBECONFIG={{ kubeconfig }}:~/.kube/config kubectl config view --flatten > ${TFILE} + mv ${TFILE} ~/.kube/config + rm {{ kubeconfig }} + delegate_to: 127.0.0.1 + become: false + register: mv_result + changed_when: + - mv_result.rc == 0 - name: Start other server if any and verify status when: