Route entire cluster subnet over tailscale
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
server:
|
||||
tftpIp: 192.168.1.1
|
||||
httpUrl: http://192.168.1.1:8000
|
||||
|
||||
tailscale:
|
||||
loginServer: https://headscale.huizinga.dev
|
||||
|
||||
@@ -26,5 +26,6 @@ patches:
|
||||
- !patch install-disk
|
||||
- !patch network
|
||||
- !patch vip
|
||||
- !patch tailscale
|
||||
patchesControlPlane:
|
||||
- !patch allow-control-plane-workloads
|
||||
|
||||
7
patches/tailscale.yaml
Normal file
7
patches/tailscale.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: v1alpha1
|
||||
kind: ExtensionServiceConfig
|
||||
name: tailscale
|
||||
environment:
|
||||
- TS_AUTHKEY={{ config.tailscale.authKey }}
|
||||
- TS_EXTRA_ARGS=--login-server https://headscale.huizinga.dev
|
||||
- TS_ROUTES={{ helper.tailscale_subnet(node.gateway, node.netmask) }}
|
||||
@@ -5,3 +5,4 @@ customization:
|
||||
- siderolabs/util-linux-tools
|
||||
- siderolabs/intel-ucode
|
||||
- siderolabs/i915
|
||||
- siderolabs/tailscale
|
||||
|
||||
BIN
secrets.yaml
Normal file
BIN
secrets.yaml
Normal file
Binary file not shown.
12
tools/render
12
tools/render
@@ -11,6 +11,7 @@ import git
|
||||
import requests
|
||||
import yaml
|
||||
from jinja2 import Environment, FileSystemLoader, StrictUndefined, Template
|
||||
from netaddr import IPAddress
|
||||
|
||||
REPO = git.Repo(sys.path[0], search_parent_directories=True)
|
||||
assert REPO.working_dir is not None
|
||||
@@ -52,6 +53,11 @@ def render_templates(node: dict, args: dict):
|
||||
return Inner
|
||||
|
||||
|
||||
def tailscale_subnet(gateway: str, netmask: str):
|
||||
netmask_bits = IPAddress(netmask).netmask_bits()
|
||||
return f"{IPAddress(gateway) & IPAddress(netmask)}/{netmask_bits}"
|
||||
|
||||
|
||||
@functools.cache
|
||||
def get_schematic_id(schematic: str):
|
||||
"""Lookup the schematic id associated with a given schematic"""
|
||||
@@ -137,7 +143,11 @@ def main():
|
||||
with open(ROOT.joinpath("secrets.yaml")) as fyaml:
|
||||
config |= yaml.safe_load(fyaml)
|
||||
|
||||
template_args = {"config": config, "root": ROOT}
|
||||
template_args = {
|
||||
"config": config,
|
||||
"root": ROOT,
|
||||
"helper": {"tailscale_subnet": tailscale_subnet},
|
||||
}
|
||||
|
||||
nodes = []
|
||||
for fullname in walk_files(NODES):
|
||||
|
||||
Reference in New Issue
Block a user