stockholm/networking-configuration

58 lines
1.3 KiB
Bash
Executable File

#! /bin/sh
#
# usage: with cac ./networking-configuration c838-828 cd
#
set -euf
. ./lib/cac.sh
. ./lib/net.sh
cac_servername=$1
hostname=$2
# This is somewhat required because cloudatcost requires whitelisting
# of hosts. If you whitelist your localhost, then leave this empty.
# cac_via=
#
# cac_key=
# cac_login=
# cac_servername=
# hostname=
main() {(
server=$(cac_getserver_by_servername "$cac_servername")
print_networking_configuraton "$server"
)}
print_networking_configuraton() {
server=$1
address=$(echo $server | jq -r .ip)
gateway=$(echo $server | jq -r .gateway)
nameserver=8.8.8.8
netmask=$(echo $server | jq -r .netmask)
prefix=$(net_netmask_to_prefix $netmask)
# TODO generate all config and put it into a temp dir, then rsync that
#
# upload configuration (to /root)
#
printf '{...}:\n'
printf '{\n'
printf ' networking.hostName = "%s";\n' $hostname
printf ' networking.interfaces.enp2s1.ip4 = [\n'
printf ' {\n'
printf ' address = "%s";\n' $address
printf ' prefixLength = %d;\n' $prefix
printf ' }\n'
printf ' ];\n'
printf ' networking.defaultGateway = "%s";\n' $gateway
printf ' networking.nameservers = [\n'
printf ' "%s"\n' $nameserver
printf ' ];\n'
printf '}\n'
}
main "$@"