Added tailscale
Also routes the whole subnet of the cluster over tailscale so it can act as an entry point to my home network even when not at home.
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 {{ config.tailscale.loginServer }}
|
||||
- TS_ROUTES={{ helper.tailscale_subnet(node.gateway, node.netmask) }}
|
||||
@@ -3,3 +3,4 @@ requests==2.32.5
|
||||
Jinja2==3.1.6
|
||||
GitPython==3.1.45
|
||||
mergedeep==1.3.4
|
||||
netaddr==1.3.0
|
||||
|
||||
@@ -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
@@ -12,6 +12,7 @@ import requests
|
||||
import yaml
|
||||
from jinja2 import Environment, FileSystemLoader, StrictUndefined, Template
|
||||
from mergedeep import merge
|
||||
from netaddr import IPAddress
|
||||
|
||||
REPO = git.Repo(sys.path[0], search_parent_directories=True)
|
||||
assert REPO.working_dir is not None
|
||||
@@ -53,6 +54,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"""
|
||||
@@ -138,7 +144,11 @@ def main():
|
||||
with open(ROOT.joinpath("secrets.yaml")) as fyaml:
|
||||
merge(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