mirror of
https://github.com/Smaug123/PulumiConfig
synced 2025-10-05 16:48:39 +00:00
43 lines
1.4 KiB
Forth
43 lines
1.4 KiB
Forth
namespace PulumiWebServer
|
|
|
|
open Pulumi
|
|
open System.IO
|
|
open Pulumi.DigitalOcean
|
|
open Pulumi.DigitalOcean.Outputs
|
|
|
|
[<RequireQualifiedAccess>]
|
|
module DigitalOcean =
|
|
let saveSshKey (PublicKey publicKey) : SshKey =
|
|
let args = SshKeyArgs ()
|
|
args.PublicKey <- File.ReadAllText publicKey.FullName |> Input.lift
|
|
SshKey ("default", args)
|
|
|
|
let makeNixosServer (name : string) (region : Region) (sshKeys : Input<SshFingerprint>[]) : Output<Droplet> =
|
|
output {
|
|
let args =
|
|
DropletArgs (Name = Input.lift name, Size = InputUnion.liftRight DropletSlug.DropletS1VCPU2GB)
|
|
|
|
args.Tags.Add (Input.lift "nixos")
|
|
args.Image <- "ubuntu-22-04-x64" |> Input.lift
|
|
args.Monitoring <- Input.lift false
|
|
args.Backups <- Input.lift false
|
|
args.Ipv6 <- true
|
|
args.Region <- InputUnion.liftRight region
|
|
args.DropletAgent <- Input.lift false
|
|
args.GracefulShutdown <- Input.lift false
|
|
|
|
args.SshKeys.Add (sshKeys |> Array.map (Input.map (fun (SshFingerprint s) -> s)))
|
|
|
|
return Droplet (name, args)
|
|
}
|
|
|
|
let storedSshKeys (dep : 'a Output) : Output<GetSshKeysSshKeyResult list> =
|
|
let args = GetSshKeysInvokeArgs ()
|
|
|
|
output {
|
|
let! _ = dep
|
|
let! keys = GetSshKeys.Invoke args
|
|
|
|
return keys.SshKeys |> Seq.toList |> List.sortBy (fun s -> s.Fingerprint)
|
|
}
|