From 1e633c5ad16d90bddf62f5e943e5b0e4dc6197c0 Mon Sep 17 00:00:00 2001 From: Derek Nola Date: Thu, 16 Nov 2023 12:03:07 -0800 Subject: [PATCH] Rework Role Structure (#254) * Add more defaults * Rename roles, covert download to airgap role * Remove unnecessary gather_facts Signed-off-by: Derek Nola --- playbook/reset.yml | 1 - playbook/site.yml | 6 ++-- playbook/upgrade.yml | 6 ++-- roles/{download => airgap}/tasks/main.yml | 33 ----------------- roles/k3s/agent/tasks/main.yml | 16 --------- .../agent => k3s_agent}/defaults/main.yml | 0 roles/k3s_agent/tasks/main.yml | 36 +++++++++++++++++++ .../templates/k3s-agent.service.j2 | 0 .../server => k3s_server}/defaults/main.yml | 0 .../{k3s/server => k3s_server}/tasks/main.yml | 20 +++++++++++ .../templates/k3s-cluster-init.service.j2 | 0 .../templates/k3s-ha.service.j2 | 0 .../templates/k3s-single.service.j2 | 0 roles/k3s_upgrade/defaults/main.yml | 2 ++ roles/{upgrade => k3s_upgrade}/tasks/main.yml | 5 --- roles/prereq/defaults/main.yml | 2 ++ roles/prereq/tasks/main.yml | 5 --- 17 files changed, 65 insertions(+), 67 deletions(-) rename roles/{download => airgap}/tasks/main.yml (81%) delete mode 100644 roles/k3s/agent/tasks/main.yml rename roles/{k3s/agent => k3s_agent}/defaults/main.yml (100%) create mode 100644 roles/k3s_agent/tasks/main.yml rename roles/{k3s/agent => k3s_agent}/templates/k3s-agent.service.j2 (100%) rename roles/{k3s/server => k3s_server}/defaults/main.yml (100%) rename roles/{k3s/server => k3s_server}/tasks/main.yml (87%) rename roles/{k3s/server => k3s_server}/templates/k3s-cluster-init.service.j2 (100%) rename roles/{k3s/server => k3s_server}/templates/k3s-ha.service.j2 (100%) rename roles/{k3s/server => k3s_server}/templates/k3s-single.service.j2 (100%) create mode 100644 roles/k3s_upgrade/defaults/main.yml rename roles/{upgrade => k3s_upgrade}/tasks/main.yml (88%) create mode 100644 roles/prereq/defaults/main.yml diff --git a/playbook/reset.yml b/playbook/reset.yml index 6a1d407d..3d8ca078 100644 --- a/playbook/reset.yml +++ b/playbook/reset.yml @@ -1,7 +1,6 @@ --- - name: Undo cluster setup hosts: k3s_cluster - gather_facts: true become: true tasks: - name: Run K3s Uninstall script [server] diff --git a/playbook/site.yml b/playbook/site.yml index 568f3dc3..71fcad8e 100644 --- a/playbook/site.yml +++ b/playbook/site.yml @@ -5,17 +5,17 @@ become: true roles: - role: prereq - - role: download + - role: airgap - role: raspberrypi - name: Setup K3S server hosts: server become: true roles: - - role: k3s/server # noqa: role-name[path] + - role: k3s_server - name: Setup K3S agent hosts: agent become: true roles: - - role: k3s/agent # noqa: role-name[path] + - role: k3s_agent diff --git a/playbook/upgrade.yml b/playbook/upgrade.yml index 8410873c..ef2c3bb7 100644 --- a/playbook/upgrade.yml +++ b/playbook/upgrade.yml @@ -4,15 +4,13 @@ # Agents have no such limitation - name: Upgrade K3s Servers hosts: server - gather_facts: true become: true serial: 1 roles: - - role: upgrade + - role: k3s_upgrade - name: Upgrade K3s Agents hosts: agent - gather_facts: true become: true roles: - - role: upgrade + - role: k3s_upgrade diff --git a/roles/download/tasks/main.yml b/roles/airgap/tasks/main.yml similarity index 81% rename from roles/download/tasks/main.yml rename to roles/airgap/tasks/main.yml index 1c360ca7..378f61bf 100644 --- a/roles/download/tasks/main.yml +++ b/roles/airgap/tasks/main.yml @@ -118,36 +118,3 @@ INSTALL_K3S_SKIP_DOWNLOAD: "true" INSTALL_K3S_EXEC: "agent" changed_when: true - -- name: Download k3s install script - when: airgap_dir is undefined - ansible.builtin.get_url: - url: https://get.k3s.io/ - timeout: 120 - dest: /usr/local/bin/k3s-install.sh - owner: root - group: root - mode: 0755 - -- name: Download k3s binary [server] - when: - - "'server' in group_names" - - airgap_dir is undefined - ansible.builtin.command: - cmd: /usr/local/bin/k3s-install.sh - environment: - INSTALL_K3S_SKIP_START: "true" - INSTALL_K3S_VERSION: "{{ k3s_version }}" - changed_when: true - -- name: Download k3s binary [agent] - when: - - "'agent' in group_names" - - airgap_dir is undefined - ansible.builtin.command: - cmd: /usr/local/bin/k3s-install.sh - environment: - INSTALL_K3S_SKIP_START: "true" - INSTALL_K3S_VERSION: "{{ k3s_version }}" - INSTALL_K3S_EXEC: "agent" - changed_when: true diff --git a/roles/k3s/agent/tasks/main.yml b/roles/k3s/agent/tasks/main.yml deleted file mode 100644 index b89520b5..00000000 --- a/roles/k3s/agent/tasks/main.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- - -- name: Copy K3s service file - ansible.builtin.template: - src: "k3s-agent.service.j2" - dest: "{{ systemd_dir }}/k3s-agent.service" - owner: root - group: root - mode: 0755 - -- name: Enable and check K3s service - ansible.builtin.systemd: - name: k3s-agent - daemon_reload: true - state: started - enabled: true diff --git a/roles/k3s/agent/defaults/main.yml b/roles/k3s_agent/defaults/main.yml similarity index 100% rename from roles/k3s/agent/defaults/main.yml rename to roles/k3s_agent/defaults/main.yml diff --git a/roles/k3s_agent/tasks/main.yml b/roles/k3s_agent/tasks/main.yml new file mode 100644 index 00000000..5d16780f --- /dev/null +++ b/roles/k3s_agent/tasks/main.yml @@ -0,0 +1,36 @@ +--- +# If airgapped, all K3s artifacts are already on the node. +- name: Download K3s install script + when: airgap_dir is undefined + ansible.builtin.get_url: + url: https://get.k3s.io/ + timeout: 120 + dest: /usr/local/bin/k3s-install.sh + owner: root + group: root + mode: 0755 + +- name: Download K3s binary + when: airgap_dir is undefined + ansible.builtin.command: + cmd: /usr/local/bin/k3s-install.sh + environment: + INSTALL_K3S_SKIP_START: "true" + INSTALL_K3S_VERSION: "{{ k3s_version }}" + INSTALL_K3S_EXEC: "agent" + changed_when: true + +- name: Copy K3s service file + ansible.builtin.template: + src: "k3s-agent.service.j2" + dest: "{{ systemd_dir }}/k3s-agent.service" + owner: root + group: root + mode: 0755 + +- name: Enable and check K3s service + ansible.builtin.systemd: + name: k3s-agent + daemon_reload: true + state: started + enabled: true diff --git a/roles/k3s/agent/templates/k3s-agent.service.j2 b/roles/k3s_agent/templates/k3s-agent.service.j2 similarity index 100% rename from roles/k3s/agent/templates/k3s-agent.service.j2 rename to roles/k3s_agent/templates/k3s-agent.service.j2 diff --git a/roles/k3s/server/defaults/main.yml b/roles/k3s_server/defaults/main.yml similarity index 100% rename from roles/k3s/server/defaults/main.yml rename to roles/k3s_server/defaults/main.yml diff --git a/roles/k3s/server/tasks/main.yml b/roles/k3s_server/tasks/main.yml similarity index 87% rename from roles/k3s/server/tasks/main.yml rename to roles/k3s_server/tasks/main.yml index fa54b0cd..da49b6b5 100644 --- a/roles/k3s/server/tasks/main.yml +++ b/roles/k3s_server/tasks/main.yml @@ -1,4 +1,24 @@ --- +# If airgapped, all K3s artifacts are already on the node. +- name: Download K3s install script + when: airgap_dir is undefined + ansible.builtin.get_url: + url: https://get.k3s.io/ + timeout: 120 + dest: /usr/local/bin/k3s-install.sh + owner: root + group: root + mode: 0755 + +- name: Download K3s binary + when: airgap_dir is undefined + ansible.builtin.command: + cmd: /usr/local/bin/k3s-install.sh + environment: + INSTALL_K3S_SKIP_START: "true" + INSTALL_K3S_VERSION: "{{ k3s_version }}" + changed_when: true + - name: Init first server node # Handle both hostname OR ip address being supplied in inventory when: ansible_hostname == groups['server'][0] or groups['server'][0] in ansible_facts['all_ipv4_addresses'] diff --git a/roles/k3s/server/templates/k3s-cluster-init.service.j2 b/roles/k3s_server/templates/k3s-cluster-init.service.j2 similarity index 100% rename from roles/k3s/server/templates/k3s-cluster-init.service.j2 rename to roles/k3s_server/templates/k3s-cluster-init.service.j2 diff --git a/roles/k3s/server/templates/k3s-ha.service.j2 b/roles/k3s_server/templates/k3s-ha.service.j2 similarity index 100% rename from roles/k3s/server/templates/k3s-ha.service.j2 rename to roles/k3s_server/templates/k3s-ha.service.j2 diff --git a/roles/k3s/server/templates/k3s-single.service.j2 b/roles/k3s_server/templates/k3s-single.service.j2 similarity index 100% rename from roles/k3s/server/templates/k3s-single.service.j2 rename to roles/k3s_server/templates/k3s-single.service.j2 diff --git a/roles/k3s_upgrade/defaults/main.yml b/roles/k3s_upgrade/defaults/main.yml new file mode 100644 index 00000000..0b45925d --- /dev/null +++ b/roles/k3s_upgrade/defaults/main.yml @@ -0,0 +1,2 @@ +--- +systemd_dir: /etc/systemd/system diff --git a/roles/upgrade/tasks/main.yml b/roles/k3s_upgrade/tasks/main.yml similarity index 88% rename from roles/upgrade/tasks/main.yml rename to roles/k3s_upgrade/tasks/main.yml index 20b46bfd..e631e32b 100644 --- a/roles/upgrade/tasks/main.yml +++ b/roles/k3s_upgrade/tasks/main.yml @@ -1,9 +1,4 @@ --- -- name: Set var defaults - when: systemd_dir is undefined - ansible.builtin.set_fact: - systemd_dir: /etc/systemd/system - # with_fileglob doesn't work with remote_src, it tries to find the file on the # local control-plane instead of the remote host. Shell supports wildcards. - name: Save current K3s service diff --git a/roles/prereq/defaults/main.yml b/roles/prereq/defaults/main.yml new file mode 100644 index 00000000..498a2c26 --- /dev/null +++ b/roles/prereq/defaults/main.yml @@ -0,0 +1,2 @@ +--- +api_port: 6443 diff --git a/roles/prereq/tasks/main.yml b/roles/prereq/tasks/main.yml index ee851e83..ae9b51e1 100644 --- a/roles/prereq/tasks/main.yml +++ b/roles/prereq/tasks/main.yml @@ -23,11 +23,6 @@ - name: Populate service facts ansible.builtin.service_facts: -- name: Assign api_port if not defined - when: api_port is undefined - ansible.builtin.set_fact: - api_port: 6443 - - name: Allow UFW Exceptions when: - ansible_facts.services['ufw'] is defined