45 lines
1.5 KiB
YAML
45 lines
1.5 KiB
YAML
---
|
|
# role: traefik-manager
|
|
# description: Reusable role for managing Traefik load balancer configuration
|
|
# author: mk-labs
|
|
# version: 1.0.0
|
|
|
|
- name: Create Traefik configuration directory
|
|
ansible.builtin.file:
|
|
path: "{{ traefik_config_dir }}/dynamic"
|
|
state: directory
|
|
mode: "0755"
|
|
delegate_to: "{{ traefik_host }}"
|
|
|
|
- name: Generate Traefik TCP router configuration for Kubernetes API
|
|
ansible.builtin.template:
|
|
src: k8s-api-router.yml.j2
|
|
dest: "{{ traefik_config_dir }}/dynamic/{{ cluster_name }}-api.yml"
|
|
mode: "0644"
|
|
delegate_to: "{{ traefik_host }}"
|
|
notify: reload traefik
|
|
|
|
- name: Generate Traefik service configuration for control plane nodes
|
|
ansible.builtin.template:
|
|
src: k8s-api-service.yml.j2
|
|
dest: "{{ traefik_config_dir }}/dynamic/{{ cluster_name }}-service.yml"
|
|
mode: "0644"
|
|
delegate_to: "{{ traefik_host }}"
|
|
notify: reload traefik
|
|
|
|
- name: Verify Traefik configuration syntax
|
|
ansible.builtin.command: |
|
|
traefik --configfile={{ traefik_config_dir }}/traefik.yml --dry-run
|
|
delegate_to: "{{ traefik_host }}"
|
|
register: traefik_syntax_check
|
|
failed_when: traefik_syntax_check.rc != 0
|
|
changed_when: false
|
|
|
|
- name: Display Traefik configuration status
|
|
ansible.builtin.debug:
|
|
msg: |
|
|
✅ Traefik configuration created successfully:
|
|
- Router: {{ cluster_name }}-api
|
|
- Service: {{ cluster_name }}-backend
|
|
- Endpoint: {{ cluster_endpoint }}:{{ cluster_api_port }}
|
|
- Backend nodes: {{ control_plane_nodes | join(', ') }} |