Unverified Commit c8527cc9 authored by Will's avatar Will Committed by GitHub
Browse files

improve check mode support, allow for agent config yaml, restart service if config changed (#388)



Signed-off-by: default avatarWill Brown <will@wbrwn.co>
Co-authored-by: default avatarWill Brown <will@wbrwn.co>
parent b9155743
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
  ignore_errors: true

- name: Set k3s installed version
  when: k3s_version_output.rc == 0
  when: not ansible_check_mode and k3s_version_output.rc == 0
  ansible.builtin.set_fact:
    installed_k3s_version: "{{ k3s_version_output.stdout_lines[0].split(' ')[2] }}"

@@ -15,7 +15,7 @@
#   - we couldn't get k3s installed version in the first task of this role
#   - the installed version of K3s on the nodes is older than the requested version in ansible vars
- name: Download artifact only if needed
  when: airgap_dir is undefined and ( k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') )
  when: not ansible_check_mode and airgap_dir is undefined and ( k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') )
  block:
    - name: Download K3s install script
      ansible.builtin.get_url:
@@ -35,6 +35,21 @@
        INSTALL_K3S_EXEC: "agent"
      changed_when: true

- name: Setup optional config file
  when: agent_config_yaml is defined
  block:
    - name: Make config directory
      ansible.builtin.file:
        path: "/etc/rancher/k3s"
        mode: "0755"
        state: directory
    - name: Copy config values
      ansible.builtin.copy:
        content: "{{ agent_config_yaml }}"
        dest: "/etc/rancher/k3s/config.yaml"
        mode: "0644"
      register: _agent_config_result

- name: Get the token from the first server
  ansible.builtin.set_fact:
    token: "{{ hostvars[groups[server_group][0]].token }}"
@@ -66,5 +81,5 @@
  ansible.builtin.systemd:
    name: k3s-agent
    daemon_reload: "{{ true if k3s_agent_service.changed else false }}"
    state: "{{ 'restarted' if k3s_agent_service.changed else 'started' }}"
    state: "{{ 'restarted' if (k3s_agent_service.changed or _agent_config_result.changed) else 'started' }}"
    enabled: true
+6 −5
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
  ignore_errors: true

- name: Set k3s installed version
  when: k3s_version_output.rc == 0
  when: not ansible_check_mode and k3s_version_output.rc == 0
  ansible.builtin.set_fact:
    installed_k3s_version: "{{ k3s_version_output.stdout_lines[0].split(' ')[2] }}"

@@ -15,7 +15,7 @@
#   - we couldn't get k3s installed version in the first task of this role
#   - the installed version of K3s on the nodes is older than the requested version in ansible vars
- name: Download artifact only if needed
  when: airgap_dir is undefined and ( k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') )
  when: not ansible_check_mode and airgap_dir is undefined and ( k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') )
  block:
    - name: Download K3s install script
      ansible.builtin.get_url:
@@ -53,6 +53,7 @@
        content: "{{ server_config_yaml }}"
        dest: "/etc/rancher/k3s/config.yaml"
        mode: "0644"
      register: _server_config_result

- name: Init first server node
  when: inventory_hostname == groups[server_group][0]
@@ -105,7 +106,7 @@
      when:
        - ansible_facts.services['k3s.service'] is defined
        - ansible_facts.services['k3s.service'].state == 'running'
        - service_file_single.changed or service_file_ha.changed
        - service_file_single.changed or service_file_ha.changed or _server_config_result.changed
      ansible.builtin.systemd:
        name: k3s
        daemon_reload: true
@@ -247,7 +248,7 @@
      when:
        - ansible_facts.services['k3s.service'] is defined
        - ansible_facts.services['k3s.service'].state == 'running'
        - service_file_ha.changed or service_file_external_db.changed
        - service_file_ha.changed or service_file_external_db.changed or _server_config_result.changed
      ansible.builtin.systemd:
        name: k3s
        daemon_reload: true
@@ -262,7 +263,7 @@
        enabled: true

    - name: Verify that all server nodes joined
      when: (groups[server_group] | length) > 1
      when: not ansible_check_mode and (groups[server_group] | length) > 1
      ansible.builtin.command:
        cmd: >
          k3s kubectl get nodes -l "node-role.kubernetes.io/control-plane=true" -o=jsonpath="{.items[*].metadata.name}"