summaryrefslogtreecommitdiffstats
path: root/networking-configuration
blob: 0e105b45f147f07f724caeb5c5957f953543300e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#! /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 "$@"