Add support for openrc to k3s_server role

Signed-off-by: Derek Nola <derek.nola@suse.com>
This commit is contained in:
Derek Nola
2026-02-27 13:06:40 -08:00
parent 65a3b5f6ac
commit 92ac7d03a3
2 changed files with 55 additions and 36 deletions

View File

@@ -62,7 +62,7 @@ jobs:
--volume=/lib/modules:/lib/modules:ro \ --volume=/lib/modules:/lib/modules:ro \
--cgroupns=host \ --cgroupns=host \
--network=k3s-ansible \ --network=k3s-ansible \
rancher/systemd-node:v0.0.8 /usr/lib/systemd/systemd --unit=noop.target --show-status=true ${{ env.container_os }} ${{ env.container_cmd }}
# Start the Agent node # Start the Agent node
docker run -d --name agent-node \ docker run -d --name agent-node \
@@ -76,16 +76,17 @@ jobs:
--network=k3s-ansible \ --network=k3s-ansible \
${{ env.container_os }} ${{ env.container_cmd }} ${{ env.container_os }} ${{ env.container_cmd }}
- name: Install server dependencies - name: Install node dependencies (systemd)
run: docker exec server-node zypper install -y python3-rpm
- name: Install agent dependencies (systemd)
if: matrix.service_mgr == 'systemd' if: matrix.service_mgr == 'systemd'
run: docker exec agent-node zypper install -y python3-rpm run: |
docker exec server-node zypper install -y python3-rpm
docker exec agent-node zypper install -y python3-rpm
- name: Install agent dependencies (openrc) - name: Install node dependencies (openrc)
if: matrix.service_mgr == 'openrc' if: matrix.service_mgr == 'openrc'
run: docker exec agent-node apk add curl python3 run: |
docker exec server-node apk add curl python3
docker exec agent-node apk add curl python3
- name: Run Playbook - name: Run Playbook
env: env:
@@ -193,7 +194,11 @@ jobs:
echo "CONFIG FILE" echo "CONFIG FILE"
docker exec server-node cat /etc/rancher/k3s/config.yaml docker exec server-node cat /etc/rancher/k3s/config.yaml
echo "Server ENV" echo "Server ENV"
if [ $service_mgr == "systemd" ]; then
docker exec server-node cat /etc/systemd/system/k3s.service.env docker exec server-node cat /etc/systemd/system/k3s.service.env
elif [ $service_mgr == "openrc" ]; then
docker exec server-node cat /etc/rancher/k3s/k3s.env
fi
echo "Agent ENV" echo "Agent ENV"
if [ $service_mgr == "systemd" ]; then if [ $service_mgr == "systemd" ]; then
docker exec agent-node cat /etc/systemd/system/k3s-agent.service.env docker exec agent-node cat /etc/systemd/system/k3s-agent.service.env
@@ -201,7 +206,12 @@ jobs:
docker exec agent-node cat /etc/rancher/k3s/k3s-agent.env docker exec agent-node cat /etc/rancher/k3s/k3s-agent.env
fi fi
echo "SERVER LOGS" echo "SERVER LOGS"
if [ $service_mgr == "systemd" ]; then
docker exec server-node journalctl -u k3s -n 10 docker exec server-node journalctl -u k3s -n 10
elif [ $service_mgr == "openrc" ]; then
tail -n 10 /var/log/k3s.log
fi
- name: Remove K3s from Server and Agent - name: Remove K3s from Server and Agent
run: ansible-playbook playbooks/reset.yml -i tests/${{ matrix.inventory }}.yml run: ansible-playbook playbooks/reset.yml -i tests/${{ matrix.inventory }}.yml

View File

@@ -133,6 +133,17 @@
regexp: '\.\s+<\(k3s completion bash\)' regexp: '\.\s+<\(k3s completion bash\)'
line: ". <(k3s completion bash) # Added by k3s-ansible" line: ". <(k3s completion bash) # Added by k3s-ansible"
- name: Set k3s server environment file based on init system
ansible.builtin.set_fact:
k3s_server_env_file: "{{ (ansible_facts['service_mgr'] == 'systemd') | ternary(systemd_dir ~ '/k3s.service.env', '/etc/rancher/k3s/k3s.env') }}"
- name: Add service environment variables
when: extra_service_envs is defined
ansible.builtin.lineinfile:
path: "{{ k3s_server_env_file }}"
line: "{{ item }}"
loop: "{{ extra_service_envs }}"
- name: Init first server node - name: Init first server node
when: inventory_hostname == groups[server_group][0] or ansible_host == groups[server_group][0] when: inventory_hostname == groups[server_group][0] or ansible_host == groups[server_group][0]
block: block:
@@ -145,34 +156,32 @@
mode: "0644" mode: "0644"
register: k3s_server_config_result register: k3s_server_config_result
- name: Add service environment variables
when: extra_service_envs is defined
ansible.builtin.lineinfile:
path: "{{ systemd_dir }}/k3s.service.env"
line: "{{ item }}"
loop: "{{ extra_service_envs }}"
- name: Delete any existing token from the environment if different from the new one - name: Delete any existing token from the environment if different from the new one
ansible.builtin.lineinfile: ansible.builtin.lineinfile:
state: absent state: absent
path: "{{ systemd_dir }}/k3s.service.env" path: "{{ k3s_server_env_file }}"
regexp: "^K3S_TOKEN=\\s*(?!{{ token | default('') | regex_escape }}\\s*$)" regexp: "^K3S_TOKEN=\\s*(?!{{ token | default('') | regex_escape }}\\s*$)"
- name: Reload systemd daemon
when:
- not ansible_check_mode
- ansible_facts['service_mgr'] == 'systemd'
ansible.builtin.systemd:
daemon_reload: true
- name: Restart K3s service - name: Restart K3s service
when: when:
- ansible_facts.services['k3s.service'] is defined - ansible_facts.services['k3s.service'] is defined
- ansible_facts.services['k3s.service'].state == 'running' - ansible_facts.services['k3s.service'].state == 'running'
- k3s_server_config_result.changed - k3s_server_config_result.changed
ansible.builtin.systemd: ansible.builtin.service:
name: k3s name: k3s
daemon_reload: true
state: restarted state: restarted
- name: Enable and check K3s service - name: Enable and start K3s service
when: ansible_facts.services['k3s.service'] is not defined or ansible_facts.services['k3s.service'].state != 'running' when: ansible_facts.services['k3s.service'] is not defined or ansible_facts.services['k3s.service'].state != 'running'
ansible.builtin.systemd: ansible.builtin.service:
name: k3s name: k3s
daemon_reload: true
state: started state: started
enabled: true enabled: true
@@ -193,12 +202,14 @@
# Copy the k3s config to a second file to detect changes. # Copy the k3s config to a second file to detect changes.
# If no changes are found, we can skip copying the kubeconfig to the control node. # If no changes are found, we can skip copying the kubeconfig to the control node.
# This is dependent on the speed of the target node for k3s startup time, so retries are used.
- name: Copy k3s.yaml to second file - name: Copy k3s.yaml to second file
ansible.builtin.copy: ansible.builtin.copy:
src: /etc/rancher/k3s/k3s.yaml src: /etc/rancher/k3s/k3s.yaml
dest: /etc/rancher/k3s/k3s-copy.yaml dest: /etc/rancher/k3s/k3s-copy.yaml
mode: "0600" mode: "0600"
remote_src: true remote_src: true
retries: 3
register: k3s_server_copy_yaml register: k3s_server_copy_yaml
tags: kubeconfig tags: kubeconfig
@@ -280,34 +291,32 @@
mode: "0644" mode: "0644"
register: k3s_server_config_result register: k3s_server_config_result
- name: Add service environment variables
when: extra_service_envs is defined
ansible.builtin.lineinfile:
path: "{{ systemd_dir }}/k3s.service.env"
line: "{{ item }}"
loop: "{{ extra_service_envs }}"
- name: Delete any existing token from the environment if different from the new one - name: Delete any existing token from the environment if different from the new one
ansible.builtin.lineinfile: ansible.builtin.lineinfile:
state: absent state: absent
path: "{{ systemd_dir }}/k3s.service.env" path: "{{ k3s_server_env_file }}"
regexp: "^K3S_TOKEN=\\s*(?!{{ token | regex_escape }}\\s*$)" regexp: "^K3S_TOKEN=\\s*(?!{{ token | regex_escape }}\\s*$)"
- name: Reload systemd daemon
when:
- not ansible_check_mode
- ansible_facts['service_mgr'] == 'systemd'
ansible.builtin.systemd:
daemon_reload: true
- name: Restart K3s service - name: Restart K3s service
when: when:
- ansible_facts.services['k3s.service'] is defined - ansible_facts.services['k3s.service'] is defined
- ansible_facts.services['k3s.service'].state == 'running' - ansible_facts.services['k3s.service'].state == 'running'
- k3s_server_config_result.changed - k3s_server_config_result.changed
ansible.builtin.systemd: ansible.builtin.service:
name: k3s name: k3s
daemon_reload: true
state: restarted state: restarted
- name: Enable and check K3s service - name: Enable and start K3s service
when: ansible_facts.services['k3s.service'] is not defined or ansible_facts.services['k3s.service'].state != 'running' when: ansible_facts.services['k3s.service'] is not defined or ansible_facts.services['k3s.service'].state != 'running'
ansible.builtin.systemd: ansible.builtin.service:
name: k3s name: k3s
daemon_reload: true
state: started state: started
enabled: true enabled: true