Use port 1022 for all cluster nodes as SSH-port and fix some config-errors

I'm oversaw completely, that I have to change the SSH-port for all nodes
in the cluster otherwise I cannot provide a meaningful load-balancer for
the git-ssh port in it.

Additionally this allowed me to fix some config errors which I simply
oversaw.
This commit is contained in:
2025-09-22 03:43:37 +02:00
parent f1856f59aa
commit f19a1f61c9
8 changed files with 63 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
all: all:
vars: vars:
k8s_api_endpoint: "{{ hostvars[groups['server'][0]]['ansible_host'] | default(groups['server'][0]) }}" api_endpoint: "{{ hostvars[groups['server'][0]]['ansible_host'] | default(groups['server'][0]) }}"
cert_manager_state: present cert_manager_state: present
cert_manager_version: v1.18.2 cert_manager_version: v1.18.2
letsencrypt_clusterissuers: letsencrypt_clusterissuers:
@@ -19,7 +19,7 @@ k3s_cluster:
agent: agent:
vars: vars:
ansible_ssh_common_args: -o StrictHostKeyChecking=accept-new -o ProxyCommand="ssh -p 1022 -W %h:%p -q root@{{ k8s_api_endpoint }}" ansible_ssh_common_args: -o StrictHostKeyChecking=accept-new -o ProxyCommand="ssh -p {{ hostvars[groups['server'][0]]['ansible_port'] }} -W %h:%p -q root@{{ api_endpoint }}"
k3s_version: v1.31.6+k3s1 k3s_version: v1.31.6+k3s1
server: server:

View File

@@ -3,9 +3,6 @@
${ip} ${ip}
%{endfor~} %{endfor~}
[server:vars]
ansible_port=${ssh_port}
[agent] [agent]
%{for ip in agent_ips~} %{for ip in agent_ips~}
${ip} ${ip}
@@ -16,5 +13,6 @@ server
agent agent
[k3s_cluster:vars] [k3s_cluster:vars]
ansible_port=${ssh_port}
network_cidr=${network_cidr} network_cidr=${network_cidr}
private_nat=${private_nat} private_nat=${private_nat}

View File

@@ -1,3 +1,9 @@
- name: Restart sshd
systemd_service:
name: ssh.socket
state: restarted
daemon_reload: true
- name: Restart resolved - name: Restart resolved
service: service:
name: systemd-resolved name: systemd-resolved

View File

@@ -1,3 +1,47 @@
- name: Set facts for target SSH-connection
set_fact:
target_ansible_port: "{{ ansible_port }}"
- name: Check if SSH-connection is already adjusted
ping:
ignore_errors: "yes"
ignore_unreachable: "yes"
register: target_ssh
- name: Set ansible_port to 22 when SSH-connection is not adjusted
set_fact:
ansible_port: "22"
when: target_ssh.unreachable is defined and
target_ssh.unreachable == True
- name: Check if initial SSH-connection is active
ping:
when: target_ssh.unreachable is defined and
target_ssh.unreachable == True
- name: Set SSH-port to 1022
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^#?\s*Port\s+[0-9]+$'
line: Port 1022
notify: Restart sshd
when: target_ssh.unreachable is defined and
target_ssh.unreachable == True
- name: Ensure SSH is reloaded
meta: flush_handlers
when: target_ssh.unreachable is defined and
target_ssh.unreachable == True
- name: Reset ansible_port to configured value
set_fact:
ansible_port: "{{ target_ansible_port }}"
when: target_ssh.unreachable is defined and
target_ssh.unreachable == True
- name: Run deferred setup to gather facts
setup:
- name: Set default network route - name: Set default network route
shell: "ip route add default via {{ private_nat }}" shell: "ip route add default via {{ private_nat }}"
ignore_errors: "yes" ignore_errors: "yes"

View File

@@ -15,5 +15,5 @@
lineinfile: lineinfile:
path: "{{ lookup('env', 'HOME') }}/.kube/config" path: "{{ lookup('env', 'HOME') }}/.kube/config"
regexp: '^(\s*server: https://).*(:\d+)$' regexp: '^(\s*server: https://).*(:\d+)$'
line: \g<1>{{ k8s_api_endpoint }}\g<2> line: \g<1>{{ api_endpoint }}\g<2>
backrefs: yes backrefs: yes

View File

@@ -1,7 +1,8 @@
- name: Restart sshd - name: Restart sshd
service: systemd_service:
name: ssh name: ssh.socket
state: restarted state: restarted
daemon_reload: true
- name: Start ip-masquerade - name: Start ip-masquerade
script: "{{ ip_masquerade_path }}/{{ ip_masquerade_script }}" script: "{{ ip_masquerade_path }}/{{ ip_masquerade_script }}"

View File

@@ -28,6 +28,11 @@
when: target_ssh.unreachable is defined and when: target_ssh.unreachable is defined and
target_ssh.unreachable == True target_ssh.unreachable == True
- name: Ensure SSH is reloaded
meta: flush_handlers
when: target_ssh.unreachable is defined and
target_ssh.unreachable == True
- name: Reset ansible_port to configured value - name: Reset ansible_port to configured value
set_fact: set_fact:
ansible_port: "{{ target_ansible_port }}" ansible_port: "{{ target_ansible_port }}"

View File

@@ -6,6 +6,7 @@
- init - init
- add-server - add-server
- hosts: agent - hosts: agent
gather_facts: no
roles: roles:
- role: agent-setup - role: agent-setup
tags: tags: