mirror of
https://github.com/khuedoan/homelab.git
synced 2025-02-02 04:14:28 +07:00
feat(metallb): generate address pool automatically
This commit is contained in:
parent
9e59f1ad81
commit
8ab9ac0817
@ -2,3 +2,10 @@
|
||||
hosts: metal
|
||||
roles:
|
||||
- k3s
|
||||
|
||||
- name: Create some basic config
|
||||
hosts: localhost
|
||||
environment:
|
||||
KUBECONFIG: ./kubeconfig.yaml
|
||||
roles:
|
||||
- metallb_config
|
||||
|
9
metal/roles/metallb_config/defaults/main.yml
Normal file
9
metal/roles/metallb_config/defaults/main.yml
Normal file
@ -0,0 +1,9 @@
|
||||
metallb_namespace: metallb-system
|
||||
metallb_subnet_cidr_prefix: 27 # /27
|
||||
metallb_subnet_index: -1 # last subnet
|
||||
metallb_addresses: | # Use the last subnet with the specified size from the network
|
||||
{{
|
||||
(ansible_default_ipv4.network + '/' + ansible_default_ipv4.netmask)
|
||||
| ansible.netcommon.ipaddr('net')
|
||||
| ansible.netcommon.ipsubnet(metallb_subnet_cidr_prefix, metallb_subnet_index)
|
||||
}}
|
10
metal/roles/metallb_config/tasks/main.yml
Normal file
10
metal/roles/metallb_config/tasks/main.yml
Normal file
@ -0,0 +1,10 @@
|
||||
- name: Ensure MetalLB namespace exist
|
||||
kubernetes.core.k8s:
|
||||
api_version: v1
|
||||
kind: Namespace
|
||||
name: "{{ metallb_namespace }}"
|
||||
state: present
|
||||
|
||||
- name: Create MetalLB config base on network info
|
||||
kubernetes.core.k8s:
|
||||
definition: "{{ lookup('template', 'configmap.yaml.j2') | from_yaml }}"
|
12
metal/roles/metallb_config/templates/configmap.yaml.j2
Normal file
12
metal/roles/metallb_config/templates/configmap.yaml.j2
Normal file
@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: metallb-config
|
||||
namespace: {{ metallb_namespace }}
|
||||
data:
|
||||
config: |
|
||||
address-pools:
|
||||
- name: default
|
||||
protocol: layer2
|
||||
addresses:
|
||||
- {{ metallb_addresses }}
|
@ -1,8 +1,2 @@
|
||||
metallb:
|
||||
configInline:
|
||||
address-pools:
|
||||
- name: default
|
||||
protocol: layer2
|
||||
addresses:
|
||||
# TODO (optimize) Use metal values for MetalLB values
|
||||
- 192.168.1.150-192.168.1.180
|
||||
existingConfigMap: metallb-config
|
||||
|
Loading…
Reference in New Issue
Block a user