mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 11:03:59 +00:00
Rename env config files from conf/*/prole.cfg to conf/k3d.cfg, conf/k3s.cfg, and conf/gke.cfg. Update shell/Python loaders and etc/deploy scripts to resolve named configs cleanly while keeping legacy fallback behavior. Align k3s Ansible tasks, docs, and regression coverage with the new configuration layout. Co-authored-by: Junie <junie@jetbrains.com>
162 lines
5.8 KiB
YAML
162 lines
5.8 KiB
YAML
---
|
|
|
|
- name: Set effective k3s data-dir
|
|
ansible.builtin.set_fact:
|
|
k3s_effective_data_dir: "{{ k3s_data_dir | default('/var/lib/rancher/k3s', true) }}"
|
|
|
|
- name: Ensure k3s config exists
|
|
ansible.builtin.stat:
|
|
path: /etc/rancher/k3s/config.yaml
|
|
register: k3s_config
|
|
|
|
- name: Fail when k3s config is missing
|
|
ansible.builtin.debug:
|
|
msg: "k3s config missing at /etc/rancher/k3s/config.yaml; creating minimal config for sync."
|
|
when: not k3s_config.stat.exists
|
|
|
|
- name: Ensure k3s config directory exists when missing
|
|
ansible.builtin.file:
|
|
path: /etc/rancher/k3s
|
|
state: directory
|
|
owner: root
|
|
group: "{{ k3s_kubeconfig_group | default('kubeadm') }}"
|
|
mode: "0750"
|
|
when: not k3s_config.stat.exists
|
|
|
|
- name: Create minimal k3s config when missing
|
|
ansible.builtin.copy:
|
|
dest: /etc/rancher/k3s/config.yaml
|
|
owner: root
|
|
group: "{{ k3s_kubeconfig_group | default('kubeadm') }}"
|
|
mode: "0640"
|
|
content: |
|
|
{% if k3s_cluster_init | default(false) | bool %}
|
|
cluster-init: true
|
|
{% elif k3s_server_url | default('') %}
|
|
server: "{{ k3s_server_url }}"
|
|
{% endif %}
|
|
{% if k3s_sync_token | default('') %}
|
|
token: "{{ k3s_sync_token }}"
|
|
{% endif %}
|
|
when: not k3s_config.stat.exists
|
|
|
|
- name: Sync k3s token into config
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/rancher/k3s/config.yaml
|
|
regexp: "^token:"
|
|
line: "token: \"{{ k3s_sync_token }}\""
|
|
owner: root
|
|
group: "{{ k3s_kubeconfig_group | default('kubeadm') }}"
|
|
mode: "0640"
|
|
|
|
- name: Sync k3s server URL into config (join nodes)
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/rancher/k3s/config.yaml
|
|
regexp: "^server:"
|
|
line: "server: \"{{ k3s_server_url }}\""
|
|
owner: root
|
|
group: "{{ k3s_kubeconfig_group | default('kubeadm') }}"
|
|
mode: "0640"
|
|
when:
|
|
- k3s_server_url | default('') | length > 0
|
|
|
|
- name: Check if controller has conf/k3s.cfg (optional)
|
|
ansible.builtin.stat:
|
|
path: "{{ role_path }}/../../../conf/k3s.cfg"
|
|
register: _k3s_prole_cfg_stat
|
|
delegate_to: localhost
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Load registry defaults from prole.cfg
|
|
ansible.builtin.set_fact:
|
|
k3s_prole_k3s_server_cfg: >-
|
|
{{ lookup(
|
|
'ansible.builtin.ini',
|
|
'PROLE_K3S_SERVER section=Global file=' ~ (role_path ~ '/../../../conf/k3s.cfg'),
|
|
default='',
|
|
errors='ignore'
|
|
) if _k3s_prole_cfg_stat.stat.exists else '' }}
|
|
k3s_prole_service_namespace_cfg: >-
|
|
{{ lookup(
|
|
'ansible.builtin.ini',
|
|
'SERVICE_NAMESPACE section=Global file=' ~ (role_path ~ '/../../../conf/k3s.cfg'),
|
|
default='',
|
|
errors='ignore'
|
|
) if _k3s_prole_cfg_stat.stat.exists else '' }}
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Resolve k3s registry host
|
|
ansible.builtin.set_fact:
|
|
k3s_registry_host_resolved: >-
|
|
{{ (k3s_registry_host | default('')) if (k3s_registry_host | default('') | length > 0)
|
|
else (k3s_prole_k3s_server_cfg | default('')) if (k3s_prole_k3s_server_cfg | default('') | length > 0)
|
|
else inventory_hostname }}
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Resolve k3s registry endpoint scheme
|
|
ansible.builtin.set_fact:
|
|
k3s_registry_endpoint_scheme_resolved: >-
|
|
{{ 'https' if (k3s_registry_host | default('') | regex_search('^https://'))
|
|
else 'http' if (k3s_registry_host | default('') | regex_search('^http://'))
|
|
else (k3s_registry_endpoint_scheme | default('http')) }}
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Normalize k3s registry host
|
|
ansible.builtin.set_fact:
|
|
k3s_registry_host_resolved: "{{ k3s_registry_host_resolved | regex_replace('^https?://', '') | regex_replace('/.*$', '') | regex_replace(':.*$', '') }}"
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Normalize k3s registry endpoint scheme
|
|
ansible.builtin.set_fact:
|
|
k3s_registry_endpoint_scheme_resolved: "{{ (k3s_registry_endpoint_scheme_resolved | default('http') | lower) if (k3s_registry_endpoint_scheme_resolved | default('http') | lower) in ['http', 'https'] else 'http' }}"
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Resolve k3s registry namespace
|
|
ansible.builtin.set_fact:
|
|
k3s_registry_namespace_resolved: >-
|
|
{{ (k3s_registry_namespace | default('')) if (k3s_registry_namespace | default('') | length > 0 and k3s_registry_namespace != '${SERVICE_NAMESPACE}')
|
|
else (k3s_prole_service_namespace_cfg | default('')) if (k3s_prole_service_namespace_cfg | default('') | length > 0 and k3s_prole_service_namespace_cfg != '${SERVICE_NAMESPACE}')
|
|
else 'knoe-system' }}
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Validate k3s registry host
|
|
ansible.builtin.assert:
|
|
that:
|
|
- k3s_registry_host_resolved | length > 0
|
|
fail_msg: "k3s registry host could not be resolved (set k3s_registry_host or PROLE_K3S_SERVER)."
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Render k3s registries config
|
|
ansible.builtin.template:
|
|
src: registries.yaml.j2
|
|
dest: "{{ k3s_registry_config_path }}"
|
|
mode: "0644"
|
|
when: k3s_registry_config_enabled | bool
|
|
|
|
- name: Ensure k3s server directory exists
|
|
ansible.builtin.file:
|
|
path: "{{ k3s_effective_data_dir }}/server"
|
|
state: directory
|
|
mode: "0755"
|
|
when:
|
|
- k3s_role == 'server'
|
|
- k3s_sync_tls_bundle_present | default(false)
|
|
|
|
- name: Remove existing k3s tls directory before sync
|
|
ansible.builtin.file:
|
|
path: "{{ k3s_effective_data_dir }}/server/tls"
|
|
state: absent
|
|
when:
|
|
- k3s_role == 'server'
|
|
- k3s_sync_tls_bundle_present | default(false)
|
|
|
|
- name: Restore k3s tls bundle
|
|
ansible.builtin.unarchive:
|
|
src: "{{ k3s_sync_tls_bundle }}"
|
|
dest: "{{ k3s_effective_data_dir }}/server"
|
|
owner: root
|
|
group: root
|
|
when:
|
|
- k3s_role == 'server'
|
|
- k3s_sync_tls_bundle_present | default(false)
|