nixfiles/main.go
2023-01-30 10:04:27 -08:00

68 lines
1.3 KiB
Go
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi-tailscale/sdk/go/tailscale"
"gopkg.in/yaml.v3"
"os"
"kittywitch/iac"
"github.com/pulumi/pulumi-command/sdk/go/command/local"
)
func main() {
katConfig := iac.KatConfig{}
configFile, err := os.ReadFile("config.yaml")
if err != nil {
return
}
if err := yaml.Unmarshal(configFile, &katConfig); err != nil {
return
}
pulumi.Run(func(ctx *pulumi.Context) error {
tailnet, err := tailscale.GetDevices(ctx, &tailscale.GetDevicesArgs{}, nil)
if err != nil {
return err
}
// zones, dnssec, records
zones, _, records, err := iac.HandleDNS(ctx, katConfig)
if err != nil {
return err
}
records, err = iac.HandleTSRecords(ctx, tailnet, zones, records)
if err != nil {
return err
}
ca_key, ca_cert, err := iac.GenerateTLSCA(ctx)
if err != nil {
return err
}
keys, _, certs, err := iac.HandleTSHostCerts(ctx, tailnet, ca_key, ca_cert)
if err != nil {
return err
}
// files for those certs
files := make(map[string]*local.Command)
files, err = iac.PKITLSFiles(ctx, files, keys, certs)
if err != nil {
return err
}
return err
})
}