blob: 6bb4752a954c7101f948a396e50110385fc32270 (
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
58
59
60
61
62
63
64
65
66
67
68
69
70
|
locals {
personal_devices = [
"caroline",
"glados",
"glados-windows",
"iphone-14"
]
server_devices = [
"atlas"
]
devices = concat(local.personal_devices, local.server_devices)
}
data "tailscale_device" "devices" {
for_each = toset(local.devices)
name = "${each.key}.tailc59d6.ts.net"
wait_for = "60s"
}
resource "tailscale_device_tags" "personal" {
for_each = toset(local.personal_devices)
device_id = data.tailscale_device.devices[each.key].id
tags = ["tag:personal"]
}
resource "tailscale_device_tags" "server" {
for_each = toset(local.server_devices)
device_id = data.tailscale_device.devices[each.key].id
tags = ["tag:server"]
}
resource "tailscale_dns_preferences" "preferences" {
magic_dns = true
}
resource "tailscale_acl" "acl" {
acl = jsonencode({
acls = [
{
action = "accept"
dst = ["*:*"]
src = ["tag:personal"]
},
{
action = "accept"
dst = ["tag:server:*"]
src = ["tag:server"]
}
]
ssh = [
{
action = "accept"
dst = ["tag:server", "tag:personal"]
src = ["tag:personal"]
users = ["autogroup:nonroot", "root"]
}
]
tagOwners = {
"tag:personal" = ["getchoo@github"]
"tag:server" = ["getchoo@github"]
}
})
}
|