infrastructure/network.tjo.cloud/justfile

74 lines
2.1 KiB
Makefile

default:
@just --list
apply:
#!/usr/bin/env sh
cd {{source_directory()}}/terraform
tofu init
tofu apply
destroy:
#!/usr/bin/env sh
cd {{source_directory()}}/terraform
tofu destroy
configure-all:
#!/usr/bin/env sh
set -euo pipefail
for node in $(ls configs/node.*.yaml | cut -d '.' -f 2)
do
just configure ${node}
done
configure node:
#!/usr/bin/env sh
set -euo pipefail
node="{{node}}"
echo "Configuring ${node}.network.tjo.cloud"
for file in {{source_directory()}}/openwrt/etc/config/*
do
echo "- Deploying /etc/config/$(basename $file)"
gomplate --file $file \
--datasource common=configs/common.yaml \
--datasource node=configs/node.${node}.yaml \
| tailscale ssh "root@${node}-network-tjo-cloud" "cat > /etc/config/$(basename $file)"
done
echo "- Configuring tailscale"
# We disable SNAT due to multiple router hops,
# which would not know how to route Tailscale IP.
tailscale ssh "root@${node}-network-tjo-cloud" <<'EOL'
tailscale up \
--advertise-routes=10.0.0.0/16,fd74:6a6f:0::/48 \
--snat-subnet-routes=false \
--accept-dns=false \
--ssh \
--reset
EOL
echo "- Configuring zerotier"
tailscale ssh "root@${node}-network-tjo-cloud" "opkg update"
tailscale ssh "root@${node}-network-tjo-cloud" "opkg install zerotier"
tailscale ssh "root@${node}-network-tjo-cloud" <<'EOL'
uci set zerotier.global.enabled='1'
uci delete zerotier.earth
uci delete zerotier.mynet
uci set zerotier.tjo_cloud=network
uci set zerotier.tjo_cloud.id=b6079f73c6379990
uci commit zerotier
EOL
echo "- Configuring bird"
tailscale ssh "root@${node}-network-tjo-cloud" "opkg update"
tailscale ssh "root@${node}-network-tjo-cloud" "opkg install bird2 bird2c"
gomplate --file {{source_directory()}}/openwrt/etc/bird.conf \
--datasource common=configs/common.yaml \
--datasource node=configs/node.${node}.yaml \
| tailscale ssh "root@${node}-network-tjo-cloud" "cat > /etc/bird.conf"
echo "- Reboot router in 5 seconds..."
sleep 5
echo "- Rebooting router..."
tailscale ssh "root@${node}-network-tjo-cloud" "reboot"