diff --git a/playbooks/add-ons.yaml b/playbooks/add-ons.yaml index a06ced2..42478a5 100644 --- a/playbooks/add-ons.yaml +++ b/playbooks/add-ons.yaml @@ -174,30 +174,44 @@ - name: Local IP set_fact: - load_balancer_ip: "{% if loadbalancer_ip == '' %}{{ network.stdout_lines[0] }}/32{%elif loadbalancer_ip != '' %}{{ loadbalancer_ip }}{% endif %}" + load_balancer_ips: "{{ loadbalancer_ips if loadbalancer_ips | length > 0 else [network.stdout_lines[0] + '/32'] }}" + when: loadbalancer == true + + - name: Generate MetalLB IP Pool template + when: loadbalancer == true + copy: + src: "{{lookup('pipe', 'pwd')}}/files/ipaddresspool.yaml" + dest: "{{ ansible_user_dir }}/ipaddresspool.yaml.j2" + retries: 5 + delay: 5 + register: generate_ip_pool + until: generate_ip_pool is succeeded + + - name: Copy MetalLB L2Advertisement configuration + when: loadbalancer == true + copy: + src: "{{lookup('pipe', 'pwd')}}/files/l2advertisement.yaml" + dest: "{{ ansible_user_dir }}/l2advertisement.yaml" + retries: 5 + delay: 5 + register: copy_l2_adv + until: copy_l2_adv is succeeded - - name: Apply Layer2 Config for MetalLB + - name: Create final MetalLB IP Pool configuration + when: loadbalancer == true + ansible.builtin.template: + src: "{{ ansible_user_dir }}/ipaddresspool.yaml.j2" + dest: "{{ ansible_user_dir }}/ipaddresspool.yaml" + retries: 5 + delay: 5 + register: create_ip_pool + until: create_ip_pool is succeeded + + - name: Apply MetalLB Configuration when: loadbalancer == true shell: | - kubectl apply -f - <