From d53102dda38f911b59a4638d6b87df17acb01aac Mon Sep 17 00:00:00 2001 From: Xan Manning Date: Sat, 25 Jul 2020 17:39:01 +0100 Subject: [PATCH] Check mode support added --- README.md | 2 ++ tasks/build/configure-k3s-cluster.yml | 12 +++++++++--- tasks/build/download-k3s.yml | 4 ++++ tasks/build/get-version.yml | 4 ++++ tasks/build/install-k3s.yml | 5 +++-- tasks/build/preconfigure-k3s.yml | 4 ++++ tasks/teardown/drain-and-remove-nodes.yml | 1 + 7 files changed, 27 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e9fc42d..869da77 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,10 @@ This role has been tested on Ansible 2.7.0+ against the following Linux Distribu - Fedora 29 - Fedora 30 - Fedora 31 + - Fedora 32 - openSUSE Leap 15 - Ubuntu 18.04 LTS + - Ubuntu 20.04 LTS ## Disclaimer diff --git a/tasks/build/configure-k3s-cluster.yml b/tasks/build/configure-k3s-cluster.yml index f99c8f6..027fe3e 100644 --- a/tasks/build/configure-k3s-cluster.yml +++ b/tasks/build/configure-k3s-cluster.yml @@ -5,13 +5,19 @@ path: "/var/lib/rancher/k3s/server/node-token" register: k3s_slurped_control_token delegate_to: "{{ k3s_control_delegate }}" - when: k3s_control_token is not defined + when: k3s_control_token is not defined and not ansible_check_mode become: "{{ k3s_become_for_kubectl | ternary(true, false, k3s_become_for_all) }}" - name: Ensure NODE_TOKEN is formatted correctly for use in templates set_fact: k3s_control_token: "{{ k3s_slurped_control_token.content | b64decode }}" - when: k3s_control_token is not defined + when: k3s_control_token is not defined and not ansible_check_mode + +- name: Ensure dummy NODE_TOKEN is defined for ansible_check_mode + set_fact: + k3s_control_token: "{{ k3s_control_delegate | to_uuid }}" + check_mode: false + when: k3s_control_token is not defined and ansible_check_mode - name: Ensure k3s service unit file is present template: @@ -54,5 +60,5 @@ and kubectl_get_nodes_result.stdout.find("NotReady") == -1 retries: 30 delay: 20 - when: k3s_control_node and not k3s_no_flannel + when: k3s_control_node and not k3s_no_flannel and not ansible_check_mode become: "{{ k3s_become_for_kubectl | ternary(true, false, k3s_become_for_all) }}" diff --git a/tasks/build/download-k3s.yml b/tasks/build/download-k3s.yml index b5c8606..fc9061a 100644 --- a/tasks/build/download-k3s.yml +++ b/tasks/build/download-k3s.yml @@ -4,17 +4,20 @@ set_fact: k3s_arch: "{{ k3s_arch_lookup[ansible_architecture].arch }}" k3s_arch_suffix: "{{ k3s_arch_lookup[ansible_architecture].suffix }}" + check_mode: false - name: Ensure URLs are set as facts for downloading binaries set_fact: k3s_binary_url: "{{ k3s_github_download_url }}/{{ k3s_release_version }}/k3s{{ k3s_arch_suffix }}" k3s_hash_url: "{{ k3s_github_download_url }}/{{ k3s_release_version }}/sha256sum-{{ k3s_arch }}.txt" + check_mode: false - name: Ensure the k3s hashsum is downloaded uri: url: "{{ k3s_hash_url }}" return_content: true register: k3s_hash_sum_raw + check_mode: false - name: Ensure sha256sum is set from hashsum variable set_fact: @@ -23,6 +26,7 @@ reject('search', 'images') | first).split() | first }}" changed_when: false + check_mode: false - name: Ensure installation directory exists file: diff --git a/tasks/build/get-version.yml b/tasks/build/get-version.yml index d5f86a1..e791a83 100644 --- a/tasks/build/get-version.yml +++ b/tasks/build/get-version.yml @@ -3,11 +3,13 @@ - name: Ensure k3s_release_version is set to default if false set_fact: k3s_release_version: "{{ k3s_release_channel }}" + check_mode: false when: k3s_release_version is defined and not k3s_release_version - name: Ensure the default release channel is set set_fact: k3s_release_channel: "{{ k3s_release_version | default('stable') }}" + check_mode: false - name: Get the latest release version from k3s.io uri: @@ -15,10 +17,12 @@ return_content: true body_format: json register: k3s_latest_release + check_mode: false - name: Ensure the release version is set as a fact set_fact: k3s_release_version: "{{ item.latest }}" loop: "{{ k3s_latest_release.json.data }}" + check_mode: false when: item.name == k3s_release_channel and item.type == "channel" diff --git a/tasks/build/install-k3s.yml b/tasks/build/install-k3s.yml index 80ea3e8..3ba0e60 100644 --- a/tasks/build/install-k3s.yml +++ b/tasks/build/install-k3s.yml @@ -5,8 +5,8 @@ src: "{{ k3s_install_dir }}/k3s-{{ k3s_release_version }}" dest: "{{ k3s_install_dir }}/k3s" state: link - when: (k3s_control_node and k3s_controller_count | length == 1) - or (k3s_primary_control_node and k3s_controller_count | length > 1) + when: ((k3s_control_node and k3s_controller_count | length == 1) + or (k3s_primary_control_node and k3s_controller_count | length > 1)) and not ansible_check_mode notify: - restart k3s become: "{{ k3s_become_for_install_dir | ternary(true, false, k3s_become_for_all) }}" @@ -56,6 +56,7 @@ - kubectl - crictl - ctr + when: not ansible_check_mode become: "{{ k3s_become_for_install_dir | ternary(true, false, k3s_become_for_all) }}" - name: Ensure k3s control plane is started diff --git a/tasks/build/preconfigure-k3s.yml b/tasks/build/preconfigure-k3s.yml index 30e7af9..56a4684 100644 --- a/tasks/build/preconfigure-k3s.yml +++ b/tasks/build/preconfigure-k3s.yml @@ -48,6 +48,7 @@ create: true regexp: "^{{ item }} @@@ {{ hostvars[item].ansible_host | default(hostvars[item].ansible_fqdn) }}" loop: "{{ play_hosts }}" + check_mode: false when: hostvars[item].k3s_control_node is defined - name: Delegate a master control plane node @@ -55,16 +56,19 @@ - name: Lookup control node from file command: "grep '{{ 'P_True' if (k3s_controller_count | length > 1) else 'C_True' }}' /tmp/inventory.txt" changed_when: false + check_mode: false register: k3s_control_delegate_raw - name: Ensure control node is delegated to for obtaining a token set_fact: k3s_control_delegate: "{{ k3s_control_delegate_raw.stdout.split(' @@@ ')[0] }}" + check_mode: false when: k3s_control_delegate is not defined - name: Ensure the control node address is registered in Ansible set_fact: k3s_control_node_address: "{{ hostvars[k3s_control_delegate].ansible_host | default(hostvars[k3s_control_delegate].ansible_fqdn) }}" + check_mode: false when: k3s_control_node_address is not defined when: k3s_control_node_address is not defined diff --git a/tasks/teardown/drain-and-remove-nodes.yml b/tasks/teardown/drain-and-remove-nodes.yml index 2700599..f6407b0 100644 --- a/tasks/teardown/drain-and-remove-nodes.yml +++ b/tasks/teardown/drain-and-remove-nodes.yml @@ -41,3 +41,4 @@ when: k3s_check_kubectl.stat.exists is defined and k3s_check_kubectl.stat.exists and k3s_control_delegate is defined + and not ansible_check_mode