digitalocean.go
1 package providers 2 3 import ( 4 "github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean" 5 "github.com/pulumi/pulumi-std/sdk/go/std" 6 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 7 ) 8 9 func DigitalOcean(ctx *pulumi.Context, enableDroplet bool) (*digitalocean.Droplet, error) { 10 if !enableDroplet { 11 return nil, nil 12 } 13 14 invokeFile, err := std.File(ctx, &std.FileArgs{ 15 Input: "../../.ssh/id_ed25519.pub", 16 }, nil) 17 18 if err != nil { 19 return nil, err 20 } 21 22 sshKey, err := digitalocean.NewSshKey(ctx, "framework-desktop", &digitalocean.SshKeyArgs{ 23 Name: pulumi.String("framework-desktop"), 24 PublicKey: pulumi.String(invokeFile.Result), 25 }) 26 27 if err != nil { 28 return nil, err 29 } 30 31 vm, err := digitalocean.NewDroplet(ctx, "ubuntu-s-1vcpu-512mb-10gb-tor1-01", &digitalocean.DropletArgs{ 32 Name: pulumi.String("ubuntu-s-1vcpu-512mb-10gb-tor1-01"), 33 Image: pulumi.String("ubuntu-24-04-x64"), 34 Region: pulumi.String(digitalocean.RegionTOR1), 35 Size: pulumi.String(digitalocean.DropletSlugDropletS1VCPU512MB10GB), 36 Backups: pulumi.Bool(false), 37 38 SshKeys: pulumi.StringArray{ 39 sshKey.Fingerprint, 40 }, 41 42 Tags: pulumi.StringArray{ 43 pulumi.String("dev"), 44 }, 45 }) 46 47 if err != nil { 48 return nil, err 49 } 50 51 _, err = digitalocean.NewProject(ctx, "openws", &digitalocean.ProjectArgs{ 52 Name: pulumi.String("openws"), 53 Environment: pulumi.String("Development"), 54 Purpose: pulumi.String("Web Application"), 55 Description: pulumi.String("A project to represent development resources."), 56 57 Resources: pulumi.StringArray{ 58 vm.DropletUrn, 59 }, 60 }) 61 62 if err != nil { 63 return nil, err 64 } 65 66 return vm, nil 67 }